【工具】清理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位操作系统。不是说不能运行,而是会得到错误的结果,就是会扫出并非冗余的msp文件,这个很要命,属于关键性问题。我想是因为WIC编写年代久远,可能作者本就没有考虑在NT6平台使用。而造成这个问题的技术层面的原因我想是由于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/1pJ2xQt1

望得到用户反馈,非常感谢!

-文毕-

时间: 2024-07-31 17:40:35

【工具】清理Windows Installer冗余文件(支持64位NT6.x系统)的相关文章

安装SQL2005 SP4补丁报错:无法安装Windows Installer MSP文件

在我们安装完SQL2005数据库后,需要安装SP4补丁时,会出错:无法安装Windows Installer MSP文件 的解决办法 1.开始--控制面板--添加或删除程序,卸载 "Microsoft SQL Server安装程序支持文件(英文)",确定没有残留该文件. 2.将SQL2005SP4补丁包进行复制,并将复制后的文件的格式从原来的.exe执行文件改为.rar的压缩文件.(就是把exe文件压缩) 3.打开压缩文件,查看文件,解压文件中 "hotfixsqlsuppo

iOS程序支持64位以及project.pbxproj文件的介绍

程序从32bit转到64bit总结: 一.出现各种 "OBJC_CLASS$_ShareSDK", referenced from: 解决方案: 网上版本: - 选中Targets->Build Settings->Architectures. 把build active architectures only 改为 NO. - 把最下面的Valid Architectures中的arm64参数删掉就可以了(但这样不是反倒不支持64位了?) 或者: - 双击Architect

关于IOS二维码创建、扫描的使用方式(IOS,ZBar支持64位解决办法)

在IOS开发过程中,有时需要使用到二维码扫描及二维码生成,现在介绍我自己测试并通过的方法: (一) 二维码生成方式: 需要工具:libqrencode库,QRCodeGenerator.h,QRCodeGenerator.m文件,说实话,在网上找这两个文件确实废了我不少的功夫,下面我会把详细的下载地址贴上,相信定能节省大家不少的时间. 有了以上两个文件之后你就可以将它添加到你到工程中,使用相应的接口API便可以完成相应的功能. imageview.image = [QRCodeGenerator

XE6支持64位跨平台开发,非常方便

如需开发位64位的项目,只需在上图Target Platform目标平台鼠标右键选择Add Platform即可 然后下拉列表框选择相应的平台按OK键 默认选中的是32平台,如果需要开发64位平台的,只需双击上图中的64-bit Windows,或者鼠标右键选择Activate即可,开发出来的应用就是64位的 系统会在目录下自己成生Win64位这样一个目录里面的exe文件即是64位平台下可以跑起来的应用. XE6支持64位跨平台开发,非常方便

字符转码开源库libiconv目前还不支持64位

最新版的libiconv 1.14目前还不支持64位系统,只能编译出32位库. libiconv 1.14下载地址: http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz libiconv介绍: http://www.gnu.org/software/libiconv/ linux系统编译安装方法: $ ./configure --prefix=/usr/local $ make $ make install 执行make会报错: ./

如何判断静态库是否支持64位。

打开终端,cd到静态库的地方.输入命令 .framework文件 lipo -info ./****.framework/**** 返回结果 Architectures in the fat file: ./****.framework/**** are: i386 armv7 armv7s 如此便可查看你工程中的静态库是否支持64位. .a文件 lipo -info libUPPayPlugin.a 结果 Architectures in the fat file: libUPPayPlugi

xcode 编译打包 支持64位 设置

首先说两个时间 1.自2015年2月份开始,新上传到iTunes上面审核的app,必须支持64位,新上传是指第一次上传, 或者没有审核通过过,总之就是在AppStore上面没有上架的app,必须支持64位,包括工程里面的代码和用到的静态库文件 2.如果之前iTunes上面有审核通过的app,现在只是上传升级版本,更新版本去审核,这时也可以提交成功,iTunes上面验证二进制文件可以通过, 不必非得支持64位,但是不要高兴太早,这只是权宜之计,到2015年6月份上传的升级版本还是要支持64位,只是

delphi下支持64位的钩子实现

从delphi.about.com上找了一个钩子的实现代码,写得很不错,可惜不支持64位,后来有一个帖子里说参考classes单元改改,就自己改了一下,现在分享给大家 修改部分如下 const {$IF Defined(CPUX86)} CodeBytes = 2; {$ELSEIF Defined(CPUX64)} CodeBytes = 8; {$IFEND} type pObjectInstance = ^TObjectInstance; TObjectInstance = packed

missing required architecture x86_64 in file 不支持64位

(null): Ignoring file /Users/xxx/Desktop/IOS-项目源码/ios/Ios(114.215.200.104)/ShareSDK/Extend/QQConnectSDK/TencentOpenAPI.framework/TencentOpenAPI, missing required architecture x86_64 in file /Users/xxx/Desktop/IOS-项目源码/ios/Ios(xxxx)/ShareSDK/Extend/QQ