【工具】清理Windows Installer冗余文件(支持64位NT6.x系統)


樣子:

支持系統:

Windows NT 5.x/6.x 32及64位所有系統。.net framework 2.0運行環境

功能:

清理上述系統中冗余的Windows Installer補丁文件。有如下特點:

  • 高效掃描+清理,並有進度反饋
  • 可選擇清理指定文件
  • 可排序
  • 可選擇刪除到回收站,或直接刪除

說明:

類似工具有幾個,其中我熟知的是smallfrogs大牛的【Windows Installer 冗余文件清理工具】(下文稱WIC),事實上在這之前我一直就用他的工具進行相關任務(目前他的官網http://www.kztechs.com/不可訪問,可以通過第三方站點獲取該工具及其信息),之所以想到重新寫一個這樣的工具,原因有二:

  1. WIC不適用64位NT6.x操作系統。不是說不能運行,而是會得到錯誤的結果,就是會掃出並非冗余的msp文件,這個很要命,屬於關鍵性問題。我想是因為WIC編寫年代久遠,可能作者本就沒有考慮在新平台使用。而造成這個問題的技術層面的原因我想是由於64位NT6系統對32位程序的注冊表訪問做了重定向的緣故,也就是32位程序訪問某些鍵的時候,實際上是訪問到別的鍵。例如此類工具需要訪問的【HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches】,在64位系統上訪問到的其實是【HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches】,關於這個問題,不少文章有講解,在此不贅述。所以可能就因為這個原因,導致WIC在64位系統上訪問到錯誤的鍵,又因為錯誤鍵下並不記錄已安裝的msp文件信息,最終導致WIC將大量並不是冗余狀態的msp文件判定為冗余。
  2. WIC刪除體驗不好。這個誰用誰知道,就是刪除一個文件前后共有2次MessageBox彈窗:刪除前有1次詢問,刪除后有1次告知,而且是每一個文件都有兩次彈窗,所以如果要刪除10個文件,總共會遭遇10x2=20次彈窗,空格/回車倆表示壓力很大。斗膽臆斷,大牛在這個環節的處理有欠考慮啊。另外有用戶表示還存在不能【全選/不選】的體驗問題,這個倒其實好解決,得益於ListView控件(WIC應該不是.net程序,作者使用的編程框架下該控件可能不叫ListView,但我肯定它跟.net下的ListView都是調用同樣的原生win32控件,spy++下顯示為SysListView32)的能力,可以通過全選所有行+空格(或鼠標勾選)來達到全選/不選的目的,熟悉win系統的老鳥用戶大概都知道類似的一些操作技巧,所以說這點不是問題。

就是以上兩個原因讓我有重造輪子的想法,所以可以說我對我這新工具的定位就是WIC的替代品,自然不存在WIC的問題,當然不排除我這工具也有其它問題,有句話叫什么來着,沒有BUG的程序是什么也不做的程序。總之有賴用戶的反饋,在此先行謝過。

另外我必須要說,即便WIC作為一個實現有些問題,但它的工作原理是了不起的,事實上我的工具也是基於大牛的冗余判定原理實現的,可惜現在他的官網不能訪問,目前可以訪問這里獲知一些信息。再次鄭重感謝smallfrogs大牛的研究和分享。另外要感謝:

  • 來自codeproject.com牛人的方案,它解決了ListView排序帶原生標記(三角標記)的問題。排序容易,弄個自定義標記也不難,難的是系統原生標記
  • 各圖標原作者。在此向猿友推薦一套高質量圖標,作者似乎是個JP,程序UI向的設計師,作品真的很優質

工具地址:

http://pan.baidu.com/s/1i39w8Qh

望得到用戶反饋,非常感謝!

-文畢-


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM