首页 > 解决方案 > Wix:如何删除标记为永久的 GAC 文件

问题描述

以前版本的 MSI 将一些 GAC 文件标记为永久文件,现在我想在升级到同一程序的较新版本时删除这些文件。是否可以使用 Wix 代码执行此操作,还是我必须始终手动删除文件?

标签: wix

解决方案


我不知道您是否可以完全删除该组件,因为它是永久的,但您可以删除该文件。

我通过创建一个名为 Client.exe 的组件和一个名为 Server.dll 的组件进行了测试,该组件标记为 Permanent="yes" 和 Assembly=".net"。

 <DirectorySearch 
        Id="SERVERFOLDER" 
        Path="[WindowsFolder]Microsoft.NET\assembly\GAC_MSIL\Server\v4.0_1.0.0.0__bb771c317b736a07" AssignToProperty="yes">
      </DirectorySearch>
    
 <RemoveFile Id="oldfile" Property="SERVERFOLDER" Name="Server.dll" On="both"/>
 <RemoveFolder Id ="old" Property="SERVERFOLDER" On="both"/>

删除文件/文件夹元素被添加到 Client.exe 组件。

这会导致从 GAC 中删除 Server.dll。但我不得不问,为什么要打扰?GAC 中的文件具有强名称,不应破坏任何不引用它的内容。此外,它不会占用太多磁盘空间或用户真正看到的任何东西。


推荐阅读