您可以使用自定义操作来执行此操作。您可以在下面为您的自定义操作添加引用<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 提示”窗口在闪烁时闪烁您的安装程序运行。