2009-02-08 143 views
11

經過大量的試驗和錯誤(主要是由於缺乏文檔和示例),我設法創建了MSI安裝程序,將並行程序集自定義DLL安裝到WinSxS。只有一個問題:卸載會將所有文件(DLL,清單和目錄)保留在WinSxS目錄中。我怎麼能或應該最好地清理那個?我確信沒有別的東西可以引用它。如何卸載Win32程序集並清除WinSxS?

我已經讀過WinSxS有一個自我清理過程,隨着時間的推移清理,但我找不到更多的信息。你能手動調用這個來清理東西嗎?

我看到的唯一方法是手動刪除這些位。首先,您必須將所有文件(程序集,目錄,清單及其各自目錄)的所有者從SYSTEM更改爲管理員帳戶,調整權限並將其刪除。還有一些片段留在註冊表中(我認爲HKLM \ COMPONENTS \ DerivedData \ Components可能只是一個地方),但由於WinSxS應該被視爲不透明,因此很難找到任何信息。

回答

4

清除不會暴露在任何我知道的地方。我甚至不知道它何時自動啓動。也許在卸載服務包?也許有些工具管理員可以運行?我真的忘了。

無論如何,我的建議是不打架。在那裏有很多曲折的東西,只是不值得嘗試獲取磁盤空間。卸載後,仍然在SxS緩存中的位不會被激活,因此它們只是浪費空間。

這是一個愚蠢的設計,但責怪微軟,不要過度補償。

3

沒有人確信你可以 - 缺少完整的重新安裝,你龐大的WinSxS目錄是留在那裏。

曾經有很長的"discussion" of the problem on technet

沒有關於格式的文檔,或者說明如何刪除不再需要的文件--MS似乎認爲磁盤空間很便宜。有一個自我清理的功能,但沒有人確信它的工作,或者如果它確實,它是非常保守的(因爲你希望,因爲你不希望它打破你的操作系統)

你可以告訴清道夫正在通過檢查「C:\ Windows \ winsxs \ Temp \ PendingDeletes」來工作。文件夾,因爲這是通過Windows Update移動文件或安裝程序將其移動到的位置 - 清除程序只是刪除此處的文件。

+0

有趣的是,我有一堆2009年的文件在那裏。顯然,我禁用了任何觸發清理的東西。你有沒有找到關於這個過程的更多細節,像是什麼觸發它的? – Zero3 2016-02-20 17:12:37

3

您會注意到,在卸載程序集後,當文件仍然存在時,它們不能再綁定到 - 所以它們只是「暫存」或緩存,但並未真正安裝。

Rob & gbjbaanb是正確的 - 你不能手動調用自己的清除。不要試圖自己刪除這些文件 - 註冊表中有多處註冊它們的地方,DerivedData \ Components只是許多參考文獻中的一個。

我認爲清除的規則是在最後一次服務操作(服務包,修補程序等)10分鐘的機器非活動狀態後由TrustedInstaller服務啓動的。但它非常易變,所以它不會像應該那樣頻繁運行。所以只要有耐心,文件就會自己消失。

+0

了不起的信息,謝謝尤金。我能問一下加布裏埃爾關於「DISM.exe」的答案嗎?這是WinSxS文件夾可以接受的飲食嗎? :-) – 2017-10-02 16:57:44

5

這是一個article,這是一個有點WinSxS的完整指南。因此,不久之後,您只能卸載一些組件(它們的所有版本均位於此文件夾中),並且可以運行Service Pack網橋刻錄實用程序(在Vista中將其命名爲VSP1CLN.EXE並隨SP1一起提供)。請注意,執行後,在SP發佈日期之前,您應該無法卸載SP或任何組件。

2

嗯,我有一些問題,因爲我有一個80GB的SSD我的窗口和文件夾winsxs文件大約12GB的

我搜索網,我發現這個命令:

DISM.exe/online/Cleanup-Image/spsuperseded

而現在我的WinSxs是7GB,這是個好消息。