-
Posts
34 -
Joined
-
Last visited
Reputation
5 NoobRecent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
-
Создание инсталляторов для модпаков на базе Inno Setup
F1nder replied to EvilAlex's topic in Modding General Discussion
Берешь код из OPENWG. Открываешь demo. Берешь от туда код. Интегрируешь его в свой инсталятор. И потом ставишь вот так function InitializeSetup: Boolean; begin // set filter WOT_LauncherSetDefault(2, 2); Result := True; end; 2, 2 - будет показывать ТОЛЬКО КЛИЕНТ ЛЕСТЫ OpenWG.Utils_v2025.01.09.1.zip -
Переезд произошел быстро. Перешел одним из первых. Все произошло за 2 минуты. Единственное что огорчило это то что пришлось выкупать всю проданную технику и не осталось почти серебра. Играть вроде стало приятней
-
Насчет описания не знаю, но как сделать картинку у меня есть скрипт. Локализация делается через [CustomMessage]. Потом просто там где должен быть текст надо интегрировать кастомное сообщение
-
Добрый день. Недавно читал тему про создание инсталляторов на inno setup. Хотел посмотреть есть ли исходные коды. Смотрю у пользователя Kotyarko_O есть залитый исходник на bitbukket. Однако он там удален. Кто скачивал исходник и у кого он остался не могли бы вы поделится? Заранее спасибо P.S Исходники были еще летом 2021 года.
-
Можно попробовать обратится к @AtotIK. Он делает модпаки для вспышки и амвея. Ну и в основном все.
-
Я не знал. Я тут новый просто)))
-
@Qirashi попробуй написать этому человеку. Насколько я понял он занимается модпаков джова. https://vk.com/phantasm
-
Создание инсталляторов для модпаков на базе Inno Setup
F1nder replied to EvilAlex's topic in Modding General Discussion
Спасибо. Но теперь появилась другая проблема. Жалуется на эту строчку. if (CurPage = wpSelectComponents) then AddButtonSelectComponent(); if (CurPage = wpFinished) then ApplySettings(); end; Попробовал закоментировать AddButtonSelectComponent(); и ApplySettings(); инсталлятор запускается и даже нашел путь. Но нашел только букву диска без папки с игрой. Что в этом случае делать? upd. ошибку решил но путь всеравно показывает одну букву диска. Кидаю код ; Скрипт создан через Мастер Inno Setup Script. ; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP! #define MyAppName "Модпак от F1nder 1.18.0.0 - 0" #define MyAppVersion "0" #define MyAppPublisher "F1nder YT" #define MyAppURL "https://openvk.su/club2271" #define Patch "1.18.0.0" #include "BackUpPage.iss" #include "Components.iss" #include "faq.iss" #include "InnoExtensions.iss" [Setup] ; Примечание: Значение AppId идентифицирует это приложение. ; Не используйте одно и тоже значение в разных установках. ; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.) AppId={{CCA4D068-372F-45ED-AE39-C4A37A19D64C} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName=C:\ DefaultGroupName={#MyAppName} InfoAfterFile=C:\Users\A4ivi4\Desktop\modpack\author.rtf OutputBaseFilename=ModPack_by_F1nder_#0 - 1.18.0.0 SetupIconFile=C:\Users\A4ivi4\Desktop\modpack\Files\wot_ico.ico Compression=lzma2/ultra64 InternalCompressLevel=ultra64 SolidCompression=yes UninstallFilesDir={app}\F1nder_ModPack SetupLogging=yes DirExistsWarning=false CreateAppDir=true AppendDefaultDirName=false ShowLanguageDialog=true DisableProgramGroupPage=true Uninstallable=true DisableDirPage=false [Languages] Name: "default"; MessagesFile: "compiler:Default.isl" [CustomMessages] IsAppRunningLabel=Клиент игры World of Tanks в настоящее время запущен. Для подолжения установки необходимо закрыть клиент! wotNotFound=Клиент игры не был найден в этой папке. Установка невозможна Path=1.18.0.0 browse=Обзор... [Files] Source: "dll\xvmextensions.dll"; DestName: xvmextensions.dll; Flags: dontcopy; Source: "dll\bass.dll"; Flags: dontcopy; Source: "dll\unmerg_f.dll"; Flags: dontcopy; [Code] var WotList: TNewComboBox; Buffer: String; procedure WotList_Update(); var ClientsCount, Index, ListIndex: Integer; Str: String; begin ListIndex := WotList.ItemIndex; ClientsCount := WOT_GetClientsCount(); WotList.Items.Clear(); if ClientsCount > 0 then begin for Index := 0 to ClientsCount - 1 do begin WOT_GetClientVersionW(Buffer, 1024, Index); Str := Copy(Buffer, 0, Pos(#0, Buffer)); Insert(' [', Str, Pos(#0, Str)); case WOT_GetClientWgcFlavour(Index) of 1: Insert('WG/', Str, Pos(#0, Str)); 2: Insert('360/', Str, Pos(#0, Str)); 3: Insert('Steam/', Str, Pos(#0, Str)); end; case WOT_GetClientBranch(Index) of 1: Insert('Release', Str, Pos(#0, Str)); 2: Insert('CT', Str, Pos(#0, Str)); 3: Insert('ST', Str, Pos(#0, Str)); 4: Insert('SB', Str, Pos(#0, Str)); end; Insert('] - ', Str, Pos(#0, Str)); WOT_GetClientPathW(Buffer, 1024, Index); Insert(Buffer, Str, Pos(#0, Str)); WotList.Items.Add(Str); end; end; WotList.Items.Add(ExpandConstant('{cm:browse}')); WotList.ItemIndex := ListIndex; end; procedure WotList_AddClient(ClientPath: String); var Index: Integer; begin if Length(ClientPath) = 0 then begin WotList.ItemIndex := -1; Exit; end; Index := WOT_AddClientW(ClientPath); if Index >= 0 then begin WotList_Update(); WotList.ItemIndex := Index; end else begin MsgBox(ExpandConstant('{cm:wotNotFound}'), mbError, MB_OK); WotList.ItemIndex := -1; end; end; procedure TypesComboOnChange(Sender: TObject); begin if WizardForm.TypesCombo.Text = 'Default config' then end; procedure WotList_OnChange(Sender: TObject); begin if WoTList.Text = ExpandConstant('{cm:browse}') then begin WizardForm.DirBrowseButton.OnClick(nil); WotList_AddClient(WizardForm.DirEdit.Text); end; WOT_GetClientPathW(Buffer, 1024, WotList.ItemIndex); WizardForm.DirEdit.Text := Buffer; end; procedure AddButtonSelectComponent(); var SelectComponentButton: TNewButton; begin with WizardForm do begin SelectComponentButton := TNewButton.Create(WizardForm); SelectComponentButton.Width := ScaleX(145); SelectComponentButton.Left := TypesCombo.Left + TypesCombo.Width - SelectComponentButton.Width + ScaleX(1); SelectComponentButton.Top := TypesCombo.Top + TypesCombo.Height + ScaleX(15); SelectComponentButton.Height := CancelButton.Height; SelectComponentButton.Caption := ExpandConstant('{cm:SettingConfigurationBtn}'); SelectComponentButton.Parent := SelectComponentsLabel.Parent; end; end; function IsAppRunning(const FileName : AnsiString): Boolean; var FSWbemLocator: Variant; FWMIService : Variant; FWbemObjectSet: Variant; begin Result := False; FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator'); FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', ''); FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"', [FileName])); Result := (FWbemObjectSet.Count > 0); FWbemObjectSet := Unassigned; FWMIService := Unassigned; FSWbemLocator := Unassigned; end; function InitializeSetup(): Boolean; begin case IsAppRunning('WorldOfTanks.exe') of True: begin MsgBox(ExpandConstant('{cm:IsAppRunningLabel}'), mbError, MB_OK); Result := False; end; False: begin Result := True; end; end; end; procedure InitializeWizard(); begin InitializeWizard1(); InitializeWizard2(); InitializeWizard3(); RedesignWizardForm; //MsgBox('{cm:Path}', mbInformation, MB_OK); WizardForm.TypesCombo.OnChange := @TypesComboOnChange; SetLength(Buffer, 1024); WizardForm.DirEdit.Visible := False; WizardForm.DirEdit.Text := ''; WizardForm.DirBrowseButton.Visible := False; WotList := TNewComboBox.Create(WizardForm); WotList.Parent := WizardForm.DirEdit.Parent; WotList.Style := csDropDownList; WotList.OnChange := @WotList_OnChange; WotList.SetBounds( WizardForm.DirEdit.Left, WizardForm.DirEdit.Top, WizardForm.DirBrowseButton.Left + WizardForm.DirBrowseButton.Width, WizardForm.DirEdit.Height ); WotList_Update(); end; procedure CurPageChanged(CurPage: Integer); begin if (CurPage = wpSelectDir) then begin if WotList.ItemIndex = -1 then begin WotList.ItemIndex := 0; end; WotList.OnChange(nil); end; if (CurPage = wpSelectComponents) then AddButtonSelectComponent(); if (CurPage = wpFinished) then end; function NextButtonClick(CurPage: Integer): Boolean; begin Result := True; if (CurPage = wpSelectDir) then begin if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin MsgBox(ExpandConstant('{cm:wotNotFound}'), mbError, MB_OK); Result := False; Exit; end; end; end; Этот способ у меня не работает. Либо ключи в реестре устарели либо у меня игра как-то криво стоит. Но он не ищет не в какую. Даже на другом компьютере где клиент стоит правильно и с установщика он не ищет и оставляет пусть дефолтный. Но спасибо за помощь))) upd. Я решил проблему сам. Вопросов больше не имею. Спасибо @Qirashiза наталкивание на правильную мыслю -
Создание инсталляторов для модпаков на базе Inno Setup
F1nder replied to EvilAlex's topic in Modding General Discussion
Поиск пути установки. Сделал как в инсталляторе xvm. Где через комбобокс показывает все клиенты на пк. Возникла ошибка на скриншоте -
Создание инсталляторов для модпаков на базе Inno Setup
F1nder replied to EvilAlex's topic in Modding General Discussion
Еще хотел бы спросить вопрос. Хотел сделать поиск клиента через Combobox. Сделал. Теперь не компилируется. Вылазит такая кракозябра. Что делать? Код прилагается. Буду признателен ; Скрипт создан через Мастер Inno Setup Script. ; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP! #define MyAppName "Модпак от F1nder 1.18.0.0 - 0" #define MyAppVersion "0" #define MyAppPublisher "F1nder YT" #define MyAppURL "https://openvk.su/club2271" #define Patch "1.18.0.0" #include "BackUpPage.iss" #include "Components.iss" #include "faq.iss" #include "InnoExtensions.iss" [Setup] ; Примечание: Значение AppId идентифицирует это приложение. ; Не используйте одно и тоже значение в разных установках. ; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.) AppId={{CCA4D068-372F-45ED-AE39-C4A37A19D64C} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName=C:\ DefaultGroupName={#MyAppName} InfoAfterFile=C:\Users\A4ivi4\Desktop\modpack\author.rtf OutputBaseFilename=ModPack_by_F1nder_#0 - 1.18.0.0 SetupIconFile=C:\Users\A4ivi4\Desktop\modpack\Files\wot_ico.ico Compression=lzma2/ultra64 InternalCompressLevel=ultra64 SolidCompression=yes UninstallFilesDir={app}\F1nder_ModPack SetupLogging=yes DirExistsWarning=false CreateAppDir=true AppendDefaultDirName=false ShowLanguageDialog=true DisableProgramGroupPage=true Uninstallable=true DisableDirPage=false [Languages] Name: "default"; MessagesFile: "compiler:Default.isl" [CustomMessages] IsAppRunningLabel=Клиент игры World of Tanks в настоящее время запущен. Для подолжения установки необходимо закрыть клиент! wotNotFound=Клиент игры не был найден в этой папке. Установка невозможна Path=1.18.0.0 [Files] Source: "dll\xvmextensions.dll"; DestName: xvmextensions.dll; Flags: dontcopy; Source: "dll\bass.dll"; Flags: dontcopy; Source: "dll\unmerg_f.dll"; Flags: dontcopy; [Code] var WotList: TNewComboBox; Buffer: String; procedure WotList_Update(); var ClientsCount, Index, ListIndex: Integer; Str: String; begin ListIndex := WotList.ItemIndex; ClientsCount := WOT_GetClientsCount(); WotList.Items.Clear(); if ClientsCount > 0 then begin for Index := 0 to ClientsCount - 1 do begin WOT_GetClientVersionW(Buffer, 1024, Index); Str := Copy(Buffer, 0, Pos(#0, Buffer)); Insert(' [', Str, Pos(#0, Str)); case WOT_GetClientWgcFlavour(Index) of 1: Insert('WG/', Str, Pos(#0, Str)); 2: Insert('360/', Str, Pos(#0, Str)); 3: Insert('Steam/', Str, Pos(#0, Str)); end; case WOT_GetClientBranch(Index) of 1: Insert('Release', Str, Pos(#0, Str)); 2: Insert('CT', Str, Pos(#0, Str)); 3: Insert('ST', Str, Pos(#0, Str)); 4: Insert('SB', Str, Pos(#0, Str)); end; Insert('] - ', Str, Pos(#0, Str)); WOT_GetClientPathW(Buffer, 1024, Index); Insert(Buffer, Str, Pos(#0, Str)); WotList.Items.Add(Str); end; end; WotList.Items.Add(ExpandConstant('{cm:browse}')); WotList.ItemIndex := ListIndex; end; procedure WotList_AddClient(ClientPath: String); var Index: Integer; begin if Length(ClientPath) = 0 then begin WotList.ItemIndex := -1; Exit; end; Index := WOT_AddClientW(ClientPath); if Index >= 0 then begin WotList_Update(); WotList.ItemIndex := Index; end else begin MsgBox(ExpandConstant('{cm:wotNotFound}'), mbError, MB_OK); WotList.ItemIndex := -1; end; end; procedure WotList_OnChange(Sender: TObject); begin if WoTList.Text = ExpandConstant('{cm:browse}') then begin WizardForm.DirBrowseButton.OnClick(nil); WotList_AddClient(WizardForm.DirEdit.Text); end; WOT_GetClientPathW(Buffer, 1024, WotList.ItemIndex); WizardForm.DirEdit.Text := Buffer; end; function IsAppRunning(const FileName : AnsiString): Boolean; var FSWbemLocator: Variant; FWMIService : Variant; FWbemObjectSet: Variant; begin Result := False; FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator'); FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', ''); FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"', [FileName])); Result := (FWbemObjectSet.Count > 0); FWbemObjectSet := Unassigned; FWMIService := Unassigned; FSWbemLocator := Unassigned; end; function InitializeSetup(): Boolean; begin case IsAppRunning('WorldOfTanks.exe') of True: begin MsgBox(ExpandConstant('{cm:IsAppRunningLabel}'), mbError, MB_OK); Result := False; end; False: begin Result := True; end; end; end; procedure InitializeWizard(); begin InitializeWizard1(); InitializeWizard2(); InitializeWizard3(); RedesignWizardForm; //MsgBox('{cm:Path}', mbInformation, MB_OK); WizardForm.TypesCombo.OnChange := @TypesComboOnChange; SetLength(Buffer, 1024); WizardForm.DirEdit.Visible := False; WizardForm.DirEdit.Text := ''; WizardForm.DirBrowseButton.Visible := False; WotList := TNewComboBox.Create(WizardForm); WotList.Parent := WizardForm.DirEdit.Parent; WotList.Style := csDropDownList; WotList.OnChange := @WotList_OnChange; WotList.SetBounds( WizardForm.DirEdit.Left, WizardForm.DirEdit.Top, WizardForm.DirBrowseButton.Left + WizardForm.DirBrowseButton.Width, WizardForm.DirEdit.Height ); WotList_Update(); end; procedure CurPageChanged(CurPage: Integer); begin if (CurPage = wpSelectDir) then begin if WotList.ItemIndex = -1 then begin WotList.ItemIndex := 0; end; WotList.OnChange(nil); end; if (CurPage = wpSelectComponents) then AddButtonSelectComponent(); if (CurPage = wpFinished) then ApplySettings(); end; function NextButtonClick(CurPage: Integer): Boolean; begin Result := True; if (CurPage = wpSelectDir) then begin if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin MsgBox(ExpandConstant('{cm:wotNotFound}'), mbError, MB_OK); Result := False; Exit; end; end; end; -
Создание инсталляторов для модпаков на базе Inno Setup
F1nder replied to EvilAlex's topic in Modding General Discussion
Я не анализировал рынок. Но попробуй либо здесь сделать тему и тебе сами напишут либо спроси в теме у кого можно заказать)) -
Создание инсталляторов для модпаков на базе Inno Setup
F1nder replied to EvilAlex's topic in Modding General Discussion
Там оно реализовано как-то через dll если я не ошибаюсь. Щас посмотрю. @Qirashi У Джова оно сделано через botva botva2.dll -
Создание инсталляторов для модпаков на базе Inno Setup
F1nder replied to EvilAlex's topic in Modding General Discussion
Ну дело вкуса. Попробуй поиском поработать по теме. Главное галку поставить искать по теме. И попробуй найти. Может кто-то уже сталкивался с проблемой -
Создание инсталляторов для модпаков на базе Inno Setup
F1nder replied to EvilAlex's topic in Modding General Discussion
IMHO. Не рекомендую данный сопособ. Если очень много модов у некоторых пользователей может залагать картинка и повесить весь установщик так что советую другой способ. Там и описание есть и все необходимоеКомпонентлист с превью.zip -
Создание инсталляторов для модпаков на базе Inno Setup
F1nder replied to EvilAlex's topic in Modding General Discussion
Добрый день, хотелось бы спросить одну вещь. Я облазил всю тему (наверное плохо искал) не подскажите как убрать эти отступы от краёв окна? Заранее спасибо за ответ