我有一个 .NET 4.0 程序集,需要在安装过程中使 COM 可见。我正在使用 WiX(3.5 版),因此生成带有热量的 WiX 片段是合乎逻辑的选择。这很好用,除了我如何在加热时旋转旋钮,CodeBase RegistryValues 默认为“file:///C:/Windows/Microsoft.Net/assembly/GAC_32/...”,而程序集肯定不是安装在那个目录下。
因此,注册表项在安装过程中被正确添加,但指向一个不存在的程序集。不开心的一天。即使在最简单的用例(“heat asm.dll -out asm.wxs”)中,我也有这个问题。
到目前为止,选项似乎是:
在 WiX 项目的其他地方处理程序集的安装,然后在将片段传递给 WiX 工具链的其余部分之前手动修改片段中的 CodeBase 声明。
手动将 Assembly=".net" 属性添加到文件标签(http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/net-COM-registration-with-heat-td3606182.html )
使用 XSLT 转换片段 ( http://blog.accentient.com/2010/06/03/AddingHEATOutputToTheGAC.aspx )
这些选项都不是特别吸引人。有没有一种不涉及摆弄 XSLT 的自动化方法?