sce*_*ler 3 wix wix-extension wix3.8
我正在使用wix安装程序进行覆盖(读取:修改现有的注册表值),添加新的注册表值等。卸载后,我需要将它们恢复为原始状态(我修改的状态)。由于Wix不支持此功能,因此我必须使用自定义操作(如我所读),我想运行一个exe,它将使用来运行.reg文件reg import。根据此站点: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>
Run Code Online (Sandbox Code Playgroud)
但是我得到了 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
谢谢您的帮助!
根据此站点:http : //www.installsite.org/pages/en/isnews/200108/index.htm我的自定义操作必须在After =“ InstallFinalize”之后运行,因为wix回滚会删除我的注册表导入(作为回滚)。
您可以指定在该网站上提到的位置吗?我正在查看它,但找不到您的操作应该执行的原因After="InstallFinalize"。
它确实提到的是
延迟,回滚和提交自定义操作只能放在InstallInitialize和InstallFinalize之间
这是导致您出错的原因:您有一个延迟的操作,但想在 installfinalize 之后运行它。
如果安装(或卸载)被中止(例如,当用户取消时),则将执行回滚脚本。我认为您可以使用进行操作Before="InstallFinalize"。