【发布时间】:2015-06-21 05:09:49
【问题描述】:
我有一套应用程序的基于 WiX 的安装程序。它取代了一堆旧的安装程序,其中套件中的每个应用程序都有自己的基于 InstallShield 的安装程序。
我希望 WiX 安装程序能够找到任何旧的基于 InstallShield 的安装并运行它们各自的卸载程序。我试过这个:
<Property Id="OLD_APPLICATION_A_UNINSTALLSTRING">
<RegistrySearch Id="OldAppAUninstallString" Root="HKLM"
Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{$(var.OldAppAInstallerGUID)}"
Name="UninstallString" Type="raw"/>
</Property>
<InstallExecuteSequence>
<Custom Action="UninstallAppA" Before="InstallInitialize">
NOT Installed AND OLD_APPLICATION_A_UNINSTALLSTRING
</Custom>
</InstallExecuteSequence>
<CustomAction Id="UninstallAppA" Directory="System32"
ExeCommand="[OLD_APPLICATION_A_UNINSTALLSTRING] /qn" Execute="immediate" Return="check"/>
这会导致安装失败和错误状态 1618:“另一个安装已在进行中。完成该安装,然后再继续此安装。”只有另一个安装正在进行中,这个安装...
有没有办法从 WiX 中的安装程序运行卸载程序?
我也有一个引导程序,也许我应该从那里以某种方式运行这些卸载。但我想尽可能晚地运行它们,以防用户取消安装。如果发生这种情况,如果旧的应用程序套件消失了,那看起来不太好......
【问题讨论】:
标签: wix windows-installer