如何检测不必要的Windows \ Installer文件

时间:2016-12-28 15:28:49

标签: windows azure windows-installer installer windows-server-2008-r2

我经常搜索如何检测不必要的Windows \ Installer文件!

我相信很多人以前都遇到过这个问题并以某种方式解决它。

现在当我看着我的---

C:\Windows\Installer
在Windows Server 2008 R2上的

目录我可以看到,如果总共126 GB,它已经耗尽了42 GB。

现在我想知道我可以删除Installer目录中的所有文件,或者我必须检测哪个文件可以删除!

有谁知道这个问题的任何解决方案!

2 个答案:

答案 0 :(得分:1)

你无法全部删除它们。

关于你的问题有一个很好的answer,我在我的实验室进行测试。它对我有用。

注意:如果可能,最好将此文件夹复制到另一个磁盘(例如E:)

答案 1 :(得分:1)

你如何定义不必要的?

专业系统案例:您希望占用最少的空间并愿意牺牲您不​​希望使用的功能。

如果一切顺利,C:\ Windows \ Installer中的每个文件都是已安装的Windows Installer程序包,补丁,转换等的本地缓存。它们是卸载,auto-repair或{{3}所必需的。成功。如果你在这些机器上永远不需要任何这些东西(例如,如果你把它们作为虚拟机按需提供,并且会重建它们而不是卸载某些东西),那么除非应用程序本身调用Windows Installer API本身,否则它可能是相对的安全地从C:\ Windows \ Installer中删除文件。此外,您可以调用Windows Installer API on-demand installation来查找用于这些相同目的的其他文件缓存。删除这些文件可能同样安全(或不安全)。

更常见的情况:您不想重建系统

如果您怀疑先前的升级或卸载过程中遗留了该文件夹中的未引用文件,您可以尝试使用Windows Intstaller API调用来验证这一点。在非常低的级别,您可以致电MsiSourceListEnum(或可能MsiEnumProducts)查找所有已安装产品的产品代码,并MsiEnumProductsEx / MsiGetProductInfo(szProduct,INSTALLPROPERTY_LOCALPACKAGE, ...)查找其缓存的.msi文件和INSTALLPROPERTY_TRANSFORMS以获取其变换列表。然后Ex / MsiEnumPatches查找所有修补程序代码,Ex / MsiGetPatchInfo(再次使用INSTALLPROPERTY_LOCALPACKAGE和/或INSTALLPROPERTY_TRANSFORMS)列出它引用的.msp和.mst文件。理论上,此处引用的所有文件的完整集合应与C:\ Windows \ Installer中的完整文件集匹配。 (或者有更多的参考资料来寻找...)

(在你写任何东西之前,请考虑那里可能有应用程序自动执行此操作,或者甚至更聪明,例如在另一个答案中引用的应用程序。)