所以,我正在尝试创建一个合并模块,其中有多个 wxs 文件。自从我的项目构建成功以来,我认为一切都很好。后来,我意识到其中一个二级 wxs 文件的 Source 属性中使用的路径完全错误,但编译器没有给出以下错误:
系统找不到文件'..\..\release_area\WrongPath\Component2.dll'。
在辅助 wxs 文件中,我添加了一个DirectoryRef元素,该元素引用主 wxs 文件中的文件夹AssemblyFolder以创建两个文件之间的引用。
主 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 文件之间的引用是完全错误的,这就是编译器不验证文件路径但我无法弄清楚问题所在的原因。