Заменить установленные файлы файлами в подпапке установки в Inno Setup

Dec 06 2020

Недавно я нашел несколько старых компьютерных игр, в которые можно поиграть на моем 64-битном компьютере с Windows 10. Я просмотрел различные онлайн-источники, чтобы игры заработали. Теперь я заинтересован в создании специального установщика для всех шагов, предпринятых для правильной работы игр. Мне удалось заставить C&C Generals работать с пользовательским установщиком через Inno Setup. Однако после небольшого исследования и проб мне не хватает опыта, чтобы сделать следующее:

  1. Я могу установить программное обеспечение и использовать официальный патч для обновления установленного программного обеспечения.
  2. Я не уверен, как добавить сценарий для копирования измененных файлов из подпапки установки, чтобы перезаписать установленные файлы в основной папке после обновления. Обновление не работает с измененными файлами.

Пример:

  • Программа устанавливается в C:\Program Files (x86)\Programv1.exe.
  • Исходные файлы установки включают вложенную папку \modfiles.
  • Хотел бы перезаписать Programv1.exeобновление после патча с помощью\modfiles\Programv2.exe

Подходит ли это к [Code]разделу? Может под [Run]раздел с postinstallфлагом пройти ? Нравится простая команда копирования и перезаписи в качестве последнего шага?

Благодаря!

Ответы

1 MartinPrikryl Dec 07 2020 at 15:19

Есть много способов добиться этого.

  1. Вы можете выполнить патч, используя AfterInstallпараметр, даже до установки "мода". См. Inno Setup: установите другой установщик и запустите его, прежде чем продолжить установку . Затем вы можете установить мод прямо в папку установки (а не во вложенную папку):

    [Files]
    ; Install original game
    Source: C:\source\TheGame\*; Dest: {app}
    ; Run patch
    Source: C:\patch\PatchTheGame.exe; Dest: {tmp}; AfterInstall: RunPatch
    ; Install mod
    Source: C:\mod\Program.exe; Dest: {app}
    
  2. Используйте Runзапись для копирования мода после установки патча:

    [Files]
    ; Install original game
    Source: C:\source\TheGame\*; Dest: {app}
    ; Extract the patch somewhere
    Source: C:\patch\PatchTheGame.exe; Dest: {tmp}
    ; Extract the mod somewhere
    Source: C:\mod\Program.exe; Dest: {tmp}
    
    [Run]
    Filename: {tmp}\PatchTheGame.exe
    Filename: {cmd}; Parameters: /C copy ""{tmp}\Program.exe"" ""{app}\Program.exe""
    
  3. Вы можете запрограммировать это на Pascal Script. См. Раздел Установка настроенной версии файла конфигурации в Inno Setup после завершения работы субинсталлятора (Firebird).