独立WIX卸载程序

独立WIX卸载程序,wix,installation,uninstallation,Wix,Installation,Uninstallation,我想使用WIX创建一个独立的静默卸载程序,我可以将其发送给特定人员以获得支持,当卸载程序在其机器上无法正常工作且不再存在时(某些用户使用其他工具手动删除内容),可以双击该卸载程序来执行产品的卸载。我有一个.wxs文件,它使用与以前安装的程序相同的产品id和软件包id,如果从msiexec/x运行,它将完全卸载以前安装的产品。双击它(这是所有这些用户都可以做的),但是运行的是安装,而不是卸载。我试着加上 <Property Id="REMOVE" Value="ALL"/> <P

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

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

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

属性更改:添加操作属性。其值为“安装”。 MSI(c)(A8:F8)[15:42:08:324]:执行操作:安装 MSI(c)(A8:F8)[15:42:08:324]:注:1:22052:3:ActionText 操作15:42:08:安装。 操作开始15:42:08:安装


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

我不这么认为。当然,您可以使用exe来执行此操作。我还强烈建议您使用原始msi文件,而不是使用相同的产品代码创建不同的msi

对于exe,您可以使用任意数量的链接器/绑定器/下载器。有NSIS,还有WiX自己的引导程序。。。甚至WinZip

您还应该注意,如果出现任何问题,许多运行卸载命令的软件包管理系统将首先运行install命令。其原理是,除非安装所放置的关键数据存在,否则卸载程序无法正常运行。(例如WPKG)。对于Windows Installer,这通常不适用,因为它的数据对用户隐藏。但是,如果他们发现了它并损坏了它,重新安装和/或使用原始msi的新副本进行修复就可以了

与Windows Installer的行为无关。它所做的只是建议ARP(程序和功能fka添加/删除程序)不要显示Windows Installer在安装时创建的卸载条目,并在卸载时删除。