我有一个自定义操作,可以在卸载过程中删除各种目录。我想在安装顺序的不同点调用此操作,具体取决于正在执行的操作:
我可能会让每一个单独工作,但我如何让他们一起工作我想要的。我试过这样的事情(一些代码来自here):
<InstallExecuteSequence>
<Custom Action="PreventDowngrading" After="FindRelatedProducts">
NEWERPRODUCTFOUND AND NOT Installed
</Custom>
<LaunchConditions After="AppSearch" />
<RemoveExistingProducts Before="InstallInitialize" />
<!-- NEW _> Clean old files AFTER uninstall during an upgrade -->
<Custom Action="CleanUp" After="RemoveExistingProducts" >
UPGRADINGPRODUCTCODE
</Custom>
<!-- NEW _> Clean old files LAST during an uninstall -->
<Custom Action="CleanUp" After="RemoveFolders" >
(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")
</Custom>
</InstallExecuteSequence>
但是在进行构建时会出现重复的符号错误。任何帮助将不胜感激!
答案 0 :(得分:1)
您还可以使用RemoveFiles来删除目录中的无关文件。
答案 1 :(得分:0)
自定义操作只能在序列中进行一次。我有一些更大的担忧:你在做什么类型的升级?主要升级是卸载以前的产品,因此您的CA可能会以您描述它的方式运行两次。
我会在这里轻轻地走。你可以使用WiX RemoveFolder元素(MSI RemoveFile表)。这将更容易和可靠地实施。如果你必须使用自定义操作,我会使用组件操作状态来确定它应该运行的时间,而不是如上所示的更通用的属性。