Kotyarko_O 1,906 #168035 Posted April 11, 2014 @AtotIK, ещё.. как я увидел, инсталлер автоматически создаёт бэкап папки 0.9.0, очищает её и записывает свои файлы. Значит, при запущенном клиенте, на каком-то этапе установки, будет выбивать ошибку (будет приходиться вернуться в игру, выходить и продолжать). Так вот, сделать предупреждение о том, что клиент запущен и нужно сначала выйти из него. (Встречал таких юзеров, которые поверх активного клиента ставят сборки). По-этому, думаю, будет полезно (мне самому иногда помогает, когда открыто стопицот вкладок и просто забываю выйти). 1 Quote Share this post Link to post Short link Share on other sites
evil_rrock 227 #168037 Posted April 11, 2014 @AtotIK, ещё.. как я увидел, инсталлер автоматически создаёт бэкап папки 0.9.0, очищает её и записывает свои файлы. Значит, при запущенном клиенте, на каком-то этапе установки, будет выбивать ошибку (будет приходиться вернуться в игру, выходить и продолжать). Так вот, сделать предупреждение о том, что клиент запущен и нужно сначала выйти из него. (Встречал таких юзеров, которые поверх активного клиента ставят сборки). По-этому, думаю, будет полезно (мне самому иногда помогает, когда открыто стопицот вкладок и просто забываю выйти). опередил с мыслеизложением подобным =) Quote Share this post Link to post Short link Share on other sites
Иннот 27 #168078 Posted April 11, 2014 (edited) Самый простой скрипт [Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program DefaultGroupName=My Program [Files] Source: ISTask.dll; DestDir: {app}; Flags: dontcopy [Code] function KillTask(ExeFileName: string): Integer; external 'KillTask@files:ISTask.dll stdcall delayload'; function RunTask(FileName: string; bFullpath: Boolean): Boolean; external 'RunTask@files:ISTask.dll stdcall delayload'; //**************************************************// function InitializeSetup(): Boolean; begin If RunTask('WorldOfTanks.exe', false) then begin if MsgBox('Игра WorldOfTanks запущена. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then begin KillTask('WorldOfTanks.exe'); Result:= True; end else Exit; end; Result:=True; end; когда то пользовался им, но потом сделал отдельную страницу с сообщением о том, что запущен процесс и нужно его выключить, тогда можно продолжить Вопрос от меня: Как сделать, чтобы при наведении на компонент выводилось описание Edited April 11, 2014 by Иннот Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #168089 Posted April 11, 2014 Иннот, на предыдущей странице я пример кидал с подключением dll. Это то, что тебе надо. Quote Share this post Link to post Short link Share on other sites
mpmp 2 #168108 Posted April 11, 2014 Вопрос от меня: Как сделать, чтобы один файл имеет ярлык на рабочий стол и никогда не удалятся после uninstall модам ? Заранее спасибо. Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #168109 Posted April 11, 2014 (edited) Вопрос от меня: Как сделать, чтобы один файл имеет ярлык на рабочий стол и никогда не удалятся после uninstall модам ? Заранее спасибо. [Icons] Name: "{commondesktop}\Название_ярлыка"; Filename: "C:\Windows\программа.exe"; Flags: uninsneveruninstall; {commondesktop} - на рабочий стол. Flags: uninsneveruninstall; - не удалять при деинсталляции. Edited April 11, 2014 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
mpmp 2 #168437 Posted April 13, 2014 (edited) [Icons] Name: "{commondesktop}\Название_ярлыка"; Filename: "C:\Windows\программа.exe"; Flags: uninsneveruninstall; {commondesktop} - на рабочий стол. Flags: uninsneveruninstall; - не удалять при деинсталляции. С этим не разобрался: Filename: "C:\Windows\программа.exe"; Я не знаю, заранее, где пользователь будет установить игру. Конечно, файл будет находиться в папке res_mods но я не знаю где будет WoT. Вот то, что я сделал: [Files] // Flags: uninsneveruninstall; Source: "MODS\umeniq\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs uninsneveruninstall; Components: KMP\UM; и файл уже не удаляеться при деинсталляции, но я не знаю, как сделать ему ярлык на рабочий стол или ярлык в пуск где находится uninstall. [Icons] //добавляет ярлык в пуск Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" Моя идея заключается в том, чтобы имеет информационный файл (Info mod) , который устанавливается в res_mods и делает ярлык на рабочий стол или ярлык в пуск где находится uninstall Edited April 13, 2014 by mpmp Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #168438 Posted April 13, 2014 (edited) @mpmp, [Icons] Name: "{commondesktop}\Название_ярлыка"; Filename: "{app}\название_программы.exe"; Flags: uninsneveruninstall; Прописывается в секции [icons], а не [Files]. Edited April 13, 2014 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
mpmp 2 #168453 Posted April 13, 2014 (edited) @mpmp, [Icons] Name: "{commondesktop}\Название_ярлыка"; Filename: "{app}\название_программы.exe"; Flags: uninsneveruninstall; Прописывается в секции [icons], а не [Files]. Спасибо работает. Вот что получилось: [Icons] //=== ярлык на рабочий стол Name: "{commondesktop}\umeniq_WoT"; Filename: "{app}\res_mods\umeniq_WoT.pdf"; Flags: uninsneveruninstall; //=== ярлык в пуск где находится uninstall Name: "{group}\umeniq_WoT"; Filename: "{app}\res_mods\umeniq_WoT.pdf"; Flags: uninsneveruninstall; Edited April 14, 2014 by mpmp Quote Share this post Link to post Short link Share on other sites
mpmp 2 #168666 Posted April 14, 2014 Вопрос: Как изменить имя деинсталлятора ? Идея заключается в том, что хотел бы носить имя инсталлятора, а не ето «unins000» Quote Share this post Link to post Short link Share on other sites
AtotIK 580 #168667 Posted April 14, 2014 mpmp, можно только изменить папку расположения деинсталлятора: [Setup] UninstallFilesDir={app}\Install_Modpack Quote Share this post Link to post Short link Share on other sites
mpmp 2 #168673 Posted April 14, 2014 mpmp, можно только изменить папку расположения деинсталлятора: [Setup] UninstallFilesDir={app}\Install_Modpack это не хорошо Quote Share this post Link to post Short link Share on other sites
Justa_Causa 1 #169621 Posted April 16, 2014 Например у меня есть в установке xvm и миникарта ( в моей папке модов лежат по разным папкам) которые выбираются отдельными пунктами,но чтоб работала миникарта мне нужно установить xvm,как можно сделать чтоб не добавлять xvm в папку с миникартой,а чтоб при установке миникарты автоматом добавились файлы с папки xvm Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #169625 Posted April 16, 2014 @Justa_Causa, лучше сделать эту миникарту подпунктом к компоненту XVM. Как на скрине, идёт сначала пункт с XVM, а уже дочерними к нему (подпунктами) дополнительные настройки для XVM. 'скрин' 1 Quote Share this post Link to post Short link Share on other sites
Иннот 27 #170679 Posted April 17, 2014 Вопрос такой: как сделать скачивание архив с сервера? уже несколько дней бьюсь ни как не получается найти нужного Quote Share this post Link to post Short link Share on other sites
Azbuka 278 #170681 Posted April 17, 2014 @Иннот, Та-да Quote Share this post Link to post Short link Share on other sites
[email protected] 0 #172336 Posted April 18, 2014 Подскажите как по умолчанию заставить программу при установке удалить папку res_mods Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #172349 Posted April 18, 2014 (edited) Подскажите как по умолчанию заставить программу при установке удалить папку res_mods По-умолчанию, в смысле, чтобы удалялась папка при любом раскладе? Тогда: [InstallDelete] Type: filesandordirs; Name: "{app}\res_mods"; Инсталлятор не будет спрашивать пользователя, делать это или нет. Он будет удалять эту папку всегда перед началом распаковки данных из самого инсталлятора в папку с игрой (после нажатия кнопки "Установить"). Edited April 18, 2014 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites
alexxx300 0 #172586 Posted April 19, 2014 Проверь куда они устанавливаются... P.S. Вот еще скрипт добавляющий картинку к компонентам... При наведении появляется картинка: Без имени-2.png [Setup] AppName=My Program AppVerName=My Program v.1.2 DefaultDirName={pf}\My Program Compression=none AppId=TheBestAppId DisableWelcomePage=yes DisableFinishedPage=yes DisableDirPage=yes DisableReadyPage=yes [Components] Name: hl2; Description: Half-Life 2; Flags: disablenouninstallwarning Name: hl2\ru; Description: Russian; Flags: disablenouninstallwarning exclusive Name: hl2\en; Description: English; Flags: disablenouninstallwarning exclusive Name: ep1; Description: Half-Life 2 Episode One; Flags: disablenouninstallwarning Name: ep1\ru; Description: Russian; Flags: disablenouninstallwarning exclusive Name: ep1\en; Description: English; Flags: disablenouninstallwarning exclusive Name: ep2; Description: Half-Life 2 Episode Two; Flags: disablenouninstallwarning Name: ep2\ru; Description: Russian; Flags: disablenouninstallwarning exclusive Name: ep2\en; Description: English; Flags: disablenouninstallwarning exclusive Name: portal; Description: Portal; Flags: disablenouninstallwarning Name: portal\ru; Description: Russian; Flags: disablenouninstallwarning exclusive Name: portal\en; Description: English; Flags: disablenouninstallwarning exclusive [Files] Source: Wasteland_Scanner_con.bmp; Flags: dontcopy nocompression Source: Strider_early2.bmp; Flags: dontcopy nocompression Source: Cremator_poster.bmp; Flags: dontcopy nocompression Source: Portal.bmp; Flags: dontcopy nocompression [code] #ifdef UNICODE #define A "W" #else #define A "A" #endif const UNDEF_INDEX = -777; ALPHA_BLEND_LEVEL = 128; // max=Byte=255 WS_EX_LAYERED = $80000; WS_EX_TRANSPARENT = $20; LWA_COLORKEY = 1; LWA_ALPHA = 2; GWL_EXSTYLE = (-20); var InfoPic: TBitmapImage; LastIndex: Integer; TempPath: String; PicForm: TForm; type COLORREF = DWORD; function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] stdcall'; function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external '[email protected] stdcall'; 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 SetFocus(hWnd: HWND): HWND; external '[email protected] stdcall'; procedure ShowPicHint(const PicFilePath: String); var pt: TPoint; begin if not GetCursorPos(pt) then Exit; InfoPic.Bitmap.LoadFromFile(PicFilePath); try with PicForm do begin SetBounds(ScaleX(pt.x + 16), ScaleY(pt.y + 7), InfoPic.Width, InfoPic.Height); Show; end; finally SetFocus(WizardForm.Handle); end; end; procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea); var UndefPic: String; begin if Index = -1 then Exit; if Index = LastIndex then Exit; try case TNewCheckListBox(Sender).ItemCaption[Index] of 'Half-Life 2': UndefPic := 'Wasteland_Scanner_con.bmp'; 'Half-Life 2 Episode One': UndefPic := 'Strider_early2.bmp'; 'Half-Life 2 Episode Two': UndefPic := 'Cremator_poster.bmp'; 'Portal': UndefPic := 'Portal.bmp'; else begin LastIndex := UNDEF_INDEX; PicForm.Hide; Exit; end; end; if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic); ShowPicHint(TempPath + UndefPic); finally LastIndex := Index; end; end; procedure CompOnMouseLeave(Sender: TObject); begin PicForm.Hide; LastIndex := -1; end; procedure InitInfo(); begin WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove; WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave; TempPath := AddBackslash(ExpandConstant('{tmp}')); LastIndex := UNDEF_INDEX; PicForm := TForm.Create(WizardForm) with PicForm do begin BorderStyle := bsNone; FormStyle := fsStayOnTop; InfoPic := TBitmapImage.Create(PicForm) with InfoPic do begin Parent := PicForm; AutoSize := True; end; end; SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED); SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA); end; procedure InitializeWizard(); begin InitInfo(); end; Как правильно пристроить его в скрипт Componets,чтобы показывало картинки при наведении,нужен весь скрипт или только часть?Или можно этот скрипт прилепить целиком отдельно не спаривая со скриптом Componets? Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #172597 Posted April 19, 2014 (edited) Как правильно пристроить его в скрипт Componets Что имеется ввиду, под скриптом Components? Скрипт с вынесенными отдельно от основного скрипта блоками Types, Components, Files? Edited April 19, 2014 by Kotyarko_O Quote Share this post Link to post Short link Share on other sites