liga1006 Posted March 21, 2019 Share Posted March 21, 2019 Подскажите, как эти функции подключить, хотя бы, как папки mods и res_mods очищать перед установкой @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted March 21, 2019 Share Posted March 21, 2019 (edited) @liga1006 #define ModDirVersion "1.4.1.0" [Tasks] Name: "taskDeleteCache"; Description: "Очистить кеш/логи" Name: "taskDeleteMods"; Description: "Удалить установленные моды" [InstallDelete] Type: files; Name: "{app}\*.log"; Tasks: taskDeleteCache; Type: files; Name: "{app}\*.bak"; Tasks: taskDeleteCache; Type: files; Name: "{app}\*.cache"; Tasks: taskDeleteCache; Type: files; Name: "{app}\*.killme"; Tasks: taskDeleteCache; Type: files; Name: "{app}\*.grd"; Tasks: taskDeleteCache; Type: files; Name: "{app}\client_service.xml"; Tasks: taskDeleteCache; Type: files; Name: "{app}\hd_service.xml"; Tasks: taskDeleteCache; Type: files; Name: "{app}\sd_service.xml"; Tasks: taskDeleteCache; Type: files; Name: "{app}\WorldOfTanks_error_report_*.zip"; Tasks: taskDeleteCache; [Code] procedure DeleteMods(); begin if IsComponentSelected('taskDeleteMods') then begin DelTree(ExpandConstant('{app}\mods\*'), false, true, true); DelTree(ExpandConstant('{app}\res_mods\*'), false, true, true); CreateDir(ExpandConstant('{app}\mods\{#ModDirVersion}')); CreateDir(ExpandConstant('{app}\res_mods\{#ModDirVersion}')); end; end; procedure DeleteCache(); begin if IsComponentSelected('taskDeleteCache') then begin DelTree(ExpandConstant('{userappdata}\Wargaming.net\WorldOfTanks\account_caches'), true, true, true); DelTree(ExpandConstant('{userappdata}\Wargaming.net\WorldOfTanks\battle_results'), true, true, true); DelTree(ExpandConstant('{userappdata}\Wargaming.net\WorldOfTanks\clan_cache'), true, true, true); DelTree(ExpandConstant('{userappdata}\Wargaming.net\WorldOfTanks\custom_data'), true, true, true); DelTree(ExpandConstant('{userappdata}\Wargaming.net\WorldOfTanks\dossier_cache'), true, true, true); DelTree(ExpandConstant('{userappdata}\Wargaming.net\WorldOfTanks\messenger_cache'), true, true, true); DelTree(ExpandConstant('{userappdata}\Wargaming.net\WorldOfTanks\profile'), true, true, true); //DelTree(ExpandConstant('{userappdata}\Wargaming.net\WorldOfTanks\tutorial_cache'), true, true, true); DelTree(ExpandConstant('{userappdata}\Wargaming.net\WorldOfTanks\veh_cmp_cache'), true, true, true); DelTree(ExpandConstant('{userappdata}\Wargaming.net\WorldOfTanks\web_cache'), true, true, true); DelTree(ExpandConstant('{app}\logs'), true, true, true); DelTree(ExpandConstant('{app}\Reports'), true, true, true); DelTree(ExpandConstant('{app}\Reports_XFW'), true, true, true); DelTree(ExpandConstant('{app}\Updates'), true, true, true); DelTree(ExpandConstant('{app}\UpdatesData'), true, true, true); end; end; procedure CurStepChanged(CurStep: TSetupStep); begin if CurStep=ssInstall then begin DeleteMods(); DeleteCache(); end; end; Самый простой бекап. Edited March 21, 2019 by night_dragon_on Обновление ... 1 @ Quote Link to comment Short link Share on other sites More sharing options...
liga1006 Posted March 21, 2019 Share Posted March 21, 2019 @night_dragon_on выкинуло ошибку, я в этом деле нуб, собираем рабочие моды 0.9.22.0.1 для китайского сервера, у них патч не 1.4.1.0, а 0.9.22.0.1, там подсадки живые и многие скалолазы переходят на китайский первый сервер скрипт_2.iss @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted March 21, 2019 Share Posted March 21, 2019 2 минуты назад, liga1006 сказал: выкинуло ошибку Конечно, сами задачи то нужно создать перед их выполнением [Tasks] Name: "taskDeleteCache"; Description: "Очистить кеш/логи" Name: "taskDeleteMods"; Description: "Удалить установленные моды" 1 @ Quote Link to comment Short link Share on other sites More sharing options...
liga1006 Posted March 21, 2019 Share Posted March 21, 2019 @night_dragon_on посмотрите пожалуйста весь файл, там опять ошибки вываливаются, я же говорю, что нуб и без вашей помощи не сделать, а мододелы не хотят сборки собирать для патча 0.9.22.0.1 вот и приходится как то самим кумекать скрипт_2.iss @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted March 21, 2019 Share Posted March 21, 2019 @liga1006 , скрипт_2.iss 1 @ Quote Link to comment Short link Share on other sites More sharing options...
liga1006 Posted March 21, 2019 Share Posted March 21, 2019 @night_dragon_on теперь на Components ругается Type: files; Name: "{app}\*.cache"; Components: taskDeleteCache; @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted March 21, 2019 Share Posted March 21, 2019 Components: На Tasks: Замени. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
liga1006 Posted March 21, 2019 Share Posted March 21, 2019 (edited) @night_dragon_on спасибо вам,теперь всё работает, но осталась ещё одна проблема Если до этого установил все моды, а в следующий раз я снимаю галочки и ставлю уже их меньше то вылетают вот такие окна, причём второе окно огромное и до кнопки ДАне добраться и приходится убивать процесс установки скрипт_2.iss Edited March 21, 2019 by liga1006 @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted March 21, 2019 Share Posted March 21, 2019 @liga1006 , смотри где у тебя вызывается соответствующий MsgBox и отключай его или меняй его отображение. @ Quote Link to comment Short link Share on other sites More sharing options...
AtotIK Posted March 22, 2019 Share Posted March 22, 2019 Флаг на компоненты нужно накинуть: Flags: disablenouninstallwarning; 1 @ Quote Link to comment Short link Share on other sites More sharing options...
UI3 Posted March 22, 2019 Share Posted March 22, 2019 (edited) Дорогие форумчане, а так же: @AtotIK, @night_dragon_on Уже с неделю делаю модпак, и вот возникла проблема. Хочу прикрутить (без ботвы) отображение картинки вблизи курсора (при выборе компонента), который не будет привязан к инсталлятору. Нашел (на другом сайте) пример такого кода (прикреплю его ниже вместе с картинкой). [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 + 50), ScaleY(pt.y - InfoPic.Height), 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 := '404_preview.bmp'; 'Half-Life 2 Episode One': UndefPic := '404_preview.bmp'; 'Half-Life 2 Episode Two': UndefPic := '404_preview.bmp'; 'Portal': UndefPic := '404_preview.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; Вопросы: 1) Как пофиксить утечку памяти в данном скрипте?Поясняю: При быстром перемещении курсора между компонентами (к которым привязана картинка) увеличивается нагрузка на проц. Цитата 2) Как убрать мерцание (я так полагаю он автообновляется при каждом выборе компонента). images.rar Edited March 22, 2019 by UI3 @ Quote Link to comment Short link Share on other sites More sharing options...
liga1006 Posted March 24, 2019 Share Posted March 24, 2019 (edited) @AtotIK благодарю помогло))) А что делать в таком случае? где уже стоит Flags: exclusive Цитата Name: KMP\5; Description: 4. Заблокированный бронёй урон.; Flags: disablenouninstallwarning; Name: KMP\21; Description: 5. Панель урона.; Flags: disablenouninstallwarning; Name: KMP\13; Description: 6. Статус выполнения ЛБЗ в бою.; Flags: disablenouninstallwarning; Name: KMP\27; Description: 1. Счётчик нанесённого урона.Минималистичный лог.; Flags: exclusive Name: KMP\28; Description: 2. Счётчик нанесённого урона.Подробный лог.; Flags: exclusive Edited March 24, 2019 by liga1006 @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted March 24, 2019 Share Posted March 24, 2019 3 minutes ago, liga1006 said: А что делать в таком случае? где уже стоит Flags: exclusive Flags: exclusive disablenouninstallwarning; 1 @ Quote Link to comment Short link Share on other sites More sharing options...
liga1006 Posted March 24, 2019 Share Posted March 24, 2019 @Kotyarko_O Спасибо мужики за помощь, всё теперь как надо @ Quote Link to comment Short link Share on other sites More sharing options...
UI3 Posted April 2, 2019 Share Posted April 2, 2019 Добрый вечер, помогите переделать условие выполнения скрипта. Именно, данный скрипт позволяет увеличивать окно инсталлятора, с учетом отступов, единственное что нужно поменять это значения "GrowWizard(ScaleX(100), ScaleY(80))"; Вопрос: Как прописать условие, чтобы настройки которые мы изменяем в "GrowWizard" применялись НЕ ДЛЯ ВСЕГО инсталлятора, а ТОЛЬКО для определенной страницу (В моём случае это страница компонентов). ПОМОГИТЕ изменить условия выполнения алгоритма. Как я полагаю за это отвечает секция "procedure GrowWizard". P.S: Мне нужен данный скрипт, т.к он максимально кратко расписан, без лишних наворотов. P.S.S: Если изменять WizardForm, то скрипт не понимает к какой именно странице обращается пользователь, т.к нарушается последовательность обращения DeltaX и Y. procedure ShiftDown(Control: TControl; DeltaY: Integer); begin Control.Top := Control.Top + DeltaY; end; procedure ShiftRight(Control: TControl; DeltaX: Integer); begin Control.Left := Control.Left + DeltaX; end; procedure ShiftDownAndRight(Control: TControl; DeltaX, DeltaY: Integer); begin ShiftDown(Control, DeltaY); ShiftRight(Control, DeltaX); end; procedure GrowDown(Control: TControl; DeltaY: Integer); begin Control.Height := Control.Height + DeltaY; end; procedure GrowRight(Control: TControl; DeltaX: Integer); begin Control.Width := Control.Width + DeltaX; end; procedure GrowRightAndDown(Control: TControl; DeltaX, DeltaY: Integer); begin GrowRight(Control, DeltaX); GrowDown(Control, DeltaY); end; procedure GrowRightAndShiftDown(Control: TControl; DeltaX, DeltaY: Integer); begin GrowRight(Control, DeltaX); ShiftDown(Control, DeltaY); end; procedure GrowWizard(DeltaX, DeltaY: Integer); begin GrowRightAndDown(WizardForm, DeltaX, DeltaY); with WizardForm do begin GrowRightAndShiftDown(Bevel, DeltaX, DeltaY); ShiftDownAndRight(CancelButton, DeltaX, DeltaY); ShiftDownAndRight(NextButton, DeltaX, DeltaY); ShiftDownAndRight(BackButton, DeltaX, DeltaY); GrowRightAndDown(OuterNotebook, DeltaX, DeltaY); GrowRight(BeveledLabel, DeltaX); { WelcomePage } GrowDown(WizardBitmapImage, DeltaY); GrowRight(WelcomeLabel2, DeltaX); GrowRight(WelcomeLabel1, DeltaX); { InnerPage } GrowRight(Bevel1, DeltaX); GrowRightAndDown(InnerNotebook, DeltaX, DeltaY); { LicensePage } ShiftDown(LicenseNotAcceptedRadio, DeltaY); ShiftDown(LicenseAcceptedRadio, DeltaY); GrowRightAndDown(LicenseMemo, DeltaX, DeltaY); GrowRight(LicenseLabel1, DeltaX); { SelectDirPage } GrowRightAndShiftDown(DiskSpaceLabel, DeltaX, DeltaY); ShiftRight(DirBrowseButton, DeltaX); GrowRight(DirEdit, DeltaX); GrowRight(SelectDirBrowseLabel, DeltaX); GrowRight(SelectDirLabel, DeltaX); { SelectComponentsPage } GrowRightAndShiftDown(ComponentsDiskSpaceLabel, DeltaX, DeltaY); GrowRightAndDown(ComponentsList, DeltaX, DeltaY); GrowRight(TypesCombo, DeltaX); GrowRight(SelectComponentsLabel, DeltaX); { SelectTasksPage } GrowRightAndDown(TasksList, DeltaX, DeltaY); GrowRight(SelectTasksLabel, DeltaX); { ReadyPage } GrowRightAndDown(ReadyMemo, DeltaX, DeltaY); GrowRight(ReadyLabel, DeltaX); { InstallingPage } GrowRight(FilenameLabel, DeltaX); GrowRight(StatusLabel, DeltaX); GrowRight(ProgressGauge, DeltaX); { MainPanel } GrowRight(MainPanel, DeltaX); ShiftRight(WizardSmallBitmapImage, DeltaX); GrowRight(PageDescriptionLabel, DeltaX); GrowRight(PageNameLabel, DeltaX); { FinishedPage } GrowDown(WizardBitmapImage2, DeltaY); GrowRight(RunList, DeltaX); GrowRight(FinishedLabel, DeltaX); GrowRight(FinishedHeadingLabel, DeltaX); end; end; procedure InitializeWizard(); begin GrowWizard(ScaleX(100), ScaleY(80)); end; @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted April 2, 2019 Share Posted April 2, 2019 (edited) 3 hours ago, UI3 said: P.S.S: Если изменять WizardForm, то скрипт не понимает к какой именно странице обращается пользователь, т.к нарушается последовательность обращения DeltaX и Y. Бессмыслица какая-то. WizardForm - это ваше окно. Изменяя его размеры, страницы не затрагиваются. 3 hours ago, UI3 said: Как прописать условие, чтобы настройки которые мы изменяем в "GrowWizard" применялись НЕ ДЛЯ ВСЕГО инсталлятора, а ТОЛЬКО для определенной страницу (В моём случае это страница компонентов). Ну так оставьте в процедуре GrowWizard только операции с SelectComponentsPage (комментарии же есть). Edited April 2, 2019 by Kotyarko_O @ Quote Link to comment Short link Share on other sites More sharing options...
Draugd Posted April 3, 2019 Share Posted April 3, 2019 можно ли сделать чтоб картинки формата пнг или джепег отображались в установщике при наведении? а то .BMP весят каждая как мр3 ((( и можно ли как нибудь исправить такие жуткие подвисания установщика при выборе модов? ((( D Mod White v.5.2.exe #include "Addons\botva2.iss" #include "Addons\BASS_Module.iss" [Code] #ifdef UNICODE #define A "W" #else #define A "A" #endif const UNDEF_INDEX = -777; ALPHA_BLEND_LEVEL = 255; // 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'; function WOT_GetClientsCount(): Integer; external 'WOT_GetClientsCount@files:FindWot.dll cdecl'; function WOT_GetClientBranch(ClientIndex: Integer): Integer; external 'WOT_GetClientBranch@files:FindWot.dll cdecl'; procedure WOT_GetClientPathW(Buffer: String; BufferSize: Integer; ClientIndex: Integer); external 'WOT_GetClientPathW@files:FindWot.dll cdecl'; function DefaultDirName(Param: String): String; var ClientsCount, Index: Integer; FoundDir: String; begin SetLength(FoundDir, 1024); ClientsCount:=WOT_GetClientsCount(); if ClientsCount > 0 then begin for Index:=0 to ClientsCount-1 do begin if WOT_GetClientBranch(Index) = 1 then begin WOT_GetClientPathW(FoundDir, Length(FoundDir)-1, Index); Result:=ExpandConstant(FoundDir); end; end; end else Result:=ExpandConstant('{sd}\Games\World_of_Tanks'); end; 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(WizardForm.Left + 509), ScaleY(WizardForm.Top + 80), 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 '1.Командирская камера.': UndefPic := 'KK.bmp'; '2.Винтик.': UndefPic := 'VNT.bmp'; '3.Панель урона.': UndefPic := 'PY.bmp'; '4.AutoEquip авто установка/снятие оборудования.': UndefPic := 'AO.bmp'; '5.Калькулятор эффективности в бою.': UndefPic := 'KEB.bmp'; '6.Таймер сведения орудия в бою.': UndefPic := 'TS.bmp'; '7.Увеличенное время лампы засвета.': UndefPic := 'LZ.bmp'; '8.Статистика за сессию YasenKrasen Vanilla.': UndefPic := 'SS.bmp'; '9.Шанс на победу + хп команд.': UndefPic := 'SHP.bmp'; '10.Рейтинг отметок на стволе.': UndefPic := 'ML.bmp'; '11.Углы горизонтальной наводки.': UndefPic := 'YGN.bmp'; '12.Радар.': UndefPic := 'TLS.bmp'; '1.Гарпун мини + сведение Fatality.': UndefPic := 'PGM.bmp'; '2.Прицел Taipan (мини) настройка Draug.': UndefPic := 'TS.bmp'; '3.Прицел OverCross + сведение MeltyMaps.': UndefPic := 'OC.bmp'; '4.Прицел Гарпун Lite.': UndefPic := 'PGL.bmp'; '5.Улучшенный прицел J1mb0 мини.': UndefPic := 'PJ.bmp'; '6.Прицел Ахиллес.': UndefPic := 'PAH.bmp'; '7.Прицел минималистичный.': UndefPic := 'PMI.bmp'; '1.Минималистичный лог.': UndefPic := 'ML.bmp'; '2.Подробный лог.': UndefPic := 'PL.bmp'; '1.Стволик хаоса.': UndefPic := 'SH.bmp'; '2.Блокировка выстрела по союзникам и трупам.': UndefPic := 'BV.bmp'; '3.Зум х30 старт х2 + улучшенная видимость.': UndefPic := 'YGN.bmp'; '4.Пересадка экипажа.': UndefPic := 'AVE.bmp'; '5.Направление стволов на миникарте.': UndefPic := 'NSM.bmp'; '6.Калькулятор бронепробития.': UndefPic := 'KB.bmp'; '7.Мульти клиент.': UndefPic := 'MK.bmp'; '8.Отключение тумана.': UndefPic := 'OT.bmp'; '9.Засвет в ушах.': UndefPic := 'ZY.bmp'; '10.Места пассивного засвета (Spoter).': UndefPic := 'MZ.bmp'; '11.ЛБЗ в бою.': UndefPic := 'LBZ.bmp'; '12.Рейтинг игроков в бою.': UndefPic := 'RI.bmp'; '13.Сумарный WN8 комманд (Ekspoint).': UndefPic := 'PPB.bmp'; '14.ХП противников в ушах.': UndefPic := 'HP.bmp'; '15.Информатор засвета.': UndefPic := 'IZ.bmp'; '16.Информационная панель.': UndefPic := 'IP.bmp'; '17.Маркер автоприцела.': UndefPic := 'IA.bmp'; '18.Оповещения союзников о засвете.': UndefPic := 'OZ.bmp'; '1.Свободное вращение камеры.': UndefPic := 'RK.bmp'; '2.Полное отключение ручника.': UndefPic := 'RK.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 InitializeWizard1(); begin InitInfo(); end; function NextButtonclick(CurPageID: Integer): Boolean; begin Result := True; case CurPageID of wpSelectDir: if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin MsgBox('Не верно указана папка World of Tanks!', mbError, MB_OK); Result := False; end; end; end; @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted April 3, 2019 Share Posted April 3, 2019 (edited) 3 hours ago, Draugd said: можно ли сделать чтоб картинки формата пнг или джепег отображались в установщике при наведении? Используйте модуль "botva2". Пример: Оформление событий: https://bitbucket.org/Kotyarko_O/kmp/src/a492ce0f6c2f552fe9ae624d555b04384f8318dd/Resourses/CheckListBoxSrc.iss#lines-94 Привязка изображений: https://bitbucket.org/Kotyarko_O/kmp/src/master/ComponentsInfo.iss 3 hours ago, Draugd said: и можно ли как нибудь исправить такие жуткие подвисания установщика при выборе модов? Подозреваю, выводимые изображения сжаты (вероятно и зашифрованы). Есть 2 выхода: используйте более лайтовое сжатие установщика вцелом; не сжимайте выводимые в процессе установки изображения (соответственно и не шифруйте). Edited April 3, 2019 by Kotyarko_O @ Quote Link to comment Short link Share on other sites More sharing options...
Draugd Posted April 3, 2019 Share Posted April 3, 2019 1 час назад, Kotyarko_O сказал: Используйте модуль "botva2". Пример: Оформление событий: https://bitbucket.org/Kotyarko_O/kmp/src/a492ce0f6c2f552fe9ae624d555b04384f8318dd/Resourses/CheckListBoxSrc.iss#lines-94 Привязка изображений: https://bitbucket.org/Kotyarko_O/kmp/src/master/ComponentsInfo.iss Подозреваю, выводимые изображения сжаты (вероятно и зашифрованы). Есть 2 выхода: используйте более лайтовое сжатие установщика вцелом; не сжимайте выводимые в процессе установки изображения (соответственно и не шифруйте). спс за помощь, все супер!!! ))) @ 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.