1

我有一个目录,我用热量成功地收获了。

Heat.exe dir "$(ProjectDir)\..\source\DataInterface" -v -cg DataInterfaceFiles -gg -scom -sreg -sfrag -srd -dr DATAINTERFACEFOLDER -var wix.DataInterface.Source -out "$(ProjectDir)\Product\DataInterface\DataInterfaceFiles.auto.wxs"

其中一个文件是需要注册 COM 互操作的 dll。

<Component Id="cmpXXXXXX" Guid="{GUID}">
  <File Id="filXXXXX4" KeyPath="yes" Source="!(wix.DataInterface.Source)\MyCompany.Ofd.InterfaceLog.dll" />
</Component>

Heat 正在正确生成所需的 .reg 文件,但是,CodeBase此文件中的值设置为构建服务器上的相对路径:

...
[HKEY_CLASSES_ROOT\CLSID\{GUID}\InprocServer32\2.10.8.1]
"Class"="MyCompany.Ofd.EventLogger"
"Assembly"="MyCompany.Ofd.InterfaceLog, Version=2.10.8.1, Culture=neutral, PublicKeyToken=xxx"
"RuntimeVersion"="v1.1.4322"
"CodeBase"="file:///H:/Installer/source/Services/DataInterface/MyCompany.Ofd.InterfaceLog.dll"
...

这意味着在安装到用户计算机时,由于路径不正确,文件未注册。

我尝试通过加热重新运行这个 reg 文件,看看它是否会做任何事情,但这没有帮助。相对路径仍然存在。

有没有办法用可以安装的文件路径生成 reg 文件?

4

1 回答 1

0

我有一个类似的问题,我(相信)我通过使用 -directoryid 开关来指定可以找到文件的已安装机器(例如,INSTALLDIR)上目录的 ID 来解决它。

于 2013-10-28T12:51:12.923 回答