Jump to content
Korean Random
EvilAlex

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

Recommended Posts

Только что, AtotIK сказал:

Скачивать XFW.ExtensionLib_2021.05.01.zip, брать в архиве файл xvmextensions.x86_32.dll, файл примера там же.

да чет я подключаю он ошибку выдает

 

 

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

Скачивать XFW.ExtensionLib_2021.05.01.zip, брать в архиве файл xvmextensions.x86_32.dll, файл примера там же.

на это ругается 

Screenshot_4.png.e610bffdb99c2c52da9d2de388c074b5.png

Share this post


Link to post

Short link
Share on other sites
02.10.2021 в 01:19, P.S.Enot сказал:

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

 

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;

 

Работает с Windows 7. Что бы не вылетал с ошибкой инсталлятор на XP и Vista нужно обвернуть это в проверку версии, а лучше запретить инсталлятор запускать на системах ниже Windows 7 (сколько можно уже?).

Так же можно закинуть в NextButtonClick с проверкой на любой странице (первой).

 

07.10.2021 в 15:20, P.S.Enot сказал:

ошибку выдает

Не причастные к друг другу вещи. Ищите ошибку у себя.

Edited by AtotIK

Share this post


Link to post

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

 

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 RegCheck(); Result:=True; end;
  end;
end;

 

Работает с Windows 7. Что бы не вылетал с ошибкой инсталлятор на XP и Vista нужно обвернуть это в проверку версии, а лучше запретить инсталлятор запускать на системах ниже Windows 7 (сколько можно уже?).

Так же можно закинуть в NextButtonClick с проверкой на любой странице (первой).

у меня виндовс 10

Share this post


Link to post

Short link
Share on other sites
Только что, P.S.Enot сказал:

у меня виндовс 10

 

А у хомячков корч.

Share this post


Link to post

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

 

А у хомячков корч.

интересно сказано. но я не понял не чего )))

Share this post


Link to post

Short link
Share on other sites

А вот универсальный метод, но он сложнее. Работает везде.

 

type HANDLE = LongInt;
     HMODULE = HANDLE;
     pHMODULE = Array[0..255] of HMODULE;
     LPDWORD = DWORD; PDWORD = Array[0..255] of DWORD;
     LPTSTR = String;

function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: Boolean; dwProcessId: DWORD): HANDLE; external '[email protected] stdcall delayload';
function CloseHandle(hObject: HANDLE): BOOL; external '[email protected] stdcall delayload';
function EnumProcesses(var pProcessIds: PDWORD; cb: DWORD; var pBytesReturned: DWORD): BOOL; external '[email protected] stdcall delayload';
function EnumProcessModules(hProcess: HANDLE; var lphModule: pHMODULE; cb: DWORD; var lpcbNeeded: LPDWORD): BOOL; external '[email protected] stdcall delayload';
function GetModuleFileNameExW(hProcess: HANDLE; hModule: HMODULE; lpFilename: LPTSTR; nSize: DWORD): DWORD; external '[email protected] stdcall delayload';

function IsAppRunning(procName: String; FullPath: Boolean): Boolean;
var
  Found, isModuleShot: Boolean;
  FilenameEnd: Integer;
  Filename: AnsiString;
  NA, Entry, maxEntries: DWORD;
  Processes: PDWORD;
  lpFilename: LPTSTR;
  hProcess: HANDLE;
  hMod: pHMODULE;
begin
  SetLength(lpFilename, 255);
  Found := False;
  if (EnumProcesses(Processes, SizeOf(Processes), maxEntries)) then
  begin
    Entry := 0;
    maxEntries := maxEntries / SizeOf(maxEntries);
    while ((not Found) and (Entry < maxEntries)) do
    begin
      hProcess := OpenProcess($400 or $10, False, Processes[Entry]);
      if (hProcess <> 0) then
      begin
        isModuleShot := False;
        begin
          isModuleShot := EnumProcessModules(hProcess, hMod, SizeOf(hMod), NA);
        end;
        if (isModuleShot) then
        if (GetModuleFileNameExW(hProcess, hMod[0], lpFilename, Length(lpFilename)) > 0) then
        begin
          FilenameEnd := Pos(#0, lpFilename);
          Filename := Copy(Lowercase(lpFilename), 1, FilenameEnd - 1);
          if (not Fullpath) then
            Filename := ExtractFileName(Filename);
          if (AnsiLowercase(Filename) = AnsiLowercase(procName)) then
            Found := True;
        end;
        CloseHandle(hProcess);
      end;
      Entry := Entry + 1;
    end;
  end;
  Result := Found;
end;

function NextButtonClick(CurPage: Integer): Boolean;
begin
  Result := True;
  if CurPage = 1 then
  begin
    case IsAppRunning('WorldOfTanks.exe', False) of
      True: begin MsgBox(ExpandConstant('{cm:IsAppRunningLabel}'), mbError, MB_OK); Result := False; end;
      False: Result := True;
    end;
  end;
end;

 

2 минуты назад, P.S.Enot сказал:

интересно сказано. но я не понял не чего )))

