![](/img/trans.png)
[英]MSI (created from WIX)- Uninstall application is not removing the root installation folder
[英]MSI generated through WIX does not delete application root folder on uninstall
我無法讓MSI刪除我的根應用程序文件夾。 除根文件夾外,所有文件在卸載時均已正確刪除。 MSI由WIX Toolset生成。 奇怪的是,這僅發生在我們的構建服務器發出的MSI上。 在我的本地計算機上生成的MSI可以正常工作,並且可以正確清理應用程序文件夾。 我以詳細模式運行了卸載,但是找不到任何令人震驚的東西。
過去,甚至我的本地計算機MSI都不起作用。 但是我在.wixproj中添加了KeepEmptyDirectories =“ true” GenerateGuidsNow =“ true”-如果這是有用的信息。 如何解決此問題? 我應該尋找什么可能的危險信號?
我會做幾件事:
對組件規則及其含義有深入的了解。 (當您破壞它們時出了什么問題。)
檢查卸載日志文件,以獲取有關Windows Installer為什么選擇不刪除文件夾的線索。
在干凈的機器上測試。 (VM快照是最簡單的。)
盡管有些人會很幸運,但我不建議使用任何形式的動態wxs代碼生成,但動態ProductCode除外以支持主要升級。 這包括從組件的動態向導到組件收集(也稱為動態文件鏈接)的所有內容。 這些往往最終會破壞組件規則,並產生副作用,包括您在此處看到的內容。
就是說,我知道手工編寫WiX XML的痛苦,並且我在CodePlex上有一個名為IsWiX的開源項目。 它由項目模板(腳手架)和圖形設計器組成,可以極大地幫助創作和維護WiX項目。 然后,您可以根據需要手動編輯XML,以聲明IsWiX尚未處理的內容。
聽起來文件夾本身有鎖。 您是否正在運行要在卸載過程中停止的任何服務? 您是否正在運行任何自定義操作,將其作為操作的一部分從根文件夾加載文件? 您是否在根目錄ACL上設置了任何自定義權限? 根文件夾是IIS文件夾嗎? 您是否在卸載后嘗試重新啟動以查看文件夾是否仍然存在?
顯而易見的第一步是要確保服務在卸載之前被刪除之前正確停止。 在不同的盒子上,此行為可能有所不同(但聽起來您在同一個盒子上進行測試)。 看到這個線程: http : //forum.installsite.net/index.php?showtopic=16458
接下來, 嘗試一些版本比較的MSI文件本身和安裝他們提供/文件夾,以驗證這可能是不同的(如果有的話)。
嘗試在兩個不同的MSI文件上使用Wix工具包中的 dark.exe 。 這會將它們解碼為Wix XML,然后使用比較工具(例如Beyond Compare或類似的磁盤差異工具)來確定它們之間是否存在任何重大差異。
來自http://www.scootersoftware.com/的 Beyond Compare –是一個出色的工具(顯然沒有從屬關系)。 我一直在使用它,它的用處是立即的,並且所有使用文件的專業人員每天都會從中受益。 試試吧 。 看截圖 。
另外,在已安裝的文件夾上運行文件差異以查看是否存在明顯差異。 要特別注意配置文件,並進行完整的二進制級別差異(不僅僅是CRC /哈希)。
從HKCU和HKLM 導出注冊表配置單元 (僅針對您的應用程序,而不是整個注冊表),並在狀態之前和之后進行比較(4個導出)。
至於機器之間的差異-聽起來您正在使用測試虛擬機,但是我只想補充一點,即使其他條件相同,盒子上Visual Studio的存在也會影響事物。 除此之外,硬件,網絡和防火牆配置聽起來都一樣,並且您正在測試盒上進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.