2010-09-07 69 views
1

我有很多解決方案,每個解決方案至少包含一個項目(讓他們只是Windows應用程序項目)。然後,我爲每個Windows解決方案生成了一個安裝程序(msi)解決方案。所以,我有myWindowsSolution1 & myInstallerForMyWindowsSolution1(file1.msi),myWindowsSolution2 & myInstallerForMyWindowsSolution2(file2.msi)...多個安裝在一個安裝項目

現在,他們希望把安裝完全進入1個安裝程序。是否有可能做到這一點,而不會失去自動回滾?我試過是使通過每個安裝程序文件循環的應用程序,並執行該文件,問題在於,如果其中一個出現故障,已經裝好的那些將保持安裝:

for (int i = 0; i < installers.Length; i++) { 
    Process p = Process.Start(installers[i]); 
    p.WaitForExit(); 
} 

我嘗試也把每MSI文件(以前轉換爲EXE)到myInstallerForMyWindowsSolution1,CustomActions-> Install下,但我又失去了回滾。

將所有代碼合併爲1只有非常大的解決方案纔是最後一個選項。

在此先感謝。

回答

3

一種方法是製作一個包含所有單獨設置MSI的大型「包裝」安裝。你提到你試過類似的東西,說:「我也嘗試將每個msi文件(以前轉換爲exe)放到myInstallerForMyWindowsSolution1中,在CustomActions-> Install下,但是我又失去了回滾。

以下是事情:您不僅需要爲每個安裝創建自定義操作,還需要創建自定義操作以卸載應用程序。因此,如果在安裝期間其中一個自定義操作返回失敗代碼,則MSI將從回滾過程開始,這將包括卸載任何嵌入的MSI。確保安裝自定義操作的失敗代碼觸發回滾,並且卸載自定義操作的失敗代碼不會。

+0

謝謝ewall ...可悲的是,自定義操作的東西並不是如我所願的那樣「打開」,所以我嘗試了另一種方法,無論如何感謝 – 2010-09-14 18:13:01