2015-05-04 76 views
0

我無法讓MSI刪除我的根應用程序文件夾。除根文件夾外,所有文件在卸載時都可以正確刪除。 MSI由WIX Toolset生成。奇怪的事情是這種情況只會發生在我們的構建服務器拋出的MSI上。我的本地機器上生成的MSI工作正常,他們正確地清理應用程序文件夾。我以詳細模式運行卸載,但無法找到任何令人擔憂的事情。通過WIX生成的MSI不會在卸載時刪除應用程序根文件夾

在過去,甚至我的本地機器微星都沒有工作。但是我在.wixproj中添加了KeepEmptyDirectories =「true」GenerateGuidsNow =「true」 - 如果這是一個有用的信息。我如何解決這個問題?我應該尋找哪些可能的紅旗?

回答

0

我會做幾件事情:

  1. 獲取的部分規則,其含義有深刻的理解。 (當你打破它們時出了什麼問題。)

  2. 檢查卸載日誌文件以獲取有關Windows Installer選擇不刪除文件夾的原因的線索。

  3. 在清潔機器上進行測試。 (VM快照是最容易的。)

雖然有些人可以得到幸運,我不建議使用任何形式的動態WXS代碼生成與動態產品代碼的例外支持重大升級。這包括從組件的動態指導到組件採集(又名動態文件鏈接)。這些趨勢最終會打破包含您在此處看到的副作用的組件規則。這就是說,我瞭解手動編寫WiX XML的痛苦,並且我在CodePlex上有一個名爲IsWiX的開源項目。它由項目模板(腳手架)和圖形設計師組成,極大地幫助編寫和維護一個WiX項目。然後您可以根據需要手動編輯XML,以聲明IsWiX尚未處理的內容。

+0

感謝您的回答。我不確定組件規則會出現什麼問題。如果規則錯了,爲什麼我的本地構建中的MSI可以正常工作?我檢查了卸載日誌的細節,但沒有什麼是令人擔憂的。 – murtazat

+0

因爲有時候你可以逃避違規,直到你不能。 Windows具有註冊表元數據,並且在某些情況下,您會發現自己在Windows Installer的錯誤末端嘗試使其具有的最佳信息。這是在乾淨的快照虛擬機上測試的一個原因。 –

+0

**對於Windows Installer **,熟悉組件規則的重要性不能被誇大。請參閱[**這個答案**](http://stackoverflow.com/questions/1405100/change-my-component-guid-in-wix/1422121#1422121),看看它是否有助於理解它的核心。每個組件使用一個文件作爲基本的經驗法則,在鏈接中解釋了一些例外情況(可能還有其他例外情況)。 –

0

聲音就像文件夾本身有一個鎖。您是否正在運行您作爲卸載的一部分停止的任何服務?作爲操作的一部分,您是否正在運行從根文件夾加載文件的任何自定義操作?你是否在根目錄ACL上設置了任何自定義權限?根文件夾是IIS文件夾嗎?卸載後您是否嘗試重新啓動以查看文件夾是否仍然存在?

+0

謝謝。根文件夾是一個Windows服務文件夾。有可能會鎖定,但不知道爲什麼我的本地機器MSI正在完美地刪除根文件夾。沒有自定義操作。沒有對根文件夾的自定義權限。我將嘗試重新啓動。 – murtazat

+0

所以,當你說一個MSI工作正常,一個沒有,那是在一個完美控制的測試環境中嗎? IE完全相同的機器狀態(虛擬機快照或圖像恢復)? –

+0

構建服務器的msi不起作用。我的本地機器上的msi工作正常。兩者都在相同的機器相同的環境下測試。 – murtazat

0

明顯的第一步是確保服務在卸載前被正確停止。這種行爲在不同的盒子上可能會有所不同(但它聽起來像你在同一盒子上測試)。看到這個線程:http://forum.installsite.net/index.php?showtopic=16458

接下來,嘗試一些版本比較的MSI文件本身並安裝驗證,這可能是不同的,他們提供/文件夾(如果有的話)。

嘗試在兩個不同的MSI文件使用dark.exe維克斯工具箱。這會將它們解碼爲Wix XML,然後使用比較工具(例如Beyond Compare或類似的磁盤分析工具)來確定它們之間是否存在顯着差異。

超越從http://www.scootersoftware.com/比較 - 是傳遞一個輝煌的工具(顯然沒有從屬關係)。我一直都在使用它,它的實用性是立竿見影的,並且所有使用文件的專業人員都可以從日常工具中獲益。 試試吧See a screenshot

另外在已安裝的文件夾上運行一個文件diff以查看是否有任何明顯的差異。要特別注意配置文件並做一個完整的二進制級別差異(不僅僅是CRC /哈希)。

導出註冊表配置單元HKCUHKLM(只爲您的應用程序,而不是整個註冊表),並在比較之前和國太(4個出口)之後。

至於機器之間的差異 - 聽起來像你正在使用測試虛擬,但我只是想補充說,即使其他所有東西都相同,你盒子上的視覺工作室的存在也會影響事物。除此之外,硬件,網絡和防火牆配置聽起來像是相同的,並且您正在測試盒上進行測試。

您是否嘗試過使用dependency walker?我從來沒有使用過它的服務,但分析選項對於檢查一般應用程序非常有用(how-to)。

+0

嘗試將MSI導出爲Wix XML - 兩個.wxs文件之間沒有區別。卸載日誌中是否有我需要特別查找的紅旗?沒有嘗試過依賴沃克。 – murtazat

+0

對不起 - WIX和Windows安裝新手。不熟悉組件和表格等。需要快速修復錯誤,因此沒有時間理解整個WIX和安裝體系結構。讓我知道如果你需要看到.wxs,.wixpdb等。 – murtazat

+0

是的,我認爲我們必須看到這個wix源文件,它是非常大的? –

相關問題