Тогда может это не твоё?

Edited by AtotIK

Share this post


Link to post

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

А вот универсальный метод, но он сложнее. Работает везде.

 

type HANDLE = LongInt;
     HMODULE = HANDLE;
     pHMODULE = Array[0..255] of HMODULE;
     LPDWORD = DWORD; PDWORD = Array[0..255] of DWORD;
     LPTSTR = String;

function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: Boolean; dwProcessId: DWORD): HANDLE; external '[email protected] stdcall delayload';
function CloseHandle(hObject: HANDLE): BOOL; external '[email protected] stdcall delayload';
function EnumProcesses(var pProcessIds: PDWORD; cb: DWORD; var pBytesReturned: DWORD): BOOL; external '[email protected] stdcall delayload';
function EnumProcessModules(hProcess: HANDLE; var lphModule: pHMODULE; cb: DWORD; var lpcbNeeded: LPDWORD): BOOL; external '[email protected] stdcall delayload';
function GetModuleFileNameExW(hProcess: HANDLE; hModule: HMODULE; lpFilename: LPTSTR; nSize: DWORD): DWORD; external '[email protected] stdcall delayload';

function IsAppRunning(procName: String; FullPath: Boolean): Boolean;
var
  Found, isModuleShot: Boolean;
  FilenameEnd: Integer;
  Filename: AnsiString;
  NA, Entry, maxEntries: DWORD;
  Processes: PDWORD;
  lpFilename: LPTSTR;
  hProcess: HANDLE;
  hMod: pHMODULE;
begin
  SetLength(lpFilename, 255);
  Found := False;
  if (EnumProcesses(Processes, SizeOf(Processes), maxEntries)) then
  begin
    Entry := 0;
    maxEntries := maxEntries / SizeOf(maxEntries);
    while ((not Found) and (Entry < maxEntries)) do
    begin
      hProcess := OpenProcess($400 or $10, False, Processes[Entry]);
      if (hProcess <> 0) then
      begin
        isModuleShot := False;
        begin
          isModuleShot := EnumProcessModules(hProcess, hMod, SizeOf(hMod), NA);
        end;
        if (isModuleShot) then
        if (GetModuleFileNameExW(hProcess, hMod[0], lpFilename, Length(lpFilename)) > 0) then
        begin
          FilenameEnd := Pos(#0, lpFilename);
          Filename := Copy(Lowercase(lpFilename), 1, FilenameEnd - 1);
          if (not Fullpath) then
            Filename := ExtractFileName(Filename);
          if (AnsiLowercase(Filename) = AnsiLowercase(procName)) then
            Found := True;
        end;
        CloseHandle(hProcess);
      end;
      Entry := Entry + 1;
    end;
  end;
  Result := Found;
end;

function NextButtonClick(CurPage: Integer): Boolean;
var
  VersionString, FilePath: String;
begin
  Result := True;
  if CurPage = 1 then
  begin
    case IsAppRunning('WorldOfTanks.exe', False) of
      True: begin MsgBox(ExpandConstant('{cm:IsAppRunningLabel}'), mbError, MB_OK); Result := False; end;
      False: Result := True;
    end;
  end;
end;

 

Тогда может это не твоё?

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

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

А вот универсальный метод, но он сложнее. Работает везде.

 

type HANDLE = LongInt;
     HMODULE = HANDLE;
     pHMODULE = Array[0..255] of HMODULE;
     LPDWORD = DWORD; PDWORD = Array[0..255] of DWORD;
     LPTSTR = String;

function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: Boolean; dwProcessId: DWORD): HANDLE; external '[email protected] stdcall delayload';
function CloseHandle(hObject: HANDLE): BOOL; external '[email protected] stdcall delayload';
function EnumProcesses(var pProcessIds: PDWORD; cb: DWORD; var pBytesReturned: DWORD): BOOL; external '[email protected] stdcall delayload';
function EnumProcessModules(hProcess: HANDLE; var lphModule: pHMODULE; cb: DWORD; var lpcbNeeded: LPDWORD): BOOL; external '[email protected] stdcall delayload';
function GetModuleFileNameExW(hProcess: HANDLE; hModule: HMODULE; lpFilename: LPTSTR; nSize: DWORD): DWORD; external '[email protected] stdcall delayload';

