gpt4 book ai didi

Wix:将模块与多个 wxs 文件合并

转载 作者:行者123 更新时间:2023-12-04 14:51:11 25 4
gpt4 key购买 nike

所以,我正在尝试创建一个合并模块,其中有多个 wxs 文件。自从我的项目构建成功以来,我认为一切都很好。后来,我意识到其中一个二级 wxs 文件的 Source 属性中使用的路径完全错误,但编译器没有给出以下错误:

系统找不到文件'..\..\release_area\WrongPath\Component2.dll'。

在辅助 wxs 文件中,我添加了 目录引用 引用文件夹的元素 装配文件夹 在主 wxs 文件中创建两个文件之间的引用。

主 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 文件之间的引用是完全错误的,这就是编译器不验证文件路径但我无法弄清楚问题所在的原因。

最佳答案

问题不在编译器 (candle.exe) 中。 Candle.exe 创建单独的“部分”(模块和片段都是“部分”)。链接器 (light.exe) 负责将它们拉到一起。 Light.exe 从“入口部分”(产品、模块或补丁)开始,并从那里向下跟踪引用。由于您的 Main.wxs 没有对 Secondary.wxs 的引用,因此 Secondary.wxs 中的内容永远不会被拉入。要解决此问题,只需添加:
<ComponentRef Id="Component2.dll"/>
在你的 Module 元素下的某个地方(我通常把它们放在最后)。如果你有很多组件,那么 ComponentGroup 和 ComponentGroupRef 就会变得有用。

关于Wix:将模块与多个 wxs 文件合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1477770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com