樣子:
支持系統:
Windows NT 5.x/6.x 32及64位所有系統。需.net framework 2.0運行環境
功能:
清理上述系統中冗余的Windows Installer補丁文件。有如下特點:
- 高效掃描+清理,並有進度反饋
- 可選擇清理指定文件
- 可排序
- 可選擇刪除到回收站,或直接刪除
說明:
類似工具有幾個,其中我熟知的是smallfrogs大牛的【Windows Installer 冗余文件清理工具】(下文稱WIC),事實上在這之前我一直就用他的工具進行相關任務(目前他的官網http://www.kztechs.com/不可訪問,可以通過第三方站點獲取該工具及其信息),之所以想到重新寫一個這樣的工具,原因有二:
- 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文件判定為冗余。
- 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
望得到用戶反饋,非常感謝!
-文畢-