Jump to content
Korean Random
EvilAlex

Создание инсталляторов для модпаков на базе Inno Setup

Recommended Posts

38 минут назад, AtotIK сказал:

Для кого придумали это? https://gitlab.com/xvm/xvm/-/blob/master/src/installer/src/xvm.iss

Прекрасно работает, а если попросите у автора - зальёт новую dll с поддержкой WG/Lesta.

 

А для чего там dll? В коде по ссылке вроде нет dll никакой.

Share this post


Link to post

Short link
Share on other sites
3 часа назад, AtotIK сказал:

Для кого придумали это? https://gitlab.com/xvm/xvm/-/blob/master/src/installer/src/xvm.iss

Прекрасно работает, а если попросите у автора - зальёт новую dll с поддержкой WG/Lesta.

а как с автором связаться? может подскажете

 

и да еще заметил такую вещь что сейчас старый код перестал определять что игра запущена и не выскакивает окно с предложением закрыть игру по нажатию ок

 

Share this post


Link to post

Short link
Share on other sites
. . .

procedure Select1(Sender:TObject);
begin
if (Dir1<> WizardForm.DirEdit.Text) then
  Dir1:= WizardForm.DirEdit.Text;
  WizardForm.DirEdit.Text:= ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam'#32#10'App'#32#10'444200,InstallLocation}');
  WizardForm.DirEdit.Enabled:= False;
  WizardForm.DirBrowseButton.Enabled:= False;
end;

procedure Select2(Sender:TObject);
begin
if (Dir2<> WizardForm.DirEdit.Text) then
  Dir2:= WizardForm.DirEdit.Text;
  WizardForm.DirEdit.Text:= ExpandConstant('{reg:HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\LGC-WOTB.RU.PRODUCTION\,InstallLocation}');
  WizardForm.DirEdit.Enabled:= False;
  WizardForm.DirBrowseButton.Enabled:= False;
end;

procedure Select3(Sender:TObject);
begin
if (Dir3<> WizardForm.DirEdit.Text) then
  Dir3:= WizardForm.DirEdit.Text;
  WizardForm.DirEdit.Text:= ExpandConstant('C:\Program Files\');
  WizardForm.DirEdit.Enabled:=True;
  WizardForm.DirBrowseButton.Enabled:= True;
end;

. . .

  //Выбор пути установки
  { NewRadioButton1 }
  NewRadioButton1 := TNewRadioButton.Create(WizardForm);
  with NewRadioButton1 do
  begin
    Parent := WizardForm.SelectDirPage;
    Left := ScaleX(16);
    Top := ScaleY(128);
    Width := ScaleX(300);
    Height := ScaleY(17);
    Caption := CustomMessage('CaptionSteamInstallation');
    OnClick:= @Select1;
  end;

  { NewRadioButton2 }
  NewRadioButton2 := TNewRadioButton.Create(WizardForm);
  with NewRadioButton2 do
  begin
    Parent := WizardForm.SelectDirPage;
    Left := ScaleX(16);
    Top := ScaleY(152);
    Width := ScaleX(300);
    Height := ScaleY(17);
    Caption := CustomMessage('CaptionWGCInstallation');
    OnClick:= @Select2;
    Checked:= True;
  end;

  { NewRadioButton3 }
  NewRadioButton3 := TNewRadioButton.Create(WizardForm);
  with NewRadioButton3 do
  begin
    Parent := WizardForm.SelectDirPage;
    Left := ScaleX(16);
    Top := ScaleY(176);
    Width := ScaleX(300);
    Height := ScaleY(17);
    Caption := CustomMessage('CaptionManualInstallation');
    OnClick:= @Select3;
    Checked:= True;
  end;

  NewRadioButton1.TabOrder := 5;
  NewRadioButton2.TabOrder := 6;
  NewRadioButton3.TabOrder := 7;

Использовал код выше для определения пути установки и последующего выбора. (Нужно было выбрать путь установки для Стим, Леста гейм центра или ручную. Путь должен был искаться через реестр)

Но в итоге столкнулся с проблемой, что в пути реестра нельзя использовать пробелы иначе он не может найти путь установки.
 

procedure Select1(Sender:TObject);
begin
if (Dir1<> WizardForm.DirEdit.Text) then
  Dir1:= WizardForm.DirEdit.Text;
  WizardForm.DirEdit.Text:= ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 444200,InstallLocation}');
  WizardForm.DirEdit.Enabled:= False;
  WizardForm.DirBrowseButton.Enabled:= False;
