如何允许用户安装MSI文件的多个副本?

时间:2009-11-13 22:09:29

标签: windows-installer

我想允许我的用户在一台PC上安装我的应用程序的多个副本;一个用于测试目的,一个用于生产系统。安装是直接在Visual Studio 2005中创建的MSI文件。有没有办法启用它?

我准备使用其他工具来生成安装,或者甚至直接使用Ocra.exe,但是现在至少InstallShield是不可能的。

3 个答案:

答案 0 :(得分:5)

正如slugster所述,您需要更新Property表中的ProductCode。您还需要更改Summary Stream Information中的包裹代码。 修改MSI的最简单方法是使用VBScript自动化。

Windows Installer SDK包含有用的scriptsWiRunSQL.vbs,WiSumInf.vbs),可以按如下方式修改您的MSI:

更改产品代码

cscript WiRunSQL.vbs your.msi "UPDATE Property SET Value='{AAAAAAAA-BBB1-CCCC-DDDD-EEEEEEEEEEEE}' WHERE Property='ProductCode'"

要更改包裹代码:

cscript WiSumInf.vbs your.msi 9={AAAAAAAA-BBB2-CCCC-DDDD-EEEEEEEEEEEE}

请注意,新代码应该是有效的唯一GUID

答案 1 :(得分:2)

您需要创建一个转换(.mst),它在运行之前应用于MSI文件。此转换可以执行各种操作,包括更改产品代码。正是这种产品代码的更改允许安装同一产品的多个实例,因为对于Windows安装程序,它看起来是一个不同的产品。

此转换功能是Windows安装程序引擎的原生功能。换句话说,您可以自己创作这些文件,InstallShield等产品可以让您更轻松。其他MSI创建产品可能具有相同的功能,因此您可以随处购物,并且Windows Installer SDK中可能有一个工具可以执行此操作(我实际上看不到,我只使用InstallShield)。

您可以使用 Windows Installer Guide, Database Transforms 来帮助您入门。

答案 2 :(得分:1)

请参阅Installing Multiple Instances of Products and Patches上的Microsoft文档。

上个月,有人试图在同一台服务器上使用WiX安装多个网站时,有人试图这样做,从内存开始讨论on the WiX list。如果你能找到相关的主题,应该有更多的反应,而不是我的那些:)