2017-08-03 62 views
1

我們有一個burn bootstrapper軟件包,它安裝了一系列先決條件,啓動我們的主要安裝,然後默默運行幾個擴展安裝程序。我們最近不得不在安裝包中添加一些新組件,這兩個組件都需要從安裝中早期推出的其他產品收集的配置信息。所以基本上:從捆綁的MSI設置一個WiX刻錄bootstrapper變量?

  1. 軟件包1已安裝並呈現一個用戶界面。它要求服務用戶和密碼。
  2. 包2已添加到我們的包中。它還需要服務用戶和密碼,與包1相同。
  3. 包3已添加到我們的包中。它還需要服務用戶和密碼,與包1相同。

我們希望不必讓用戶在三個不同的時間配置相同的信息。我們看到的一個可能的解決方案是編寫我們自己的WiX引導程序應用程序,但似乎相當繁重。我們考慮過的另一種可能性可能是有一種方法可以讓程序包調用一個自定義操作來設置刻錄變量的值。然後,我們可以調用包2和3的安裝程序,並使用傳入的刻錄變量作爲靜默安裝命令行的一部分。有沒有辦法做到這一點?如果是這樣,它會涉及什麼?

回答

0

我們最終找到了解決方案,利用了Neil Sleightholm的extended bootstrapper application。這允許在引導程序中創建自定義操作。我們創建了一個WiX刻錄自定義動作,在OnDetect中啓動一個單獨的線程。該線程打開一個命名管道,並偵聽要通過的變量名稱和值對:當它獲得這樣一對時,它使用引擎的SetVariableValue命令設置值。在被調用的安裝中,我們創建了一個自定義操作,該操作連接到命名管道,並根據收集的內容發送變量名稱和值。變量的新值成功傳遞給後續安裝,但是在啓動任何安裝之前計算安裝條件,因此這些值不能使用其值由安裝設置的變量。