我正在使用wix安装程序覆盖(阅读:修改现有的注册表值),添加新的等。卸载时,我需要恢复它们回到它们的原始状态(我修改)。由于这不被Wix支持,因此我必须使用自定义操作(因为我读了),我想运行一个exe文件,它将使用reg import
运行.reg文件。根据此网站:http://www.installsite.org/pages/en/isnews/200108/index.htm我的自定义操作必须运行After="InstallFinalize"
,因为wix回滚会删除我的注册表导入(作为回滚的一部分)。 所以基本上看起来像这样:安装程序修改注册表值,卸载程序删除所有触及的注册表更改(部分回滚),我的exe将恢复它们。Wix - 如何在卸载后执行installfinalize后运行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
谢谢您的帮助!
在这里没有看到整个图片...你在哪里修改注册表值?您担心回滚操作会在哪里恢复您的更改?从我们在这里看到的,除了延迟操作必须在'InstallInitialize'和'InstallFinalize'之间运行,您的操作只能在卸载时运行,取消操作时的操作会有所不同。意味着您的exe只能在卸载时运行,在延迟的上下文中,在(un)安装完成之前的某个时候。 – 2014-10-31 00:13:39