2014-01-24 82 views
1

我們有一個類似於Microsoft Office的產品。幾個不同的應用程序與很多共享庫。我們正在嘗試重構此產品的部署過程,因爲目前我們使用多個單獨的MSI軟件包來獨立安裝每個應用程序。雖然這是行得通的,但我們希望使用WiX引導程序捆綁這些MSI文件並創建一個安裝應用程序。目前,所有共享庫都包含在每個MSI軟件包中,這佔用了大量空間。WiX Bootstrapper項目結構

我們基本上有兩種選擇來實現這一目標:

  • 創建一個WiX的安裝程序(MSI)的項目;包括所有產品作爲個人 特點。在這種情況下,處理共享庫很簡單。但在我看來,該項目的結構變得太大了 。
  • 創建多個MSI軟件包。每個只有一個 產品並將它們捆綁到引導程序。在我看來,這個 的方法更靈活,更清晰地排列文件 和組件。但是,共享庫如何在這裏工作?他們 不應該包含在每個MSI文件中。

在WiX引導程序項目中,哪種方法是首選?

回答

0

一個有很多功能的大MSI太難支持了。

在MSI之間共享組件很容易。共享組件必須具有相同的GUID和組件鍵路徑。見details

要輕鬆實現此目標,請爲所有共享組件(每個組件或組件組在其自己的片段中)創建一個WiX庫項目。然後將庫包含到所有WiX Package項目中,並在WiX Package項目中引用其組件(或組件組)。

0

您可以將共享組件分組到多個MSI中,然後爲您的應用程序創建一個或多個引導程序。

幾個關鍵事項:

  1. MsiPackages可以進行配置,以便在引導程序安裝一個MSI,它顯示或者「程序和功能」(ARP)列表不顯示MsiPackage。

  2. MSI可能或可能有自己的用戶界面。無論如何,你可以在MsiPackage元素中禁止它。如果您真的需要在安裝過程中詢問用戶,可以在自定義引導程序應用程序中詢問,並可能將其作爲MsiProperty傳遞給MSI。

所以,我建議一個MSI爲每個應用程序和各組的共享組件。並且,爲一個或多個應用程序MSI提供一個或多個引導程序,以及他們所需的共享MSI。如果您創建一個custom bootstrapper application UI(C++或.NET),就像Visual Studio和WiX本身一樣,您的用戶可以使用一個引導程序選擇性地安裝/卸載各種應用程序。