function IsAppRunning(procName: String; FullPath: Boolean): Boolean;
var
  Found, isModuleShot: Boolean;
  FilenameEnd: Integer;
  Filename: AnsiString;
  NA, Entry, maxEntries: DWORD;
  Processes: PDWORD;
  lpFilename: LPTSTR;
  hProcess: HANDLE;
  hMod: pHMODULE;
begin
  SetLength(lpFilename, 255);
  Found := False;
  if (EnumProcesses(Processes, SizeOf(Processes), maxEntries)) then
  begin
    Entry := 0;
    maxEntries := maxEntries / SizeOf(maxEntries);
    while ((not Found) and (Entry < maxEntries)) do
    begin
      hProcess := OpenProcess($400 or $10, False, Processes[Entry]);
      if (hProcess <> 0) then
      begin
        isModuleShot := False;
        begin
          isModuleShot := EnumProcessModules(hProcess, hMod, SizeOf(hMod), NA);
        end;
        if (isModuleShot) then
        if (GetModuleFileNameExW(hProcess, hMod[0], lpFilename, Length(lpFilename)) > 0) then
        begin
          FilenameEnd := Pos(#0, lpFilename);
          Filename := Copy(Lowercase(lpFilename), 1, FilenameEnd - 1);
          if (not Fullpath) then
            Filename := ExtractFileName(Filename);
          if (AnsiLowercase(Filename) = AnsiLowercase(procName)) then
            Found := True;
        end;
        CloseHandle(hProcess);
      end;
      Entry := Entry + 1;
    end;
  end;
  Result := Found;
end;

function NextButtonClick(CurPage: Integer): Boolean;
var
  VersionString, FilePath: String;
begin
  Result := True;
  if CurPage = 1 then
  begin
    case IsAppRunning('WorldOfTanks.exe', False) of
      True: begin MsgBox(ExpandConstant('{cm:IsAppRunningLabel}'), mbError, MB_OK); Result := False; end;
      False: Result := True;
    end;
  end;
end;

 

Тогда может это не твоё?

Screenshot_6.png.c6c3aa3c41297cdfc1ac98e5194a9c0b.png

 

Share this post


Link to post

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

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

 

: =

замени на

:=

Share this post


Link to post

Short link
Share on other sites

При перекомпиляции с недавних пор начало выскакивать такое окошко((( приходится перезагружать комп((

Может кто знает как вылечить?((

2021-10-13_104440.png.b3e854c464b690abf735eed2d9116752.png

Share this post


Link to post

Short link
Share on other sites
10 hours ago, DraugDM said:

При перекомпиляции с недавних пор начало выскакивать такое окошко((( приходится перезагружать комп((

Может кто знает как вылечить?((

Ну. Это значит, что существующий скомпилированный *.exe-файл занят каким-то процессом, обрабатывающим его.

  • После первой компиляции инсталлятор запускался? Если да, вероятнее всего, он неправильно завершается и попросту зависает в процессах. Нужно мониторить диспетчер задач. Смотреть DeinitializeSetup.
  • После компиляции инсталлятор не запускался, просто была начата повторная компиляция? Если да, то занести директорию проекта в исключения любых антивирусных ПО.
Edited by Kotyarko_O
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
17 часов назад, Kotyarko_O сказал:

Ну. Это значит, что существующий скомпилированный *.exe-файл занят каким-то процессом, обрабатывающим его.

  • После первой компиляции инсталлятор запускался? Если да, вероятнее всего, он неправильно завершается и попросту зависает в процессах. Нужно мониторить диспетчер задач. Смотреть DeinitializeSetup.
  • После компиляции инсталлятор не запускался, просто была начата повторная компиляция? Если да, то занести директорию проекта в исключения любых антивирусных ПО.

спс за ответ!

Только что еще раз компилировал установщик, установил моды... завершил процесс установки! Удалил установщик, компилировал новый и тут же при начале установке это окно! (( в диспетчере задач DeinitializeSetup нет(

Думаю скорее всего дело в коде на поиск клиента на дисках...

2021-10-14_161824.thumb.png.ec20f3f7ec93dfae04433f3bfcc4777f.png

Share this post


Link to post

Short link
Share on other sites
7 hours ago, DraugDM said:

в диспетчере задач DeinitializeSetup нет

У меня про это были два разных предложения. "DeinitializeSetup" - функция в скрипте, в диспетчере быть не может. Нужно смотреть саму функцию и определять, что в ней неправильное\чего не хватает, на основе используемых библиотек, например.

 

7 hours ago, DraugDM said:

установил моды... завершил процесс установки! Удалил установщик, компилировал новый и тут же при начале установке это окно!

Тогда смотри в сторону антивирусного ПО.

 

7 hours ago, DraugDM said:

Думаю скорее всего дело в коде на поиск клиента на дисках.

Эта ошибка не говорит о проблемах в коде.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Hey all, long time...

1. I've been looking everywhere on the Internet and there STILL doesn't seem to be an "updated" version of InnoSetup Ultra/Enhanced.  Is that true?

 

2. Also, I've tried some 12 different free and paid Setup/Install Creators, and NONE seem to still be able to create the basic features we use in WOT or otherwise to install Mods into a game.  So also my question, is there "really" no version of a GUI installer that does the basics, specifically being able to "list" the mods so the user can select and install what they want, with a picture showing the mod also, in the GUI of course, sure the advanced installers you can still create "code", but I don't want to code anymore, tired of it, I don't have that brain?

 

I mean, I have tried many, and some are very close, they just need to add a couple more steps, even the very simple installers, just a couple of steps and the GUI installer would be doing what we need.  I find it crazy this still doesn't exist yet....  Is that true?

 

3. Can someone point me to people on the internet who've created some other installers (and are sharing the code) similar to how we use in WOT?
But I'm specifically wanting those who are using the Official InnoSetup, OR another Installer creation program, rather than our "Ultra/Enhanced" version which is really old to create their scripts.

 

Thanks much guys...

 

------

 

Эй, все, долго ...

1. Я искал повсюду в интернете, и все еще не кажется «обновленной» версией InnoSetup Ultra / Enhanced. Это правда?

 

2. Кроме того, я пробовал около 12 различных бесплатных и платных создателей настроек / установки, и никто не сможет создать основные функции, которые мы используем в WOT или иным образом для установки модов в игру. Итак, мой вопрос, есть ли «Действительно», нет версии установщика графического интерфейса, который делает основы, в частности, имею возможность «перечислять» моды, чтобы пользователь мог выбрать и устанавливать то, что они хотят, с изображением, показывающей мод также, в GUI конечно, уверен, что усовершенствованные установщики, которые вы все равно можете создать «код», но я больше не хочу, устал от этого, у меня нет этого мозга?

 

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

 

3. Может ли кто-нибудь указать мне людям в Интернете, кто создал некоторые другие установщики (и делятся кодом), похожим на то, как мы используем в WOT?
Но я специально желаю тех, кто использует официальный InnoSetup или другой программа создания установщика, а не нашей версии «Ultra / Enhanced», которая действительно старая для создания своих скриптов.

 

Спасибо много парней ...

Edited by leeuniverse
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
1 hour ago, leeuniverse said:

1. I've been looking everywhere on the Internet and there STILL doesn't seem to be an "updated" version of InnoSetup Ultra/Enhanced.  Is that true?

That is true. ISEnchanced authors no longer maintain it, since ~2013. And all source codes was lost.

But, there are some tries to reproduce some ISEnhanced`s features, related to VCL (based on actual IS releases): https://krinkels.org/threads/inno-setup-vcl.4317/

Also there`s attempt to reimplement NewCheckListBox by El Sanchez, to make it more flexible and, maybe, add some ISEnhanced`s features in future. But it isn`t approved yet.

 

1 hour ago, leeuniverse said:

2. Also, I've tried some 12 different free and paid Setup/Install Creators, and NONE seem to still be able to create the basic features we use in WOT or otherwise to install Mods into a game.  So also my question, is there "really" no version of a GUI installer that does the basics, specifically being able to "list" the mods so the user can select and install what they want, with a picture showing the mod also, in the GUI of course, sure the advanced installers you can still create "code", but I don't want to code anymore, tired of it, I don't have that brain?

 

I mean, I have tried many, and some are very close, they just need to add a couple more steps, even the very simple installers, just a couple of steps and the GUI installer would be doing what we need.  I find it crazy this still doesn't exist yet....  Is that true?

Inno Setup - is the best and relatively simple tool to create WOT-mods-related soft. But it pretty limited in UI possibilities.

Want more - use some full language. Once upon a time i was trying to create open source project on C#, and there was great potential. But it became boring too fast, with thoughts "no one will appreciate it".

 

1 hour ago, leeuniverse said:

3. Can someone point me to people on the internet who've created some other installers (and are sharing the code) similar to how we use in WOT?
But I'm specifically wanting those who are using the Official InnoSetup, OR another Installer creation program, rather than our "Ultra/Enhanced" version which is really old to create their scripts

ISEnhanced is old, its true. But it works)

You can create WOT-mods-related setup on the last IS releases, there`s tools for it. In example, botva2. It has custom checkListBox, implemented in IS code. It works, but need to be improved to use it with large items-lists.

What about GUI-part. There`s a Firemonkey port for IS. And it worth to try)

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites
5 minutes ago, Kotyarko_O said:

That is true. ISEnchanced authors no longer maintain it, since ~2013. And all source codes was lost.

But, there are some tries to reproduce some ISEnhanced`s features, related to VCL: https://krinkels.org/threads/inno-setup-vcl.4317/

Also there`s attempt to reimplement NewCheckListBox by El Sanchez, to make it more flexible and, maybe, add some ISEnhanced`s features in future. But it isn`t approved yet.

 

Inno Setup - is the best and relatively simple tool to create WOT-mods-related soft. But it pretty limited in UI possibilities.

Want more - use some full language. Once upon a time i was trying to create open source project on C#, and there was great potential. But it became boring too fast, with thoughts "no one will appreciate it".

 

ISEnhanced is old, its true. But it works)

You can create WOT-mods-related setup on the last IS releases, there`s tools for it. In example, botva2. It has custom checkListBox, implemented in IS code. It works, but need to be improved to use it with large items-lists.

What about GUI-part. There`s a Firemonkey port for IS. And it worth to try)

 

Thanks for the info Kotyarko...

Can you point me to places/tools/or even installers etc. people have already created with the Official InnoSetup that are similar to WOT needs?

Also, if you have a location for examples of botva2 doing what your stating that would also be great.

 

I will look further into your other info, much appreciated...  Also, sent you a PM.  :)

 

-----

 

Спасибо за информацию Kotyarko ...

Можете ли вы указать мне на места / инструменты / или даже установщики и т. Д. Люди уже созданы с официальным innoSetup, которые похожи на нужды WOT?

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

Я буду смотреть дальше в другую информацию, много ценится ... Также отправил вам в личку. :)

Share this post


Link to post

Short link
Share on other sites
11 minutes ago, leeuniverse said:

Can you point me to places/tools/or even installers etc. people have already created with the Official InnoSetup that are similar to WOT needs?

With the official IS, only simple examples:

https://koreanrandom.com/forum/topic/44984-wip-xvm-installerv2/#comments

https://gitlab.com/xvm/xvm/-/tree/master/src/installer/src

 

With unofficial IS:

https://bitbucket.org/Kotyarko_O/kmp/src/master/

https://bitbucket.org/Kotyarko_O/moder_mp/src/master/

https://bitbucket.org/Kotyarko_O/gmp/src/master/

https://bitbucket.org/ShuraBB/modpack/src/master/

 

Maybe there are more, but it is all i can remember.

 

12 minutes ago, leeuniverse said:

Also, if you have a location for examples of botva2 doing what your stating that would also be great.

Botva2 [0.9.9.156].zip

Just compile script "CheckListBox_Example.iss" and you`ll see)

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites
1 hour ago, Kotyarko_O said:

 

Thanks for those...  I knew about yours, but not the others, they might be helpful.

 

BTW, I just saw that the XVM Installer one does EXACTLY what I was looking for in relation to using the "Official" InnoSetup to create Mod Installers.

Looks like they may have figured it out, or at least got it partially working?

I don't know if they are using the "El Sanchez" script or Botva2, or what to give us the Checkbox List Tree with Picture and sound even with the listed items.
So yep... this looks exactly what I was looking for...

 

Now if we could get one of the Setup/Installer makers to just add that ability, which wouldn't be too hard.

 

----------

 

Спасибо за те ... я знал о твоей, но не остальные, они могут быть полезны.

Кстати, я только что увидел, что установщик XVM человек делает именно то, что я искал в отношении использования «официального» InnoSetup для создания мод установщиков.

Похоже, они могли понять это, или, по крайней мере, получил его частично работать?

Я не знаю, используют ли они сценарий или Botva2 «El Sanchez» или Botva2, или что дать нам дерево списка флажков с изображением и звучать даже с указанными элементами.
Итак, да ... это выглядит именно то, что я искал ...

Теперь, если бы мы могли получить одно из производителей установщиков / установщиков, чтобы просто добавить эту способность, что бы не было слишком сложно.

Edited by leeuniverse

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...