2013-11-01 59 views
0

我想创建一个使用WIX的独立静默卸载程序,我可以发送给特定人员以获得支持目的,当卸载程序无法正常工作时,可以通过双击执行卸载产品机器并不再存在(某些用户使用其他工具手动删除)。我有一个.wxs文件,它使用与以前安装的程序相同的产品ID和软件包ID,如果我从msiexec/x运行,它会完美卸载以前安装的产品。双击它(所有这些用户都可以这样做)然而运行安装,而不是卸载。我尝试添加独立的WIX卸载程序

<Property Id="REMOVE" Value="ALL"/> 
<Property Id="ACTION" Value="UNINSTALL"/> 

,并确保所有InstallExecuteSequence动作不使用“安装”检查,但该产品仍安装成功运行后,日志文件显示它仍在执行操作安装:

MSI (c)(A8:F8)[15:42:08:324]:财产变更:加入ACTION财产。它的值是'INSTALL'。 MSI(c)(A8:F8)[15:42:08:324]:注意:1:2205 2(A8:F8)[15:42:08:32] :3:ActionText 操作15:42:08:INSTALL。 行动开始15:42:08:INSTALL。

有没有办法强制.msi文件执行卸载而不使用命令行或添加/删除程序条目?我已经看过有关使用ARPSYSTEMCOMPONENT的条目,但没有足够的信息来执行此操作。

+0

[ARPSYSTEMCOMPONENT](http://msdn.microsoft.com/en-us/library/aa367750%28v=vs.85%29.aspx)与Windows Installer的行为无关。它所做的就是向ARP(程序和功能fka添加/删除程序)建议它不显示Windows安装程序在安装时创建并在卸载时删除的卸载条目。 –

回答

0

我不这么认为。当然,你可以使用exe来做到这一点。我还强烈建议您使用原始的msi文件,而不是使用相同的产品代码创建不同的msi。

对于exe文件,您可以使用任意数量的chainer/bundler/downloaders。有NSIS和WiX自己的Bootstrapper,甚至WinZip。

您还应该注意,运行卸载命令的许多软件包管理系统将首先运行安装命令,如果有任何不妥之处。理论是卸载程序不能正常运行,除非存在由安装放置的关键数据。 (E.G.,WPKG)。对于Windows安装程序,这通常不适用,因为它的数据对用户是隐藏的。但是,如果他们发现并损坏了它,重新安装和/或使用原始msi的全新副本进行修复可能会完成这项工作。