インストールされたファイルをInnoSetupのセットアップサブフォルダー内のファイルで上書きします

Dec 06 2020

最近、Windows 1064ビットコンピューターでプレイできる古いPCゲームをいくつか見つけました。ゲームを機能させるために、さまざまなオンラインソースを調べました。今、私はゲームを正しく動作させるためにとられるすべてのさまざまなステップのためのカスタムインストーラーを作成することに興味があります。Inno Setupを介して、C&CGeneralsをカスタムインストーラーで動作させることに成功しました。ただし、次のことを行うための少しの調査と試行の後、専門知識が不足しています。

  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「mod」がインストールされる前でも、パラメータを使用してパッチを実行できます。Inno Setup:他のインストーラーをインストールして実行してから、インストールを続行するを参照してください。次に、modを(サブフォルダーではなく)インストールフォルダーに直接インストールできます。

    [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パッチをインストールした後、エントリを使用してmodをコピーします。

    [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スクリプトでコーディングできます。(Firebird)サブインストーラーが終了した後、InnoSetupでカスタマイズされたバージョンの構成ファイルをインストールするを参照してください。