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"

ファイルの1つは、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 に答える