C:\WINDOWS\Installer文件夹的安全清理

C:\WINDOWS\Installer文件夹的安全清理

作者:eygle | English Version 【转载时请以超链接形式标明文章出处和作者信息及本声明

链接:http://www.eygle.com/archives/2008/12/windows_installer.html

站内相关文章|Related Articles

这几天微软发布了不少补丁,系统盘(C:\)又开始空间告警。

没办法又要研究一下哪些空间是可以释放的,我的C:\分配了10G的空间,一度又一度的空间紧张,大家的系统盘是多大呢

这一次我准备向 C:\WINDOWS\Installer 这个目录下手,这个目录占用了我大约2.5G的空间(留意过你的这个目录有多大么?)。

这个文件夹保存着所有基于Windows Installer安装的应用软件的注册信息,一般不能轻易删除,我以前尝试过,会导致一些软件在遇到问题时无法正常恢复或运行。

网上也有一些相关解释:

%systemRoot%\Installer文件夹保存着所有基于Windows Installer安装的应用软件的注册信息,一旦此文件受损,那么基于Windows Installer安装的相关软件将无法正常运行,你需要重新安装基于是Windows Installer安装的应用软件,以修复%systemRoot%\Installer文件夹中的注册信息。

以Office为例,当你删除了这个文件夹中的内容后,Office的安装程序将无法使用,无论是重新安装,修复、添加和删除Office组件,都无法运行,此时你必须手动删除Office,然后再重新安装。

可以肯定的是,删除所有文件会在将来为我们带来一定的麻烦。

那么这里面有没有一些冗余的东西可以安全清理呢?

微软提供了一个助手,可以用于清理这些文件中的无用文件,这个工具是:Windows Installer CleanUp Utility

可以在以下链接下载:http://support.microsoft.com/default.aspx?scid=kb;en-us;290301

具体下载链接为:http://download.microsoft.com/download/e/9/d/e9d80355-7ab4-45b8-80e8-983a48d5e1bd/msicuu2.exe

但是一定注意看提示,不要都删了,否则可能就有麻烦了。

在命令行,通过命令msizap.exe G可以删除一些孤儿文件:

C:\>msizap.exe G

MsiZapInfo: Performing operations for user S-1-5-21-1935655697-1409082233-839522115-1003

Removing orphaned cached files.

Removed file: C:\WINDOWS\Installer\102db95.mst

Removed file: C:\WINDOWS\Installer\102dba2.mst

Removed file: C:\WINDOWS\Installer\102dbac.mst

Removed file: C:\WINDOWS\Installer\337c229.mst

Removed file: C:\WINDOWS\Installer\3b1ae.mst

Removed file: C:\WINDOWS\Installer\41485c5.mst

Removed file: C:\WINDOWS\Installer\65a2f.mst

Removed file: C:\WINDOWS\Installer\76bf7.mst

Removed file: C:\WINDOWS\Installer\9419741.mst

Removed file: C:\WINDOWS\Installer\9419770.mst

Removed file: C:\WINDOWS\Installer\9419778.mst

Removed file: C:\WINDOWS\Installer\a43b7be.mst

Removed file: C:\WINDOWS\Installer\f8fe2f1.mst

网上还可以找到这样一个工具:

Windows Installer UnUsed Files Cleanup Tool (简称WICleanup)是一个用于清理 Windows Installer 冗余文件的工具。

软件主页为:http://www.kztechs.com/wicleanup/

下载地址:http://www.kztechs.com/wicleanup/wicleanup.zip

下载了这个软件扫描了一下,删除了大约1G的冗余文件,释放出来不少空间,又可以维持一段时间了。

为什么会如此呢?了解一下Windows Installer的作用就明白了

Windows Installer 软件安装技术。该技术包括适用于 32 位 Windows 操作系统的 Windows Installer 服务器,以及一个用于存储有关配置和安装信息的新软件包文件格式。

Windows Installer 不仅仅是一个安装程序,它还是一个可扩展的软件管理系统。Windows Installer 管理软件的安装,管理软件组件的添加和删除,监视文件复原,并通过使用回滚来维护基本的灾难恢复。

此外,Windows Installer 还支持从多个源安装和运行软件,并且可以由要安装自定义程序的开发人员定制。

Windows Installer 的功能包括:

• 在安装失败时将计算机还原为原始状态:Windows Installer 跟踪在程序安装过程中对系统进行的所有更改。如果安装失败,Installer 可以将系统恢复到其初始状态。这称为"回滚"。

• 帮助防止特定形式的程序之间产生冲突:正在安装或卸载的程序可能会导致计算机上已安装的另一个程序出现问题,甚至导致计算机停止响应(挂起)。 Installer 可以强制实施一些安装规则,以帮助防止当安装操作更新由现有程序共享的动态链接库 (DLL) 文件时,或当卸载操作删除由另一个程序共享的 DLL 文件时出现冲突。

• 诊断并修复损坏的程序:程序可以要求 Installer 确定已安装的程序是否缺少文件,或者文件是否已损坏。然后,它可以要求该服务根据需要再次只复制已发现丢失或损坏的文件来修复该程序。

• 可靠地卸载现有程序:Installer 可以可靠地卸载以前安装的任何程序,并删除所有相关联的注册表条目和程序文件,但其他已安装的软件所共享的文件及注册表条目除外。

• 支持按需安装程序功能:可以指示 Installer 首先安装程序的最小子集。之后,在您首次使用需要附加组件的功能时,会自动安装附加组件。

• 支持无人参与的程序安装:Installer 支持根据管理员的指令使用脚本来安装程序。

Windows Installer 技术分为以下两部分,它们结合在一起工作:客户端安装服务 (Msiexec.exe) 和 Microsoft 软件安装 (MSI) 软件包文件。Windows Installer 使用软件包文件中包含的信息安装程序。

