2013-09-23 28 views
0

除了部署幾個文件(放在.MSI機櫃本身中)之外,MSI還需要生成一個在Visual C++中開發的自定義exe文件。這個自定義可執行產卵需求是通過在MSI安裝程序中實現一個自定義腳本來實現的。即使MSI的自定義腳本成功生成自定義可執行文件,由於目標系統上缺少必要的系統庫,操作系統無法運行該exe文件。安裝VC++ Redistributable Kit正在目標系統上部署必要的系統庫,因此該工具包應作爲目標系統中的已安裝應用程序提供,以便自定義exe可以正確執行。 由於此VC++ Redist套件是此自定義可執行文件的先決條件,因此我們正在考慮在產生自定義exe文件之前從MSI安裝程序本身安裝此VC++ Redist套件。我們通過用於產生自定義可執行文件的相同自定義腳本成功地產生了VC++ Redist Kit。完成MSI執行後,我們可以在「添加/刪除程序」列表中看到此VC++ Redist套件。但問題是,即使安裝了此工具包,自定義可執行文件也不會識別該工具包的存在,因此自定義可執行文件仍無法運行。 您可以引導我們在MSI部署期間安裝應用程序,並在安裝完成後立即使安裝的應用程序處於活動狀態(無需等待直至完成MSI執行),以便MSI安裝程序的其他子進程能夠識別應用存在?從MSI安裝VC++可分發工具包

+0

幾乎無法診斷這個問題的不幸事件。總是傾向於用/ MT來構建這些helper exe程序,所以你不在乎。 –

回答

0

要安裝MSI的可再發行組件,建議使用use merge modules。就像你所做的那樣,這比自定義動作更穩定。

要讓新安裝的應用程序識別可再發行組件,請確保使用延遲自定義操作在安裝過程結束時或非常接近時啓動它,以便合併模塊在系統中註冊的DLL可用。

有沒有辦法(推薦)從MSI軟件包中提前在機器上使用可重新分配。您可以將它們作爲先決條件安裝,然後再啓動主MSI,並使用引導程序,但這意味着您將EXE作爲輸出軟件包,捆綁了必備軟件和主MSI軟件包。

+0

我嘗試在最後啓動自定義操作。但事情沒有奏效。我正在使用MakeMSI來構建安裝程序。 –

+0

您是否將自定義操作設置爲執行延期? http://msdn.microsoft.com/en-us/library/windows/desktop/aa368268(v=vs.85).aspx –

+0

是的,我做了推遲的行動。 –