自定义操作仅在安装与升级时执行一次的配置问题
解决方案
问题出在自定义操作的执行条件上,当前的NOT Installed AND UPGRADINGPRODUCTCODE要求同时满足两个条件才会执行:
NOT Installed:表示当前产品尚未安装(对全新安装和升级时的新版本都成立)UPGRADINGPRODUCTCODE:仅在升级旧版本时才会被Windows Installer设置
全新安装时UPGRADINGPRODUCTCODE不存在,导致整个条件不成立,所以自定义操作不执行。
修改执行条件为NOT Installed OR UPGRADINGPRODUCTCODE,即可覆盖全新安装和升级两种场景,且保证每种场景仅执行一次:
<CustomAction Id="MyCustomAction" Return="check" Execute="deferred" Impersonate="no" BinaryKey="MyCustomActions.CA.dll" DllEntry="MyCustomAction" /> <InstallExecuteSequence> <Custom Action="MyCustomAction" Before="InstallFinalize"> <![CDATA[NOT Installed OR UPGRADINGPRODUCTCODE]]> </Custom> </InstallExecuteSequence>
验证逻辑:
- 全新安装:
NOT Installed为真,条件成立,自定义操作执行一次 - 升级:
UPGRADINGPRODUCTCODE为真,条件成立,自定义操作仅执行一次(解决了之前的重复执行问题)
内容的提问来源于stack exchange,提问作者Willy
相关产品推荐
相关产品推荐

