我正在使用wix安装程序覆盖(读取:修改现有的注册表值),添加新的等等。卸载后我需要将它们恢复到原始状态(我修改过的那些)。由于Wix不支持这一点,因此我必须使用自定义操作(正如我所读),我想运行一个将使用reg import
运行.reg文件的exe。根据此站点:http://www.installsite.org/pages/en/isnews/200108/index.htm我的自定义操作必须运行After="InstallFinalize"
,因为wix回滚将删除我的注册表导入(作为回滚的一部分)。
所以基本上它看起来像这样:安装程序修改reg值,卸载程序删除所有触摸的注册表更改(回滚的一部分),我的exe将恢复它们。
所以我按照他的方式做了,以提升的权利开始我的exe等。 http://wixtoolset.org/documentation/manual/v3/customactions/qtexec.html
<Component Id="registry" Guid="*">
<File Id="regexe" Source="RegistryRollback.exe"/>
<File Id="regfile" Source="Reg_rollback.reg" />
</Component>
<Property Id="LaunchRegExe" Value="[#regexe]" />
<CustomAction Id="LaunchRegExe" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" Impersonate="no"/>
<Custom Action='LaunchRegExe' After='InstallFinalize'>Installed AND NOT UPGRADINGPRODUCTCODE</Custom>
但我得到Error 19 ICE77: LaunchRegExe is a in-script custom action. It must be sequenced in between the InstallInitialize action and the InstallFinalize action in the InstallExecuteSequence table C:\Merlin\Main\Demo\KioskDemoSetup\nw_setup\nw.wxs 250 1 nw_setup
感谢您的帮助!
答案 0 :(得分:4)
根据此网站:http://www.installsite.org/pages/en/isnews/200108/index.htm我的自定义操作必须运行在=&#34; InstallFinalize&#34;因为wix回滚会删除我的注册表导入(作为回滚的一部分)。
您能指定该网站上提到的内容吗?我正在查看它,但无法找到您的操作应与After="InstallFinalize"
一起运行的原因。
它提到的是那个
延迟,回滚和提交自定义操作只能放在InstallInitialize和InstallFinalize之间
出现错误的原因是:您有延迟操作,但希望在 installfinalize后运行。
如果安装(或卸载)中止(例如,当用户取消)时,将执行回滚脚本。我认为您可以使用Before="InstallFinalize"
执行操作。