0

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

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

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

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

有没有办法强制 .msi 文件在不使用命令行或添加/删除程序条目的情况下执行卸载?我已经看到有关使用 ARPSYSTEMCOMPONENT 的条目,但没有足够的信息来做到这一点。

4

1 回答 1

0

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

对于 exe,您可以使用任意数量的链接器/捆绑器/下载器。有 NSIS 和 WiX 自己的 Bootstrapper,……甚至是 WinZip。

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

于 2013-11-01T23:26:49.130 回答