【问题标题】:Windows 10 MSI Uninstall Fails with 1721Windows 10 MSI 卸载失败并出现 1721
【发布时间】: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


【解决方案1】:

我也遇到了同样的问题,最后得到了这个解决方案: Win 10 应用程序和功能卸载程序检查 WindowsInstaller 注册表值并在该值不存在时正确运行

1) 定义自定义操作

<CustomAction Id="DeleteWindowsInstallerValue" Return="ignore" Directory="TARGETDIR" Execute="deferred" Impersonate="no"
ExeCommand= "reg.exe DELETE HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[ProductCode] /v WindowsInstaller /f" />

2) 在 InstallExecuteSequence 中安排操作

<Custom Action="DeleteWindowsInstallerValue" Before="InstallFinalize"/>

洪萨

【讨论】:

  • 我手动测试了这个(即,通过 regedit),删除密钥似乎对我不起作用。但是,我发现Win10周年更新没有这个问题。我认为微软可能已经解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-29
  • 2020-06-12
  • 1970-01-01
相关资源
最近更新 更多