カスタムアクションでこれを行うことができます。以下のカスタムアクションに参照を追加できます<InstallExecuteSequence>
。
<InstallExecuteSequence>
...
<Custom Action="FileCleaner" After='InstallFinalize'>
Installed AND NOT UPGRADINGPRODUCTCODE</Custom>
次に、以下でアクションを定義する必要があります<Product>
。
<Product>
...
<CustomAction Id='FileCleaner' BinaryKey='FileCleanerEXE'
ExeCommand='' Return='asyncNoWait' />
FileCleanerEXEはバイナリ(私の場合、カスタムアクションを実行する小さなc ++プログラム)であり、以下でも定義されてい<Product>
ます。
<Product>
...
<Binary Id="FileCleanerEXE" SourceFile="path\to\fileCleaner.exe" />
これに対する本当のトリックは、Installed AND NOT UPGRADINGPRODUCTCODE
カスタムアクションの条件です。アクションはアップグレードごとに実行されます(アップグレードは実際にはアンインストールしてから再インストールするため)。ファイルを削除する場合は、アップグレード中におそらく必要ありません。
余談ですが、バッチスクリプトではなく、C ++プログラムのようなものを使用してアクションを実行するという問題に対処することをお勧めします。これにより、スクリプトの能力と制御が向上し、「cmdプロンプト」ウィンドウが点滅しないようにすることができます。インストーラーが実行されます。