そのため、複数の wxs ファイルがあるマージ モジュールを作成しようとしています。プロジェクトのビルドが成功したので、すべて問題ないと思っていました。後で、セカンダリ wxs ファイルの 1 つのソース属性で使用されているパスが完全に間違っていることに気付きましたが、コンパイラは次のエラーを表示しませんでした。
システムはファイル '..\..\release_area\WrongPath\Component2.dll' を見つけることができません。
セカンダリ wxs ファイルに、メイン wxs ファイルのAssemblyFolderフォルダーを参照するDirectoryRef要素を追加して、2 つのファイル間の参照を作成しました。
メイン wxs ファイル:
<Module Id="MyModule" Language="1033" Version="1.0.0.0">
<Package InstallerVersion="200" Platform="x86"/>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="AssemblyFolder">
<Component Id="Component1.dll">
<File Id="Component1.dll" Name="Component1.dll"
KeyPath="yes" Assembly=".net"
Source="..\..\release_area\Comp\Component1.dll" />
</Component>
</Directory>
</Directory>
</Module>
セカンダリ wxs ファイル:
<Fragment>
<DirectoryRef Id="AssemblyFolder">
<Component Id="Component2.dll">
<File Id="Component2.dll" Name="Component2.dll"
KeyPath="yes" Assembly=".net"
Source="..\..\release_area\WrongPath\Component2.dll" />
</Component>
</DirectoryRef>
</Fragment>
明確にするために: テストするため<Component Id="Component2.dll">
に、メイン wxs に直接コピーしたところ、エラーが発生しました:システムはファイル '..\..\release_area\WrongPath\Component2.dll' を見つけることができません。
私の推測では、セカンダリ wxs ファイルとメイン wxs ファイルの間の参照が完全に間違っているため、コンパイラはファイル パスを検証しませんが、何が問題なのかわかりません。