2012-05-22 314 views
2

這是我第一次嘗試使用Windows安裝程序來構建安裝程序包(我們的客戶不希望使用Wix,我已廣泛使用它)。目前,我有一個按預期構建和工作的MSI。但是,我需要爲我編寫的用於其他機器上的程序所需的SDK添加一個安裝程序。我已經將第二個安裝程序(也是MSI)添加爲自定義操作,該操作根據是否在安裝過程中勾選複選框來執行。問題是,當第二個安裝程序執行時,出現錯誤,系統上已經安裝了一個安裝程序,安裝無法繼續。我怎樣才能解決這個問題?自定義操作設置爲在安裝期間運行。如何在MSI安裝程序中搭載MSI安裝程序

在此先感謝您解決此問題的任何幫助。

+0

你用什麼工具創作MSI?這將有助於給你一個具體的答案。 –

+0

我正在使用安裝項目在VS2010中構建這個(對不起,這就是我說的Windows Installer時的意思)。 –

+0

看看Codeplex'ISWIX'上的我的FOSS標準。您可以使用它來創作wxs合併模塊(文件和文件夾設計器),然後在wxs產品中使用該模塊。這允許客戶拖放更改,但仍需要學習wix才能進行其他更改。基本上覆蓋了90%。 –

回答

1

安裝項目因其創作過程中的限制和質量而臭名昭着。 MSFT已經將它們從Visual Studio 11中刪除,並用InstallShield Limited Edition替換它們。

最好的辦法是查看安裝項目使用的setup.exe引導程序。查看驅動它們的XML格式,並使您的SDK安裝程序成爲一個簡單的靜默安裝程序,可以在調用您正在使用的主MSI之前由此基礎結構驅動。

InstallShield(安裝先決條件和套件安裝程序)和WiX(燒傷)對於這種情況都是更強大的工具。

2

您不能同時安裝兩個MSI軟件包,更具體地說,您不能在另一個MSI軟件包的InstallExecuteSequence期間啓動另一個MSI。但是,如果您在用戶界面序列中觸發自定義操作,這是可行的。

+0

通過在UI序列中觸發它意味着什麼?我試圖在安裝階段和提交階段運行自定義操作。我唯一的其他兩個選擇是回滾和卸載 –

+2

這是一個壞主意。首先,假設你的工具可以創作它不能做到的東西,那麼你會限制對無提示安裝的支持,因爲在/ QN或/ QB期間沒有處理UI序列。它在/ QR中處理,但這是一個完整的黑客。您必須對輸出MSI進行大量的構建後操作才能注入您需要安裝項目不支持的創作。 –