Wix-卸载后在findfinalize后如何运行exe?

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

谢谢您的帮助!

Ako*_*rth 5

根据此站点:http : //www.installsite.org/pages/en/isnews/200108/index.htm我的自定义操作必须在After =“ InstallFinalize”之后运行,因为wix回滚会删除我的注册表导入(作为回滚)。

您可以指定在该网站上提到的位置吗?我正在查看它,但找不到您的操作应该执行的原因After="InstallFinalize"

它确实提到的是

延迟,回滚和提交自定义操作只能放在InstallInitialize和InstallFinalize之间

这是导致您出错的原因:您有一个延迟的操作,但想 installfinalize 之后运行它。

如果安装(或卸载)被中止(例如,当用户取消时),则将执行回滚脚本。我认为您可以使用进行操作Before="InstallFinalize"