2015-07-13 72 views
0

我卸載應用程序時沒有刪除文件時遇到問題。 我發現,有當應用被卸載的記錄它會打印:WIX:產品未完全卸載(系統中的文件未被刪除)

... MSI (s) (0C:84) [11:39:07:836]: Disallowing uninstallation of component: {51DB6066-AFCD-5A03-BE34-09E197799057} since another client exists ...

然後我發現通過使用WiX的工具集有一個名爲DTF的API(在Wix toolset: complete cleanup after "disallowing uninstallation of component since another client exists"提到) ,以及i在LinqPad(C#聲明)執行的查詢:

(F4按進口命名空間和additiona參考)

//using Microsoft.Deployment.WindowsInstaller; 
//using System.Linq; 
// <ref>"C:\Program Files (x86)\WiX Toolset v3.9\SDK\ 
     Microsoft.Deployment.WindowsInstaller.dll"</ref> 


var client = ComponentInstallation.AllComponents 
    .Where (c => c.ComponentCode == "{72ED6979-0AAD-317C-A25C-AB9A121E6D30}") 
    .Select(c => c); 
client.Dump(); 

有我s舊recods: enter image description here

我不能刪除它們使用「msiexec/x {GUID}」,因爲這些產品被標記爲「IsInstalled = False」。

那麼如何刪除這些舊記錄呢?

+0

我在註冊表中找到了按名稱排列的功能,並將它們從以下位置刪除: [HKEY_CLASSES_ROOT \ Installer \ Features \ ...但是卸載過程仍然不會刪除文件,並且日誌中會顯示相同的信息消息。 Theres仍然保留具有0個特性項目的ProductInstallation項目。 – Drasius

回答

0

如果不允許部件的卸載:{51DB6066-漁護署-5A03-BE34-09E197799057}自另一客戶端存在

這一般意味着有一個或多個產品系統當前哪個參考在此組件上安裝。

您確定系統中沒有其他產品引用此組件嗎?

你不想做這種清理,因爲Windows安裝程序在沒有任何用戶干預的情況下處理所有這些。

你以前安裝過舊版本的產品嗎?還是由合併模塊安裝此文件?

+0

你好,我知道這意味着什麼。安裝產品不處理這些功能覆蓋,它們仍然是重複的。因爲這些文件不會被刪除。我試過舊版本的安裝,但沒有幫助。這些記錄可能是開發產品時自定義設置的結果(可能是,我更改了某些產品的GUID並安裝了此自定義版本,我不確定)。 – Drasius

+0

請您詳細說明當您說「功能覆蓋」時,您的意思是什麼?在Windows安裝程序的世界中,如果組件在系統上註冊,它總是與產品關聯。你有沒有嘗試搞清楚與組件關聯的其他客戶端?您可以通過使用API​​來實現此目的:https://msdn.microsoft.com/en-us/library/aa370094%28v=vs.85%29.aspx。 –

+0

在故事問題中查看我的圖像,有與產品相關的功能。因此,對於我們解決的一些PC,文件夾丟失,卸載失敗。但是對於我的個人電腦,一些註冊表被破壞,因爲我無法修復它。 – Drasius