经过大量的试验和错误(主要是由于缺少文档和示例),我设法创建了MSI安装程序,将自定义DLL作为并行程序集安装到WinSxS.只有一个问题:卸载会将所有文件(DLL,清单和目录)保留在WinSxS目录中.怎么能或者我应该最好地清理它?我确信没有别的东西可以引用它.
我已经读过某个地方,WinSxS有一个自我清理过程,随着时间的推移清理,但我无法找到更多相关信息.你可以手动调用它来清理东西吗?
我看到的唯一另一种方法是手动删除这些位.首先,您必须将所有文件(程序集,目录,清单及其各自的目录)的所有者从SYSTEM更改为管理员帐户,调整权限并将其删除.注册表中还有一些部分(我认为HKLM\COMPONENTS\DerivedData\Components可能是一个地方),但由于WinSxS应该被视为不透明,因此很难找到任何信息.
清除不会暴露在我所知道的任何地方.我甚至不确定它何时自动启动.也许在卸载服务包时?也许某些工具管理员可以运行?我真的忘记了.
无论如何,我的建议是不要打它.那里有那么多曲折的转折,只是不值得尝试让磁盘空间回来.一旦卸载,SxS缓存中的位将不会被激活,因此它们只是浪费空间.
这是一个愚蠢的设计,但责怪微软,不要试图过度补偿.
这是一篇文章,它是WinSxS的完整指南.
因此,很快,您只能卸载一些组件(它们的所有版本都在此文件夹中),并且您可以运行Service Pack桥接刻录实用程序(在Vista中,它名为VSP1CLN.EXE,随SP1一起提供).请注意,执行后,您应该无法在SP发布日期之前卸载SP或任何要声明的组件.