【问题标题】:How to avoid multiple installation/repair of same product using MSI Installer如何避免使用 MSI Installer 多次安装/修复同一产品
【发布时间】:2013-05-07 12:33:58
【问题描述】:

我想为我的应用程序制作一个 MSI 安装程序,我还需要通过 Active Directory 软件部署远程部署此应用程序。我还需要确保该应用程序没有安装多次,并且不允许进行任何修复或修改。为了确保这一点,我在我的安装程序中制作了 ARPNOREPAIR=1。如果我尝试手动安装多个实例,甚至静默安装,这工作得很好。但是当我使用活动目录进行操作时遇到了问题。它总是允许多次安装,这会导致安装状态损坏。我想有什么方法可以确保即使版本不同也不会安装应用程序的多个实例。

谢谢

【问题讨论】:

  • 你真的是指多个实例吗?这是一个高级创作场景,需要一段时间才能完成。您的 ALLUSERS 属性设置为什么?我猜你的意思是说它在每个用户的上下文中一遍又一遍地为不同的配置文件安装。

标签: windows active-directory windows-installer gpo


【解决方案1】:

阻止安装 .msi 包的所有版本的最简单方法是使用UpgradeCode 提供的信息。您可以通过添加以下内容(使用 WiX 工具集语法)来查看相关包的其他版本:

<Upgrade Id='PUT-UPGRADE-CODE-HERE'>
   <UpgradeVersion OnlyDetect='yes' Property='FOUND_RELATED_PACAKGE' />
</Upgrade>

这会将一个名为FOUND_RELATED_PACKAGE 的属性设置为来自已安装包的ProductCodes 列表。然后你可以像这样阻止安装(使用 WiX 工具集语法):

<Condition Message='Another version of [ProductName] is already installed.">
    Installed OR NOT FOUND_RELATED_PACAKGE
</Condition>

最后,阻止 .msi 包的修复是非常危险的。有许多情况(包括较小的升级和修补)依赖于对包的修复工作。让您的安装包具有修复能力会更好,因为它对事情的工作方式至关重要。

祝你好运!

【讨论】:

  • 嗨 Rob,我已经提出了所有这些条件,但我的问题是,当我使用 Active Directory 组策略安装此应用程序时,这些检查不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2015-05-11
  • 1970-01-01
相关资源
最近更新 更多