Msiexec.exe 程序是 Windows Installer 的一个组件。当安装程序调用 Msiexec.exe 时,它使用 Msi.dll 读取软件包 (.msi) 文件,应用任何转换 (.mst) 文件,并合并安装程序所提供的命令行选项。Installer 执行所有与安装有关的任务,包括将文件复制到硬盘、修改注册表、在桌面上创建快捷方式,以及在必要时显示对话框以提示用户输入安装首选项。

在计算机上安装 Windows Installer 后,它将更改注册的 .msi 文件的文件类型,以便当您双击 .msi 文件时,将运行 Msiexec.exe。

每个 MSI 软件包文件都包含一个关系类型的数据库,用于存储在各种安装方案中安装(或卸载)该程序所需的指令和数据。

원본 위치 <http://www.eygle.com/archives/2008/12/windows_installer.html>

원본 위치 <http://blogs.itecn.net/blogs/smallfrogs/archive/2006/10/22/4036.aspx>

KZTechs.COM :是 Smallfrogs 创办的一个个人技术网站,主要提供一系列的和 Windows 相关的原创工具、文章。

Smallfrogs:是一位Microsoft MVP。

检测原理:请看《冗余 Windows Installer 文件的清理》一文。

원본 위치 <http://www.kztechs.com/wicleanup/>

冗余 Windows Installer 文件的清理

对于使用 Windows Installer 技术制作的安装程序,我一向不是那么的喜好,即使 Windows Installer 技术有着非常优秀的功能、稳定的性能以及其他值得骄傲的特性。

究其原因,是因为使用 Windows Installer 技术制作的安装程序会在 %systemroot%\Installer 目录里面添加一个备份的安装文件用于今后的配置、补丁安装等操作。不可否认的是,在系统里面存放一个安装程序的备份,是一件非常理想的事情,尤其是对于那些经常丢失安装程序的用户来说。对于这一点,我倒是非常的赞赏。但是,有一个功能我的确难以理解:当用户运行一个补丁程序的时候,Windows Installer 将msp文件释放到 %systemroot%\Installer 目录以后,开始引导用户进行补丁的安装。如果用户在引导的时候点击了取消操作或补丁安装必备条件不足而导致安装失败的时候,Windows Installer 将退出安装流程,但是会把释放到 %systemroot%\Installer 目录里面的msp文件保留下来。如果用户再次运行同一个补丁程序,Windows Installer 又会在 %systemroot%\Installer 目录里面生成一个新的msp文件(文件名和上一次的不同),而不会利用上一次释放产生的msp文件。这样一来,第一次产生的msp文件将会永久的存留在磁盘上,成为彻底的无用文件。

为了解决这个问题,我决定找回被Windows Installer无用文件占用的磁盘空间。对 Windows Installer 补丁技术研究以后发现,如果补丁安装成功,会在注册表里面记录一个信息,当新的增量补丁程序需要旧的补丁程序的时候,会在注册表里面寻找旧的信息,并找到旧的msp文件,然后就是补丁文件的整合以及修补过程。具体的步骤比较复杂,这里不予多说。我们需要的是将 %systemroot%\Installer 目录里面无用的文件挑选出来,其他的流程和本次主题无关。

冗余MSP文件清除原理:

1、MSP安装完成以后,会在注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches 下面生成一个键。键名是一个32字节的GUID值,生成的键下会有一个键值,名称固定为 LocalPackage 用于指向本地的 MSP 文件的路径。

2、记录下每一个键下的 LocalPackage 指向的文件的文件路径。

3、然后打开 %systemroot%\Installer 目录,将这个目录根目录下的所有 MSP 文件挑出,除去在第2步中存在的文件名,剩下的MSP文件就是冗余的文件。

*注: S-1-5-18指 Local System 用户,大多数补丁都是以 S-1-5-18 安装的。

自动化清理方案:

如果系统里面安装了很多使用 Windows Installer 技术制作安装程序的软件以及相应的补丁以后,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches 下面会产生相当多的子键,手工清理是不现实的,自动清理才是必要的途径,工具 WICleanup.EXE 应运而生。

WICleanup.EXE:针对上述问题提供自动化解决方案,运行以后会自动完成上述的所有操作。(本来就是我写的,当然会按照上述流程进行了。

WICleanup.EXE 下载地址:http://www.kztechs.com/wicleanup/

最近我的笔记本C盘见红,可用空间就剩3G了,在网上查询的清理C盘的方法都试验了,但是可用空间始终升不上来,后来逐个排查,发现C盘中的Windows文件夹很大,大概40G了。。。这个文件夹下最大的是一个叫做installer的隐藏文件夹,查询了好多关于此文件夹的,都说尽量不要碰它,因为里面是安装软件的系统信息文件,如果都掉的话,可能引起一些软件的使用有问题。于是我就百度搜清理此文件的工具,结果没有搜到。最后在Google上搜了一些国外的关于讨论installer文件夹的网站,功夫不负有心人,发现了这个叫做PatchCleaner的小软件,具体链接为http://www.homedev.com.au/Free/PatchCleaner。用起来很简单,它的基本原理是通过扫描电脑中必须的配对信息文件,通过对比,installer文件夹内的其余的那些.msi和.msp文件被认为是没有用的或者说是过期的,于是可以把他们除掉,这个软件有个好处是,可以选择move掉这些无用的文件到其他的地方,比如移动硬盘等等,以防止万一卸载某个软件时出现错误,出错的时候可以把那些所谓的无用的文件再move回原来installer文件夹内就可以了。目前通过本人测试以及该软件的开发者调试,基本不影响电脑的正常使用,很好用的一个小软件,具体信息请参考上面的链接,目前未发现国内有这样的清理软件,强烈推荐!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值