【发布时间】:2016-01-29 15:37:47
【问题描述】:
我有一个使用 Wix (3.10) 安装脚本的 Excel 插件。安装工作正常。但是,如果用户尝试通过 System | 删除加载项应用程序和功能,失败并显示“此 Windows Installer 程序包存在问题。无法运行完成此安装所需的程序。”查看卸载日志,我看到了:
Error 1721. There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor. Action: _BDF865EC_34B3_4B29_986C_98D6EC1A9807, location: C:\Windows\Installer\MSI2FE4.tmp, command: /uninstall="C:\Users\Windows10\AppData\Local\myCompany\myProduct\myAddin.dll" /privileges=user
它犹豫的动作是这样的:
<CustomAction Id="_BDF865EC_34B3_4B29_986C_98D6EC1A9807" BinaryKey="adxregistrator_exe" Execute="deferred" ExeCommand='/uninstall="[TARGETDIR]$(var.myProject.TargetFileName)" /privileges=user' Impersonate="yes" />
但是,如果我重新运行我的安装程序并选择“删除”,它会很好地卸载。此外,如果我从命令行运行卸载(使用此产品注册表项中的 msiexec 命令),它也可以正常卸载。
还有:
- 这只发生在 Windows 10 中。旧版本的 Windows 没问题。
- 我已经在多台机器上进行了复制,包括全新安装。
- 我有一个较旧的安装程序(VS2010 安装项目),该安装程序也会出现问题。
- 我在不同的高度尝试过使用 UAC,没有区别。
- 我在这里看到了其他关于将 Impersonate 设置更改为“no”的帖子,没有区别。
在我看来,新的 Windows 应用程序和功能 应用程序存在问题,但我尚未在 Microsoft 论坛上找到任何内容。
更新:
Wix 用户发布了此消息:DTF Bug with new Windows 10 Apps and Features。此外,我们尝试了各种命令(认为这是 UAC 问题),但它们都不起作用,甚至“内置”Windows 命令也失败了。
【问题讨论】:
-
乍一看这应该永远不会起作用,因为 TARGETDIR 在安装和卸载之间不会被保留,除非您明确保存和恢复它。使用 [#file-key] 作为磁盘上可执行文件的目标路径会更安全。理想情况下,您还应该破译注册者所做的事情,然后将这些条目放入(例如)注册表表中。
-
您好,当我尝试使用 Windows 应用程序和功能应用程序卸载我们的软件时,我遇到了完全相同的问题。我在删除依赖于已安装文件的文件之前调用自定义操作。有问题的文件在目标系统上。当我通过程序和功能卸载时,一切正常。
标签: wix windows-10 uninstallation