2009-11-13 56 views
6

我想讓我的用戶在一臺PC上安裝我的應用程序的多個副本;一個用於測試目的,另一個用於生產系統。安裝是直接在Visual中創建的MSI文件  Studio   2005.有什麼方法可以啓用它嗎?如何讓用戶安裝MSI文件的多個副本?

如果需要,我可以直接使用其他工具來生成安裝,甚至可以直接使用Ocra.exe,但現在至少InstallShield是不可能的。

+2

不要在生產服務器上測試;或者:不要從測試服務器上運行。 – 2011-08-26 21:21:47

+2

在完美的世界裏,客戶會做什麼。但是在一個世界上,客戶很小,想要最小化他們必須管理的服務器的數量,在同一臺服務器上運行並不是不合理的。 – 2011-09-08 18:09:46

+0

沒有人甚至在這裏談論服務器。他在談論用戶在他們自己的PC上安裝兩個版本的產品。 – BrainSlugs83 2016-10-06 20:27:44

回答

5

正如slugster所述,你需要更新屬性表中的ProductCode。您還需要更改Summary Stream Information中的軟件包代碼。 修改MSI的最簡單方法是使用VBScript自動化。

Windows安裝程序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

+0

只是更新產品代碼似乎不夠。當我這樣做並運行新的MSI時,它會提示修復/刪除以前的實例。我想要它安裝一個新的實例。任何想法還有什麼我需要改變以獲得這個工作? – 2009-11-22 18:14:35

+0

你的確應該更新軟件包代碼。看到我上面更新的答案。 – KMoraz 2009-11-23 14:23:41

2

您需要創建一個轉換(.mst),它在運行之前應用於MSI文件。這種轉換可以做各種事情,包括更改產品代碼。正是這種產品代碼的更改允許安裝同一產品的多個實例,因爲對於Windows安裝程序,它看起來是不同的產品。

此轉換功能是Windows安裝程序引擎的本機特性。換句話說,您可以自己編寫這些文件,像InstallShield這樣的產品只是讓它更容易。其他MSI創作產品可能具有相同的功能,因此您可以購物,並且Windows Installer SDK中可能會有一個工具來實現它(我沒有真正看過,只是使用InstallShield)。

您可以使用Windows Installer Guide, Database Transforms爲您開始。