明顯的第一步是確保服務在卸載前被正確停止。這種行爲在不同的盒子上可能會有所不同(但它聽起來像你在同一盒子上測試)。看到這個線程: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 /哈希)。
導出註冊表配置單元從HKCU和HKLM(只爲您的應用程序,而不是整個註冊表),並在比較之前和國太(4個出口)之後。
至於機器之間的差異 - 聽起來像你正在使用測試虛擬,但我只是想補充說,即使其他所有東西都相同,你盒子上的視覺工作室的存在也會影響事物。除此之外,硬件,網絡和防火牆配置聽起來像是相同的,並且您正在測試盒上進行測試。
您是否嘗試過使用dependency walker?我從來沒有使用過它的服務,但分析選項對於檢查一般應用程序非常有用(how-to)。
感謝您的回答。我不確定組件規則會出現什麼問題。如果規則錯了,爲什麼我的本地構建中的MSI可以正常工作?我檢查了卸載日誌的細節,但沒有什麼是令人擔憂的。 – murtazat
因爲有時候你可以逃避違規,直到你不能。 Windows具有註冊表元數據,並且在某些情況下,您會發現自己在Windows Installer的錯誤末端嘗試使其具有的最佳信息。這是在乾淨的快照虛擬機上測試的一個原因。 –
**對於Windows Installer **,熟悉組件規則的重要性不能被誇大。請參閱[**這個答案**](http://stackoverflow.com/questions/1405100/change-my-component-guid-in-wix/1422121#1422121),看看它是否有助於理解它的核心。每個組件使用一個文件作爲基本的經驗法則,在鏈接中解釋了一些例外情況(可能還有其他例外情況)。 –