Sobrescrever arquivos instalados com arquivos na subpasta de configuração no Inno Setup

Dec 06 2020

Recentemente, encontrei alguns jogos de PC antigos para jogar no meu computador Windows 10 de 64 bits. Eu olhei várias fontes online para fazer os jogos funcionarem. Agora estou interessado em criar um instalador personalizado para todas as várias etapas executadas para fazer os jogos funcionarem corretamente. Consegui fazer o C&C Generals trabalhar com um instalador personalizado por meio do Inno Setup. No entanto, depois de um pouco de pesquisa e ensaio, não tenho experiência para fazer o seguinte:

  1. Consigo instalar o software e usar o patch oficial para atualizar o software instalado.
  2. Não tenho certeza de como adicionar um script para copiar arquivos modificados da subpasta de instalação para substituir os arquivos instalados na pasta principal após a atualização. A atualização não funciona nos arquivos modificados.

Exemplo:

  • O programa é instalado em C:\Program Files (x86)\Programv1.exe.
  • Os arquivos de origem da instalação incluem uma subpasta \modfiles.
  • Gostaria de substituir a Programv1.exeatualização pós-patch com\modfiles\Programv2.exe

Isso vai na [Code]seção? Pode ir para a [Run]seção com uma postinstallbandeira? Como um comando simples de copiar e substituir como última etapa?

Obrigado!

Respostas

1 MartinPrikryl Dec 07 2020 at 15:19

Existem muitas maneiras de conseguir isso.

  1. Você pode executar o patch usando o AfterInstallparâmetro, mesmo antes de o "mod" ser instalado. Veja Inno Setup: Instale outro instalador e execute-o antes de continuar minha instalação . Em seguida, você pode instalar o mod diretamente na pasta de instalação (não na subpasta):

    [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. Use a Runentrada para copiar o mod depois de instalar o patch:

    [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. Você pode codificá-lo em Pascal Script. Veja Instalar a versão personalizada do arquivo de configuração no Inno Setup depois que o subinstalador (Firebird) terminar