2011-04-18 144 views
2

有人問了一個非常類似的問題,但迴應無濟於事。這將是非常有價值的,如果有一個知識淵博的答案...WiX EmbeddedChainer無法卸載

我已經創建了一個使用Windows Installed 4.5的WiX項目。我在MsxEmbeddedChainer Table的wxs文件中包含了一個EmbeddedChainer元素引用,它允許多包安裝。

<EmbeddedChainer Id="Chainer" FileSource="InstallMSI.exe" /> 

我環顧了整個網絡,最終找到了一個單獨的帖子,顯示了這個人如何檢索內部交易的句柄。現在,我的安裝程序正確調用我的可執行文件來處理鏈接的MSI。但是,卸載不起作用。請注意,沒有上述的EmbeddedChainer元素,卸載工作正常。

我讀過所有可用的文檔,找不到一個示例項目。

任何人都可以提供一些指導來創建基於WiX的多MSI安裝包嗎?

+0

您能否給我們提供更多的細節?什麼在卸載過程中不起作用? – 2011-04-18 19:44:15

回答

1

的WiX的文檔EmbeddedChainer指MSDN文檔MsiEmbeddedChainer Table,這反過來又指導您參考Monitoring an Installation using MsiSetExternalUI

而不是找一個WiX的具體例子,我建議找任何 MSI例子。從那裏可以很容易找出你的WiX出錯地點。

+0

真的嗎?那麼,怎麼樣? – user713836 2011-04-21 03:47:58

+0

我在Windows SDK中快速查看,但找不到任何東西,對不起:( – saschabeaumont 2011-04-26 22:56:48

1

相同的嵌入式chainer可執行文件Main()將在卸載時再次被調用。爲了讓chainer代碼檢測是否安裝或卸載,父安裝程序應將參數傳遞給chainer Main函數。卸載時,父安裝程序將[REMOVE]屬性設置爲「REMOVE = ALL」或「REMOVE = feature1,feature2」。將EmbededChainer/@ CommandLine設置爲「REMOVE = [REMOVE]」,並在chainer代碼的Main中解析參數列表並將數據傳遞給MsiInstallProduct()作爲參數。當MsiInstallProduct()看到參數「REMOVE = ALL」時,子MSI將執行卸載。