Fra*_* B. 4 windows-installer wix wix3 merge-module
所以,我正在尝试创建一个合并模块,我有多个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>
Run Code Online (Sandbox Code Playgroud)
辅助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>
Run Code Online (Sandbox Code Playgroud)
只是为了澄清:为了测试,我<Component Id="Component2.dll">直接在主wxs中复制了我并得到错误:系统找不到文件'..\..\release_area\WrongPath\Component2.dll'.
所以,我的猜测是辅助wxs文件和主wxs文件之间的引用是完全错误的,这就是为什么编译器不验证文件路径但我无法弄清楚问题是什么.
问题不在编译器(candle.exe)中.Candle.exe创建单独的"部分"(模块和片段都是"部分").链接器(light.exe)负责将它们全部拉到一起.Light.exe从"入口部分"(产品,模块或补丁)开始,并从那里开始跟随参考.由于您没有从Main.wxs到Secondary.wxs的引用,因此Secondary.wxs中的内容永远不会被拉入.要解决此问题,只需添加:
<ComponentRef Id="Component2.dll"/>
在Module元素下的某个地方(我通常将它们放在最后).如果你有很多组件,那么ComponentGroup和ComponentGroupRef就变得很有用了.
| 归档时间: |
|
| 查看次数: |
4887 次 |
| 最近记录: |