end;

Код в 1 и во 2 вставке не может найти путь... Скажите что я не так делаю и есть-ли какая-нибудь альтернатива?

Share this post


Link to post

Short link
Share on other sites
11.11.2022 в 13:18, StranikS_Scan сказал:

 

А для чего там dll? В коде по ссылке вроде нет dll никакой.

 

набор полезняшек (анпак XML, поиск запущенных процессов и их прибитие, работа с JSON, сплэшскрин, поиск клиентов с обходом файлов WGC/LGC)

 

https://gitlab.com/openwg/openwg.utils

OpenWG.Utils_v2022.11.12.3.zip

 

Edited by Mixaill
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Mixaill а как это все дело то подключить? пробую выкидывает ошибку

через findwot.dll делаю и код встраиваю норм работает но хотелось бы ваш вариант встроить в скрипт

Share this post


Link to post

Short link
Share on other sites
1 час назад, P.S.Enot сказал:

Mixaill а как это все дело то подключить? пробую выкидывает ошибку

через findwot.dll делаю и код встраиваю норм работает но хотелось бы ваш вариант встроить в скрипт

findwot.dll -- это что-то супер древнее, смотри сюда 

 

OpenWG.Utils: комплект полезняшек для InnoSetup (и не только) - Создание модов: общие вопросы - Korean Random

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Добрый день. Ребят подскажите нормальный код для чистки папки mods и res_mods 

Share this post


Link to post

Short link
Share on other sites

DelTree тебе в помощь...

 

if CurStep = ssDone then begin
  DeleteFile(ExpandConstant('{app}\1\1.bin'));
 end;
          begin
            DelTree(ExpandConstant('{app}\1\1\DelTree'), True, True, True);
          end;

@P.S.Enot Что-то такое.

Share this post


Link to post

Short link
Share on other sites
4 часа назад, Qirashi сказал:

DelTree тебе в помощь...

 


if CurStep = ssDone then begin
  DeleteFile(ExpandConstant('{app}\1\1.bin'));
 end;

          begin
            DelTree(ExpandConstant('{app}\1\1\DelTree'), True, True, True);
          end;

@P.S.Enot Что-то такое.

и куда это все дело мне подключить. или прописать где . чек бокса тоже не видно. 

Share this post


Link to post

Short link
Share on other sites

Зависит  от того, что ты хочешь сделать. У меня вообще установщик для репаков.

Share this post


Link to post

Short link
Share on other sites
9 минут назад, Qirashi сказал:

Зависит  от того, что ты хочешь сделать. У меня вообще установщик для репаков.

для модпака. хочу добавить чтобы пользователь мог поставить галочку очистить папки mods и res_mods . как вот тут 

Screenshot_1.png.120e94a8d7201b6ebcd6cc04d22f9673.png или так Screenshot_2.png.c544005532ade537e9cdc7b9a038eca0.png

Share this post


Link to post

Short link
Share on other sites
12.11.2022 в 17:16, Qirashi сказал:

. . .

procedure Select1(Sender:TObject);
begin
if (Dir1<> WizardForm.DirEdit.Text) then
  Dir1:= WizardForm.DirEdit.Text;
  WizardForm.DirEdit.Text:= ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam'#32#10'App'#32#10'444200,InstallLocation}');
  WizardForm.DirEdit.Enabled:= False;
  WizardForm.DirBrowseButton.Enabled:= False;
end;

procedure Select2(Sender:TObject);
begin
if (Dir2<> WizardForm.DirEdit.Text) then
  Dir2:= WizardForm.DirEdit.Text;
  WizardForm.DirEdit.Text:= ExpandConstant('{reg:HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\LGC-WOTB.RU.PRODUCTION\,InstallLocation}');
  WizardForm.DirEdit.Enabled:= False;
  WizardForm.DirBrowseButton.Enabled:= False;
end;

procedure Select3(Sender:TObject);
begin
if (Dir3<> WizardForm.DirEdit.Text) then
  Dir3:= WizardForm.DirEdit.Text;
  WizardForm.DirEdit.Text:= ExpandConstant('C:\Program Files\');
  WizardForm.DirEdit.Enabled:=True;
  WizardForm.DirBrowseButton.Enabled:= True;
end;

. . .

  //Выбор пути установки
  { NewRadioButton1 }
  NewRadioButton1 := TNewRadioButton.Create(WizardForm);
  with NewRadioButton1 do
  begin
    Parent := WizardForm.SelectDirPage;
    Left := ScaleX(16);
    Top := ScaleY(128);
    Width := ScaleX(300);
    Height := ScaleY(17);
    Caption := CustomMessage('CaptionSteamInstallation');
    OnClick:= @Select1;
  end;

  { NewRadioButton2 }
  NewRadioButton2 := TNewRadioButton.Create(WizardForm);
  with NewRadioButton2 do
  begin
    Parent := WizardForm.SelectDirPage;
    Left := ScaleX(16);
    Top := ScaleY(152);
    Width := ScaleX(300);
    Height := ScaleY(17);
    Caption := CustomMessage('CaptionWGCInstallation');
    OnClick:= @Select2;
    Checked:= True;
  end;

  { NewRadioButton3 }
  NewRadioButton3 := TNewRadioButton.Create(WizardForm);
  with NewRadioButton3 do
  begin
    Parent := WizardForm.SelectDirPage;
    Left := ScaleX(16);
    Top := ScaleY(176);
    Width := ScaleX(300);
    Height := ScaleY(17);
    Caption := CustomMessage('CaptionManualInstallation');
    OnClick:= @Select3;
    Checked:= True;
  end;

  NewRadioButton1.TabOrder := 5;
  NewRadioButton2.TabOrder := 6;
  NewRadioButton3.TabOrder := 7;

Использовал код выше для определения пути установки и последующего выбора. (Нужно было выбрать путь установки для Стим, Леста гейм центра или ручную. Путь должен был искаться через реестр)

Но в итоге столкнулся с проблемой, что в пути реестра нельзя использовать пробелы иначе он не может найти путь установки.
 


procedure Select1(Sender:TObject);
begin
if (Dir1<> WizardForm.DirEdit.Text) then
  Dir1:= WizardForm.DirEdit.Text;
  WizardForm.DirEdit.Text:= ExpandConstant('{reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 444200,InstallLocation}');
  WizardForm.DirEdit.Enabled:= False;
  WizardForm.DirBrowseButton.Enabled:= False;
end;

Код в 1 и во 2 вставке не может найти путь... Скажите что я не так делаю и есть-ли какая-нибудь альтернатива?

Уже сам нашёл решение. Интересный прикол с битностью системы...

Share this post


Link to post

Short link
Share on other sites

Доброго времени суток. Возник очень интересный вопрос, подобного в теме не видел.

Filename: "{tmp}\7za.exe"; Parameters: "x ""{tmp}\Hangar.7z"" -o""{app}\Data\"" * -r"; Flags: runhidden runascurrentuser;

В категории [Run] есть возможность запустить файл с расширением ехе. Но если этих файлов много, это вызывает некоторые проблемы. Возможно-ли перенести запуск файлов в секцию Code? Какой можно воспользоваться командой?

Поясняю для тех кто скажет что это бесполезно, в коде можно сделать привязку к компоненту и лишний раз команда выполняться не будет.

Edited by Qirashi

Share this post


Link to post

Short link
Share on other sites

Сам спросил, сам ответил. Если условно есть такой код:


[Run]
Filename: "{tmp}\7za.exe"; Parameters: "x ""{tmp}\Hangar.7z"" -o""{app}\Data\"" * -r"; Flags: runhidden runascurrentuser;

То его можно реализовать при помощи Exec или ShellExec
.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Посмотрел я на этот код: https://gitlab.com/xvm/xvm/-/blob/master/src/installer/src/xvm.iss все хорошо но как сделать чтобы искать только клиент Лесты?

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
19.03.2023 в 23:40, djgelius сказал:

Посмотрел я на этот код: https://gitlab.com/xvm/xvm/-/blob/master/src/installer/src/xvm.iss все хорошо но как сделать чтобы искать только клиент Лесты?

В смысле только клиент Лесты?

Share this post


Link to post

Short link
Share on other sites

к примеру, много у кого стоят клиент и лесты и евро. в таком случае, если человек ставит модпак на евро то установщик находит обычно путь к лесте.

крч. если сделать отдельно установщики для евро и для лесты, то смысла чтобы модпак для евро находил клиент лесты нет. как то так)) 

Share this post


Link to post

Short link
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...