2015-01-15 220 views
1

我使用MSI安裝程序進行我的項目安裝。該項目是一個PowerPoint AddIn。 要運行我的項目,我需要安裝第三方軟件包(exe文件)。正如我調查了,這個包在我的電腦上安裝:在MSI安裝程序中安裝另一個軟件包

  • 在用戶的應用程序文件夾中的DLL文件
  • 一些dll文件在C:\ WINDOWS \裝配\ GAC_MSIL \

說回我的MSI安裝程序。有兩種解決方案:

1)將上述所有包的dll文件包含到我的項目中,然後像平常一樣創建一個MSI安裝程序。

我總是得到如下錯誤:「檢索具有CLSLD {38 ...}的組件的COM類工廠失敗,原因是出現以下錯誤80 ...找不到特定模塊從HRESULT異常:0X80 ...「

2)在MSI安裝程序中創建一個自定義操作,並嘗試在安裝我們的項目之前安裝該軟件包。

而當卸載項目時,我們需要先卸載軟件包。

其他解決方案?或任何建議? 感謝

注:我使用PowerPoint 2010,2013,VS終極2013年,VSTO,C#

回答

1

你進去看了Wix Toolset?具體而言,Wix Bootstrapper。引導程序允許您構建一個可以在安裝其他MSI之前首先安裝其他MSI的安裝。我們將其用於多個項目,並且效果良好。

+0

與MSI安裝程序,我可以沒有使用引導程序相同的結果。但是,我想知道爲什麼第一個解決方案不能解決問題。始終如上獲取錯誤 – chipbk10

+1

除非您還註冊加載項,否則第一種解決方案不起作用。簡單地複製這些DLL是行不通的,除此之外,這就是爲什麼引導程序可能是一個更好的主意 - 它允許你在你之前運行其他MSI。 – landoncz

1

第一個問題「檢索COM類工廠...」只是表明你沒有得到正確的註冊,因爲你沒有說你嘗試了什麼COM註冊(如果有的話),這是不可能的來診斷它。

您無法創建另一個自定義MSI設置並將其作爲您的設置中的自定義操作進行安裝。首先,它不起作用,因爲您不能擁有遞歸MSI設置,這也適用於卸載,因此您不能讓安裝調用自定義操作來卸載其他產品。

最好的辦法是爲加載項創建一個合併模塊並將其包含在您的產品中。要問的問題是加載項是否是可能作爲獨立產品發佈的獨立產品。如果是,則將其設爲MSI並使用WiX Burn/Bundle方法。如果不是,則將其作爲可包含在任何MSI中的合併模塊。無論哪種方式,如果Dll正在進入MSI或MSM,則需要確定COM註冊。