我正在编译一个 WiX 安装程序并使用 Heat 来收集我的文件,但我遇到了一个问题,我正在收集一个包含 1 个 C# COM dll 的目录。我需要基本上对此进行重新充气。我的 wix 项目文件中有以下内容来收集文件:
<HeatDirectory OutputFile="%(ProjectReference.Filename).wxs"
Directory="..\ExactaMobilePublish\"
DirectoryRefId="INSTALLFOLDER"
ComponentGroupName="%(ProjectReference.Filename)"
SuppressUniqueIds="true"
SuppressCom="false"
SuppressFragments="true"
SuppressRegistry="false"
SuppressRootDirectory="true"
AutoGenerateGuids="false"
GenerateGuidsNow="true"
ToolPath="$(WixToolPath)"
PreprocessorVariable="var.BasePath" />
我遇到的问题是,当它为我的 C# COM dll 生成必要的注册表信息时,它还在为该文件夹中未暴露给 COM 的一堆其他 dll 生成注册表信息。
有没有办法解决?我是否应该尝试将单个 C# COM dll 收集到单独的 wxs 文件中?
编辑
除了上面定义的目录之外,我确实尝试在单独的 WiX 文件中收集单个 C# COM dll,但我得到了预期的错误:
Error 5 Duplicate symbol 'Component:ExactaDatabaseAccess.dll' found. This typically means that an Id is duplicated. Check to make sure all your identifiers of a given type (File, Component, Feature) are unique. C:\TFS\Covance\Dev\ExactaMobileCNA317\Installer\ExactaMobileInstaller\ExactaMobile.wxs 143 1 ExactaMobileInstaller
我可能可以通过使用 xslt 转换从上面的目录中排除这个文件,但这似乎有点矫枉过正。