我正在使用包含少量dll的WiX创建安装程序。在原始脚本中首先调用gacutil.exe,然后调用每个dll的regasm。将这个想法转移到WiX时我遇到了问题。以下是安装到GAC中的代码片段:
<Component Id="GMAG.Core.Serialization.dll" Directory="_2.2.8.0" Guid="{my_guid}">
<File Id="my.dll" Source="my_src" Assembly=".net" KeyPath="yes" Checksum="yes"/>
</Component>
现在问题是WiX将如何执行程序集注册?我的问题是:
<File Id="my.dll" Source="my_src" KeyPath="yes"/>
因为必须只有一个keyPath =“yes”属性/组件。<File Id="my.dll" Source="my_src"/>
,因为它会生成编译错误。我知道在使用regasm
时我无需致电regsvr32
或heat
。在组件代码中:<File Id="my.dll" Source="my_src" KeyPath="yes"/>
应该足以进行注册。
我正在使用热量,现在我被卡住了,因为我也必须进行装配注册。
答案 0 :(得分:0)
Assembly =“。net”会将您的程序集放入GAC,然后您需要注册表项进行COM注册。如果你对程序集运行Heat,它应该生成你需要的代码片段。
答案 1 :(得分:0)
这就是我们如何通过WIX 3.5在GAC中注册DLL:
<Component Id="Level0GAC" Guid="21735A8C-DD0C-4f4e-8AB5-B5BB8C55726B" DiskId='1'>
<File Id='Level0' Name='DLLFileName.dll' DiskId='1' KeyPath="yes"
Source='DLLFileName.dll'
Checksum="yes" Assembly=".net" AssemblyManifest="Level0">
</File>
</Component>
实际上,组件中只能有一个文件,KeyPath设置为“是”,这就是为什么对于几个DLL你应该创建几个组件。