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

时间:2014-10-30 19:12:14

标签: wix wix-extension wix3.8

我正在使用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

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

  

根据此网站:http://www.installsite.org/pages/en/isnews/200108/index.htm我的自定义操作必须运行在=&#34; InstallFinalize&#34;因为wix回滚会删除我的注册表导入(作为回滚的一部分)。

您能指定该网站上提到的内容吗?我正在查看它,但无法找到您的操作应与After="InstallFinalize"一起运行的原因。

它提到的是那个

  

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

出现错误的原因是:您有延迟操作,但希望在 installfinalize后运行

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