【问题标题】:Issues updating an MSI through GPO (failures to overwrite/uninstall)通过 GPO 更新 MSI 的问题(覆盖/卸载失败)
【发布时间】:2025-11-28 06:35:01
【问题描述】:

提前感谢您考虑这个问题。如果存在类似的问题,我无法找到它。

问题:我们公司将应用程序打包到 MSI 中。此 MSI 在安装在任何 GPO 之外时会正确更新,阻止尝试降级(或从较高版本移动到较低版本),并且无论这些版本是多久以前创建/安装的,卸载应用程序的先前版本都不会遇到问题。例如,我们可以安装 1.2.3 版,然后安装 2.3.4 版,应用程序将正确安装而不会出现问题。但是,我们与使用 GPO 将我们的应用程序部署到数百台 PC 的客户合作。每次我们提供应用程序的更新版本时,都会指出以下内容:

在通过 GPO 安装了我们应用程序以前版本的任何机器上,无论以前的版本是什么,更新都可以成功安装而不会出现问题。

在手动安装了应用程序的计算机上(在 GPO 之外),并尝试通过 GPO 更新应用程序 - 要么安装了旧版本之外的应用程序,要么保留了注册表项以前版本的应用程序和应用程序无法正确打开/运行。在这种情况下,必须手动删除注册表项,然后从干净的机器再次尝试安装。

我们知道,在最初通过 GPO 安装应用程序的任何机器上 - 更新应用程序都没有问题。在最初未使用 GPO 安装应用程序的每台计算机上,通过 GPO 更新失败并出现上述问题之一。

我的问题是:部分通过 GPO 部分在外部处理安装是否存在技术问题? GPO 是否需要对应用程序的整个生命周期负责?或者,在手动(在 GPO 之外)安装原始版本的机器上以及最初从 GPO 内安装它的机器上更新应用程序是否是一个合理的期望?

我们知道的一个解决方案是让所有计算机管理应用程序生命周期(因为我们知道更新已经在该环境中工作),但这意味着许多计算机需要手动删除手动安装的版本- 然后通过 GPO 正确处理安装,这是一项广泛的工作。

我们非常欢迎任何解决方案、对技术文档的引用,以正式阐明此处的适当管理或期望,或信息链接。我们的研究表明,在 GPO 内管理整个应用程序生命周期是“最好的”——但我至今无法确定是否 100% 有必要这样做。

期待任何帮助。如果需要任何进一步的技术细节来帮助解决问题,请随时索取此类细节。

【问题讨论】:

    标签: windows windows-installer updating group-policy gpo


    【解决方案1】:

    如果您最终在控制面板中安装了两个版本,那么所有其他事情都是正确的,最可能的解释是您将每个用户安装升级为每个机器安装(反之亦然)。在与将其分配给用户或计算机相关的 GPO 世界中,类似的事情。这很容易通过获取详细日志并检查 FindRelatedProducts 操作来验证是否发现了另一个产品但在不同的上下文中。

    当您一直处于 GPO 模式时,我假设每个(无论是每个用户还是每台机器)都是一致的,因此升级始终有效,但它们不能跨上下文工作。

    我相信 GPO 在大多数情况下会抑制 UI,并且 UI(或 UI 序列)有时是按用户/每台机器设置的。这可能是导致它的其他原因,具体取决于 GPO 如何发布到计算机或用户。

    【讨论】:

    • 我们正在运行您所包含的场景,并且应该能够指出这是否很快回答了我们的问题。感谢您为我们指明了正确的方向,这种情况是否已经帮助我们理解了需要以一种或另一种方式对每个用户或每个机器配置进行考虑。
    • 这确实是我们寻找的正确方向。非常感谢您的帮助!我们的问题只是对客户如何在其 GPO 中使用安装程序的误解。到目前为止,确定他们是否需要为每个用户或每台机器配置 MSI 已经解决了我们看到的各种奇怪问题。