2011-10-04 100 views
1

我已經在Flexara論壇上提出了這個確切的問題,但直到今天還沒有迴應,所以我想在此問一下。創建調用另一個msi安裝的基本MSI

我們目前有一個運行良好的InstallScript項目。由此產生的設置可以無人值守/安靜地進行。 在這個設置中,我們有一些功能並調用一些第三方安裝(這是運行我們的軟件的先決條件)。 但是,我們有客戶需要一個MSI文件,因此我們訴諸基本MSI項目類型。

該設置沒有太多麻煩(我對InstallShield相當新),我可以從這個項目生成一個.exe和.msi。 但是,我留下的唯一問題是調用其中一個第三方安裝程序。 該第三方安裝程序(使用NSIS製作)輪番調用另一個基於MSI的安裝程序。

這會導致錯誤1500 - 在另一個運行時無法運行msi類型安裝。

我已經嘗試將CA(用於調用第三方安裝程序)作爲第一個操作和最後一個,但沒有成功。 在訴諸更多非傳統方案之前(例如,在安裝程序完成後運行的Windows任務管理器上創建任務,或者下次重新引導並強制重新引導時 - 我們的客戶不喜歡這些任務)或者我們不捆綁'錯誤'安裝程序(我們真的希望能夠交出一個intaller而不是多個),我想我會問你的意見。

我試過尋找互聯網上各處的解決方案,但是由於錯誤的關鍵詞我失敗了,或者我只是沒有絆倒在正確的職位。

是否有任何選項可供我們創建一個能夠調用此第三方安裝程序的MSI安裝程序(它將調用msi安裝程序)?

+0

實際上,大多數想要原始MSI的人都希望通過這種方式來部署它。因此通常他們可以被指定爲安裝依賴關係的一個單獨步驟。 –

回答

1

由於一個EXE引導程序是不能接受的,只有一個解決辦法:

  • 店的前提安裝在Binary表微星的
  • 創造一些custom actions從該表中提取出來,並將其發佈
  • 安排它們在InstallUISequence,例如就在進度對話框之前
  • 使用searches檢測是否安裝了先決條件
  • 調理您的自定義操作與搜索結果

基本上,你需要在安裝過程中用戶界面啓動它們。如果在InstallExecuteSequence中啓動它們,它將不起作用。

我不認爲基本的MSI項目支持這一點,但它可能會支持更先進的項目類型。其他設置創作工具爲此提供直接支持。

+0

我們希望安裝程序也可以運行沉默,如果可能的話,只有在設置了某些屬性的情況下(在命令行上,或者始終在完全UI模式下運行)。我想這些要求使它不可能? – BCL

+0

是的,Windows安裝程序不支持此操作。 –

+0

還有鏈接。如果在Windows Installer 4.5或更高版本上運行,引導程序或MsiEmbeddedChainer表可以啓用此功能,而後者僅向用戶提供MSI。但後者在終端服務下的所有情況下都無法正常運行。 –

0

您可以嘗試InstallShield的「Chained .msi包」功能。