我有一個WiX安裝程序項目,它利用自定義對話框來詢問參數以更新web.config文件並在安裝時運行數據庫腳本。一切工作正常,應用程序已安裝並正確運行。在WiX卸載中停止顯示自定義對話框
但是,我卸載軟件時也顯示自定義對話框,它肯定不需要(因爲我沒有更新web.config文件)。
當應用程序正在卸載時,是否有辦法抑制自定義對話框?
(我也應該刪除我安裝的sql procs,在卸載的時候,但這是在這個問題之外)。
我有一個WiX安裝程序項目,它利用自定義對話框來詢問參數以更新web.config文件並在安裝時運行數據庫腳本。一切工作正常,應用程序已安裝並正確運行。在WiX卸載中停止顯示自定義對話框
但是,我卸載軟件時也顯示自定義對話框,它肯定不需要(因爲我沒有更新web.config文件)。
當應用程序正在卸載時,是否有辦法抑制自定義對話框?
(我也應該刪除我安裝的sql procs,在卸載的時候,但這是在這個問題之外)。
您的問題的解決方案是條件自定義操作與條件(不刪除=「所有」)。這將使該操作在全新的安裝和維護安裝上運行,但不會在卸載時運行。如果您不需要在維護安裝上運行,但僅在全新安裝時運行,則可以將條件設置爲:(未安裝AND NOT(REMOVE =「ALL」))。 MSI特性的完整列表和簡要描述在這裏:http://msdn.microsoft.com/en-us/library/aa370905(VS.85).aspx。
MSI文件中的排序和自定義操作邏輯非常複雜。只要有可能就可以避免自定義操作。
還有更多 - 所有MSI文件都內置了靜默安裝支持。這意味着可以跳過整個GUI序列,並且無需用戶交互即可安裝MSI文件。這是通過SMS/SCCM或其他部署機制進行企業部署的關鍵功能。安裝程序在靜默模式下運行時顯示自定義對話框違反了此基本MSI功能。您可以通過根據屬性UILevel:http://msdn.microsoft.com/en-us/library/aa372096(VS.85).aspx正確調整對話框的顯示來解決此問題。只是爲了讓事情變得有趣和令人困惑Microsoft在安裝過程中定義了4個級別的GUI,包括完全無聲,通過各種選項(如進度條等)......請參閱鏈接瞭解詳細信息。
我可以在這裏添加很多有關MSI序列,條件,自定義操作和類似的細節,但它不會回答你的問題。請添加任何後續問題。
維克斯片段顯示自定義操作的創建和插入InstallExecuteSequence:
<!--Custom Action Sample Section-->
<Binary Id='VBScriptCustomAction.vbs' SourceFile='VBScriptCustomAction.vbs'/>
<CustomAction Id='test' BinaryKey='VBScriptCustomAction.vbs' VBScriptCall='Hello' Return='ignore'/>
<InstallExecuteSequence>
<Custom Action="test" Sequence='4111'><![CDATA[NOT REMOVE~="ALL"]]></Custom>
</InstallExecuteSequence>
<!-- End of Custom Action Sample Section-->
我是新來維克斯。我無法理解你的意思。我沒有安裝自定義操作,我正在定義UI元素以顯示自定義屏幕以獲取數據以更新web.config。然後使用屬性(例如[DATABASENAME])更新web.config中的connectionString,使用WiXUtilExtension中的util:XmlFile ...命令。 – 2009-10-07 04:19:32