Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Приветствую!
1. Как в инсталлятор встроить рекламу от Google Adsense? И разрешено ли это гуглом? Если нет, так как встроить свои баннеры?
2. Как можно подсчитать количество установок? Например, можно было бы отправлять по окончании успешной установки get/post запрос на свой сайт. И желательно с ip-адресом, чтобы можно было считать уникальное число. Как можно это реализовать? Интересует отправка, так как на php я уже сам приму. И что скажут по этому поводу антивирусы?
habib2302
09-07-2013, 09:48
1. Как в инсталлятор встроить рекламу от Google Adsense? »
тебе заняться нечем???
Gnom_aka_Lexander
09-07-2013, 18:14
тебе заняться нечем??? »
Оффтоп, не находишь? Задача в наше время довольно частая, сам делал человеку инсталл по партнерке с яндексом, за который он так и не заплатил. но это так, раз уж пошел оффтоп, если удалят - не обижусь. Как в инсталлятор встроить рекламу от Google Adsense? »
Есть море способов. Нужно знать, как оно должно выглядеть? Возможности инно - от открытия браузера по нажатию на активный элемент, до браузера встроенного прямо в инсталл. Как можно подсчитать количество установок? »
Было решение ранее. При наличии желания и отсутствии лени - легко находится. Если нужно частное решение - можно обратиться ко мне в личку, но результат потом все равно выложу тут - ибо задача выглядит интересной.
El Sanchez
09-07-2013, 18:26
1. Как в инсталлятор встроить рекламу от Google Adsense? И разрешено ли это гуглом? »
Bioto, не разрешено (https://support.google.com/adsense/answer/48182)
Если нет, так как встроить свои баннеры? »
Bioto, если статический, то обычная картинка (может и кликабельная). Если динамический, то gif, какой-нибудь.
И желательно с ip-адресом, чтобы можно было считать уникальное число »
Bioto, а если несколько пользователей одной сети с общим IP установят, то считать за одну установку? А если удалил и поставил заново?
И что скажут по этому поводу антивирусы? »
Bioto, параноики обнаружат подозрительную сетевую активность.
Gnom_aka_Lexander
09-07-2013, 18:34
параноики »
В данный момент любой антивирус, который действительно защищает заблочит это дело.
а если несколько пользователей одной сети с общим IP установят, то считать за одну установку? »
куки, мак, еткА если удалил и поставил заново? »
для того и нужно вроде. Человеку нужен именно подсчет количества установок. Если подружить решение с файрволом и антивирем, то решение в принципе сложностей не вызовет. на php я уже сам приму »
в этом случае совсем просто - создаем свой протокол на нем и общаемся в режиме клиент-сервер.
Всем привет :hi:
1. Как в инсталлятор встроить рекламу от Google Adsense? »
Встроить не проблема... главное авторские права соблюсти.
как встроить свои баннеры? »
вариантов масса, весь вопрос в том, что вы хотите увидеть...
2. Как можно подсчитать количество установок? »
Вопрос более риторический... как сказал El Sanchez:
а если несколько пользователей одной сети с общим IP установят, то считать за одну установку? А если удалил и поставил заново? »
Здесь только нужно привязываться к железу и в конечном итоге вы увидите количество оригинальных установок.
И что скажут по этому поводу антивирусы? »
Антивирусы пишут люди, впрочем как и вирусы... поверьте get/post это последнее о чём стоит беспокоится в решении вашего вопроса.
insombia
09-07-2013, 23:42
del
Bioto, а если несколько пользователей одной сети с общим IP установят, то считать за одну установку? А если удалил и поставил заново? »
Я думаю это не проблема программы, главное сделать факт установки и записывать все на сайт в базу MySQL, например. Просто лог установок, а как уже считать количество уникальных посетить это другое дело. Ну cookie еще можно поставить.
insombia
12-07-2013, 23:44
http://i47.fastpic.ru/big/2013/0712/8c/27a1772da14aa4394f9c35c10fa57e8c.jpg как убрать белую обводку вокруг кнопок?
El Sanchez
14-07-2013, 11:42
как убрать белую обводку вокруг кнопок? »
insombia, в данном случае родитель кнопки имеет сплошной цвет, поэтому верни для кнопки кисть нужного цвета, например, WizardForm.Brush.Color := clRed. В случае, если на родителе картинка, нужно создать на ее основе узорчастую кисть, сабклассить кнопку или ее родителя и в сообщении CN_CTLCOLORBTN (если сабклассить кнопку) или WM_CTLCOLORBTN (если сабклассить родителя) вернуть кисть с необходимым смещением. Пример:
[Setup]
AppName=test
AppVerName=test
CreateAppDir=false
DefaultDirName={tmp}
Uninstallable=false
BitmapResource=bgnd:{app}\robots.bmp
[Languages]
Name: ru; MessagesFile: compiler:Languages\russian.isl
[Code]
#define A = (Defined UNICODE) ? "W" : "A"
const
CN_CTLCOLORBTN = $BD35;
GA_ROOT = 2;
GWL_WNDPROC = (-4);
GWL_USERDATA = (-21);
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function CreatePatternBrush(hbmp: HBITMAP): Longint; external 'CreatePatternBrush@gdi32.dll stdcall';
function CallWindowProc(lpPrevWndFunc: Longint; hWnd: HWND; Msg: UINT; wParam: Longint; lParam: Longint): Longint; external 'CallWindowProc{#A}@user32.dll stdcall';
function MapWindowPoints(hWndFrom, hWndTo: HWND; var lpPoints: TPoint; cPoints: UINT): Integer; external 'MapWindowPoints@user32.dll stdcall';
function SetBrushOrgEx(hdc: Longint; nXOrg, nYOrg: Integer; var lppt: TPoint): BOOL; external 'SetBrushOrgEx@gdi32.dll stdcall';
function GetAncestor(hwnd: HWND; gaFlags: UINT): HWND; external 'GetAncestor@user32.dll stdcall';
var
g_Bgnd: TBitmapImage;
g_hBrush: Longint;
/////////////////////////////////////////////////////////////////////////////
function ButtonProc(hWnd: HWND; Msg: UINT; wParam, lParam: Longint): Longint;
var
pt: TPoint;
begin
case Msg of
CN_CTLCOLORBTN: begin
MapWindowPoints(hWnd, GetAncestor(hWnd, GA_ROOT), pt, 1);
SetBrushOrgEx(wParam, -pt.x, -pt.y, pt);
Result := g_hBrush;
end;
else
Result := CallWindowProc(GetWindowLong(hWnd, GWL_USERDATA), hWnd, Msg, wParam, lParam);
end;
end;
/////////////////////////////
procedure InitializeWizard();
begin
with WizardForm do
begin
WizardBitmapImage.Hide;
Bevel.Hide;
OuterNotebook.Hide;
end;
// background
g_Bgnd := TBitmapImage.Create(WizardForm);
with g_Bgnd do
begin
Parent := WizardForm;
Align := alClient;
Bitmap.LoadFromResourceName(HInstance, '_IS_BGND');
g_hBrush := CreatePatternBrush(Bitmap.Handle);
end;
// subclass button
with WizardForm.NextButton do SetWindowLong(Handle, GWL_USERDATA, SetWindowLong(Handle, GWL_WNDPROC, CallbackAddr('ButtonProc')));
end;
procedure DeinitializeSetup();
begin
with WizardForm.NextButton do if GetWindowLong(Handle, GWL_USERDATA) > 0 then SetWindowLong(Handle, GWL_WNDPROC, GetWindowLong(Handle, GWL_USERDATA));
end;
Gnom_aka_Lexander
14-07-2013, 11:45
если сабклассить кнопку »
Позволю себе уточнить. насколько я помню (ибо как-то бился в истерике над этим вопросом) событие WM_CTLCOLOR обрабатывается исключительно родителем.
если еще точнее - главным окном приложения.
А вообще просто переход на юникодную версию инно легко решает этот вопрос без дополнительных усилий. правда тогда наверняка часть скрипта придется переписывать. если не весь.
Ах, да. Еще один гемор в этом направлении. WM_CTLCOLOR довольно криво работает с XP манифестом.
El Sanchez
14-07-2013, 14:02
Позволю себе уточнить. насколько я помню (ибо как-то бился в истерике над этим вопросом) событие WM_CTLCOLOR обрабатывается исключительно родителем.
если еще точнее - главным окном приложения. »
Приходит родителю. Родителем кнопки NextButton является WizardForm (сообщение приходит форме), родителем DirBrowseButton - SelectDirPage (сообщение приходит нотебуку)
А вообще просто переход на юникодную версию инно легко решает этот вопрос без дополнительных усилий. правда тогда наверняка часть скрипта придется переписывать. если не весь. »
Например?
Еще один гемор в этом направлении. WM_CTLCOLOR довольно криво работает с XP манифестом. »
Не заметил, хотя больше использую дельфовые CN_CTLCOLOR*, приходящие напрямую контролу.
Gnom_aka_Lexander
14-07-2013, 14:14
Например? »
Ссылка (http://innoultra.ru/?dl_id=6) Никакой рекламы, только для примера. тем более есть в шапке соседней темы.
El Sanchez
14-07-2013, 14:55
Gnom_aka_Lexander, ясно, в юникодной версии фон дочернего окна закрашивается кистью родительского, для анси реализовывать самому.
Gnom_aka_Lexander
14-07-2013, 14:59
El Sanchez, на правах частичного оффтопа - лучше ведь, использовать возможности инно, в плане оптимальности готового приложения, чем описывать в инно эту реализацию? тем более не нужно предпринимать вообще никаких действий, для обеспечения нужного эффекта.
insombia
14-07-2013, 17:14
все было из-за темы
p.s. спасибо Gnom_aka_Lexander и El Sanchez за помощь,буду знать
Немного переделал свой старый код авторана. По хорошему его бы надо целиком переделать, но, в принципе, заложенные функции выполняет правильно. Может кому сгодится.
Скачать архив (http://rghost.ru/47419209)
P.S.
Код писался преимущественно для одной игры, но в целом вполне универсален.
Спасибо Johny777 за примеры и направления по верному пути))).
sergey3695
14-07-2013, 21:16
delete/
Михаил_Печников@fb
15-07-2013, 17:23
Всем, доброго!
Подскажите как бы в сетапе проверить, установлено в системе ms officсe
нужной версии.
И если нет то скачать с сайта и установить runtime версию access.
з.ы. прошу отнестись с пониманием. Поиск не рулит, курить сначала тему не реально.
El Sanchez
15-07-2013, 21:10
проверить, установлено в системе ms officсe »
Михаил_Печников@fb, может нужно определить наличие в системе установленного Access, а не Office? Ибо наличие Office не говорит о обязательном наличии Access.
нужной версии »
Михаил_Печников@fb, какой? А то рантаймов несколько (http://search.microsoft.com/ru-ru/DownloadResults.aspx?q=%d0%a1%d1%80%d0%b5%d0%b4%d0%b0+%d0%b2%d1%8b%d0%bf%d0%be%d0%bb%d0%bd%d0%b5%d0% bd%d0%b8%d1%8f+Microsoft+Access) и разной разрядности.
скачать с сайта »
Михаил_Печников@fb, может лучше рядом с установщиком рантайм держать? Качать много.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC