Kotyarko_O Posted April 11, 2014 Share Posted April 11, 2014 @AtotIK, ещё.. как я увидел, инсталлер автоматически создаёт бэкап папки 0.9.0, очищает её и записывает свои файлы. Значит, при запущенном клиенте, на каком-то этапе установки, будет выбивать ошибку (будет приходиться вернуться в игру, выходить и продолжать). Так вот, сделать предупреждение о том, что клиент запущен и нужно сначала выйти из него. (Встречал таких юзеров, которые поверх активного клиента ставят сборки). По-этому, думаю, будет полезно (мне самому иногда помогает, когда открыто стопицот вкладок и просто забываю выйти). 1 @ Quote Link to comment Short link Share on other sites More sharing options...
evil_rrock Posted April 11, 2014 Share Posted April 11, 2014 @AtotIK, ещё.. как я увидел, инсталлер автоматически создаёт бэкап папки 0.9.0, очищает её и записывает свои файлы. Значит, при запущенном клиенте, на каком-то этапе установки, будет выбивать ошибку (будет приходиться вернуться в игру, выходить и продолжать). Так вот, сделать предупреждение о том, что клиент запущен и нужно сначала выйти из него. (Встречал таких юзеров, которые поверх активного клиента ставят сборки). По-этому, думаю, будет полезно (мне самому иногда помогает, когда открыто стопицот вкладок и просто забываю выйти). опередил с мыслеизложением подобным =) @ Quote Link to comment Short link Share on other sites More sharing options...
Иннот Posted April 11, 2014 Share 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 Link to comment Short link Share on other sites More sharing options...
AtotIK Posted April 11, 2014 Share Posted April 11, 2014 Иннот, на предыдущей странице я пример кидал с подключением dll. Это то, что тебе надо. @ Quote Link to comment Short link Share on other sites More sharing options...
mpmp Posted April 11, 2014 Share Posted April 11, 2014 Вопрос от меня: Как сделать, чтобы один файл имеет ярлык на рабочий стол и никогда не удалятся после uninstall модам ? Заранее спасибо. @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted April 11, 2014 Share 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 Link to comment Short link Share on other sites More sharing options...
mpmp Posted April 13, 2014 Share 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 Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted April 13, 2014 Share Posted April 13, 2014 (edited) @mpmp, [Icons] Name: "{commondesktop}\Название_ярлыка"; Filename: "{app}\название_программы.exe"; Flags: uninsneveruninstall; Прописывается в секции [icons], а не [Files]. Edited April 13, 2014 by Kotyarko_O @ Quote Link to comment Short link Share on other sites More sharing options...
mpmp Posted April 13, 2014 Share 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 Link to comment Short link Share on other sites More sharing options...
mpmp Posted April 14, 2014 Share Posted April 14, 2014 Вопрос: Как изменить имя деинсталлятора ? Идея заключается в том, что хотел бы носить имя инсталлятора, а не ето «unins000» @ Quote Link to comment Short link Share on other sites More sharing options...
AtotIK Posted April 14, 2014 Share Posted April 14, 2014 mpmp, можно только изменить папку расположения деинсталлятора: [Setup] UninstallFilesDir={app}\Install_Modpack @ Quote Link to comment Short link Share on other sites More sharing options...
mpmp Posted April 14, 2014 Share Posted April 14, 2014 mpmp, можно только изменить папку расположения деинсталлятора: [Setup] UninstallFilesDir={app}\Install_Modpack это не хорошо @ Quote Link to comment Short link Share on other sites More sharing options...
Justa_Causa Posted April 16, 2014 Share Posted April 16, 2014 Например у меня есть в установке xvm и миникарта ( в моей папке модов лежат по разным папкам) которые выбираются отдельными пунктами,но чтоб работала миникарта мне нужно установить xvm,как можно сделать чтоб не добавлять xvm в папку с миникартой,а чтоб при установке миникарты автоматом добавились файлы с папки xvm @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted April 16, 2014 Share Posted April 16, 2014 @Justa_Causa, лучше сделать эту миникарту подпунктом к компоненту XVM. Как на скрине, идёт сначала пункт с XVM, а уже дочерними к нему (подпунктами) дополнительные настройки для XVM. 'скрин' 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Иннот Posted April 17, 2014 Share Posted April 17, 2014 Вопрос такой: как сделать скачивание архив с сервера? уже несколько дней бьюсь ни как не получается найти нужного @ Quote Link to comment Short link Share on other sites More sharing options...
Azbuka Posted April 17, 2014 Share Posted April 17, 2014 @Иннот, Та-да @ Quote Link to comment Short link Share on other sites More sharing options...
[email protected] Posted April 18, 2014 Share Posted April 18, 2014 Подскажите как по умолчанию заставить программу при установке удалить папку res_mods @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted April 18, 2014 Share Posted April 18, 2014 (edited) Подскажите как по умолчанию заставить программу при установке удалить папку res_mods По-умолчанию, в смысле, чтобы удалялась папка при любом раскладе? Тогда: [InstallDelete] Type: filesandordirs; Name: "{app}\res_mods"; Инсталлятор не будет спрашивать пользователя, делать это или нет. Он будет удалять эту папку всегда перед началом распаковки данных из самого инсталлятора в папку с игрой (после нажатия кнопки "Установить"). Edited April 18, 2014 by Kotyarko_O @ Quote Link to comment Short link Share on other sites More sharing options...
alexxx300 Posted April 19, 2014 Share 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 Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted April 19, 2014 Share Posted April 19, 2014 (edited) Как правильно пристроить его в скрипт Componets Что имеется ввиду, под скриптом Components? Скрипт с вынесенными отдельно от основного скрипта блоками Types, Components, Files? Edited April 19, 2014 by Kotyarko_O @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.