11

经过大量的试验和错误(主要是由于缺乏文档和示例),我设法创建了将自定义 DLL 作为并行程序集安装到 WinSxS 的 MSI 安装程序。只有一个问题:卸载会将所有文件(DLL、清单和目录)留在 WinSxS 目录中。我怎样才能或应该最好地清理它?我确信没有其他东西引用它。

我在某处读到 WinSxS 有一个自我清理过程,随着时间的推移会清理,但我找不到更多信息。你可以手动调用它来清理东西吗?

我看到的唯一其他方法是手动删除这些位。首先,您必须将所有文件(程序集、目录、清单及其各自目录)的所有者从 SYSTEM 更改为管理员帐户,调整权限并删除它们。注册表中还剩下一些部分(我认为 HKLM\COMPONENTS\DerivedData\Components 可能是一个地方),但由于 WinSxS 应该被视为不透明,因此很难找到任何信息。

4

6 回答 6

5

我所知道的任何地方都没有进行清除。我什至不确定它何时自动启动。也许在卸载服务包?也许一些工具管理员可以运行?我真的忘记了。

无论如何,我的建议是不要打它。那里有很多曲折的转弯,以至于不值得尝试恢复磁盘空间。一旦卸载,仍然在 SxS 缓存中的位将不会被激活,因此它们只是在浪费空间。

这是一个愚蠢的设计,但归咎于微软,不要试图过度补偿。

于 2009-02-08T17:24:44.133 回答
5

这是一篇文章,它是 WinSxS 的完整指南。

因此,很快,您只能卸载某些组件(它们的所有版本都在此文件夹中),并且您可以运行 Service Pack 桥接刻录实用程序(在 Vista 中它被命名为 VSP1CLN.EXE,并与 SP1 一起提供)。请注意,执行后,您应该无法在 SP 发布日期之前卸载 SP 或任何要声明的组件。

于 2010-08-31T15:08:59.670 回答
3

没有人相信你可以 - 没有完全重新安装,你臃肿的 WinSxS 目录就在那里。

在 technet 上对这个问题进行了长时间的“讨论”

没有有关格式的文档,也没有任何说明如何删除不再需要的文件 - MS 似乎认为磁盘空间很便宜。有一个自我清除功能,但没有人相信它有效,或者如果有效,它非常保守(正如您希望的那样,因为您不希望它破坏您的操作系统)

您可以通过检查“C:\Windows\winsxs\Temp\PendingDeletes”来判断清道夫正在工作。文件夹,因为这是 Windows 更新或安装程序将文件移动到的位置 - 清道夫只会删除此处的文件。

于 2009-02-08T17:24:53.070 回答
3

您会注意到,在您卸载程序集后,虽然文件仍然存在,但它们不再被绑定 - 所以它们只是“暂存”或缓存,但并未真正安装。

Rob & gbjbaanb 是正确的——你不能自己手动调用清除。不要尝试自己删除文件 - 注册表中有多个注册它们的位置,DerivedData\Components 只是众多引用之一。

我认为 Vista 的规则是在机器不活动 10 分钟后,在最后一次服务操作(服务包、修补程序等)之后,由 TrustedInstaller 服务启动清理。但它非常善变,因此它不会像应有的那样频繁运行。所以请耐心等待,文件会自行消失。

于 2009-02-13T08:50:50.020 回答
2

Well i was having some issues as i have an 80GB SSD for my windows and the WinSxs folder was about 12gb's

I was searching the net and i found this command:

DISM.exe /online /Cleanup-Image /spsuperseded

And now my WinSxs is 7gb which was wonderful news.

于 2012-03-27T06:28:49.307 回答
-1

有一些关于适用于较新操作系统的清理方法的更新。检查http://www.karafilis.net/winsxs-cleanup

于 2013-09-25T11:15:35.117 回答