2014-03-25 119 views
1

我有一個小問題。刪除已安裝產品的信息

在卸載過程中,哪個操作會刪除已安裝的產品信息(已通過PublishProduct操作進行了通告)?

提前致謝。

回答

9

簡短回答:InstallFinalize

龍答:它歸結爲InstallExecuteSequence在於始終運行去除的東西。我對我的blog有更深的調查。

+0

然而讀取MSI SDK一遍又一遍,直到它指給你答案不是顯而易見的另一個例子。 –

+0

我發現沒有明確的聲明在MSI SDK中可以澄清這一點,而無需測試?缺少InstallExecuteSequence中的UnpublishProduct和使用/ x進行卸載一起顯示如果連接點使用常規卸載序列,但沒有明確的說明。感謝您對Rob的調查。 –

+0

哦,謝謝。我沒想到會得到如此快速和詳細的迴應。我在Logs中發現了一些關於取消發佈的字符串。我只是被淹沒了,沒有在標準序列中找到相應的行動。現在很清楚!事實上,沒有UnpublishProduct操作。 – Nerielle

2

坦率地說,我從不使用廣告,但是如果我猜測我會說廣告序列定義了廣告期間運行的InstallExecuteSequence的一個子集,並且廣告產品的實際卸載實際上正在運行完整在卸載模式下運行InstallExecuteSequence以運行UnPublishComponents,UnPublishFeatures等標準操作......我認爲這是合乎邏輯的,因爲某些功能可能已經通過按需安裝來安裝,然後需要完全卸載來清理。

測試此方法的一種方法是在InstallExecuteSequence中插入消息框以確定運行的序列。我現在沒有所需的測試工具。再次,直到我已經用調試腳本插入到序列中進行了測試,我無法確定任何事情。

MSI SDKInstallshield's help file可能會提供一些線索。 結束語我想問問爲什麼你需要知道什麼操作會卸載產品信息?也許我們可以提供一種不同的方式來實現你想要做的事情。 MSI的大部分重點都是將大部分工作留在標準化的行動中,干涉這些過程並不好。自定義 操作只能用於無法通過標準操作實現的內容。

相關問題