我想为我的应用程序制作一个MSI 安装程序,我还需要通过活动目录软件部署远程部署这个应用程序。我还需要确保该应用程序没有安装多次,并且不允许进行任何修复或修改。为了确保这一点,我在我的安装程序中设置了ARPNOREPAIR=1。如果我尝试手动安装多个实例,甚至静默安装,这会很好。但是当我使用活动目录进行操作时,我遇到了问题。它总是允许多次安装,这会导致安装状态损坏。我想有什么方法可以确保即使版本不同也不会安装应用程序的多个实例。
谢谢
我想为我的应用程序制作一个MSI 安装程序,我还需要通过活动目录软件部署远程部署这个应用程序。我还需要确保该应用程序没有安装多次,并且不允许进行任何修复或修改。为了确保这一点,我在我的安装程序中设置了ARPNOREPAIR=1。如果我尝试手动安装多个实例,甚至静默安装,这会很好。但是当我使用活动目录进行操作时,我遇到了问题。它总是允许多次安装,这会导致安装状态损坏。我想有什么方法可以确保即使版本不同也不会安装应用程序的多个实例。
谢谢
阻止安装 .msi 包的所有版本的最简单方法是使用 .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 包的修复是非常危险的。有许多情况(包括较小的升级和修补)依赖于对包的修复工作。让您的安装包具有修复能力会更好,因为它对事情的工作方式至关重要。
祝你好运!