如何避免使用MSI Installer多次安装/修复同一产品

时间:2013-05-07 12:33:58

标签: windows active-directory windows-installer gpo

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

由于

1 个答案:

答案 0 :(得分: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包是非常危险的。有许多情况(包括次要升级和修补)依赖于修复工作包。让你的安装包具有修复能力是更好的,因为它对于工作方式是如此重要。

祝你好运!