wix - 找到重复的符号“文件:X.dll”,但文件具有不同的路径
问题描述
当我编译我的 WIX 项目时,我收到以下错误:
错误 LGHT0091:找到重复的符号“文件:X.dll”。这通常意味着一个 Id 是重复的。检查以确保给定类型(文件、组件、功能)的所有标识符都是唯一的。
错误 LGHT0092:与先前错误相关的符号位置。
<file>
我的组件是这样定义的,并且每个元素都发生了两个错误。
<!-- ... -->
<Component Id="AXdll" Guid="{12CFD2B0-CB29-458C-BCEF-35C9AFA88363}" Directory="A">
<File KeyPath="yes" Source="!(bindpath.A)\X.dll" />
</Component>
<!-- ... -->
<Component Id="BXdll" Guid="{3DE33C12-72FD-412A-8685-BE4A6FB5A538}" Directory="B">
<File KeyPath="yes" Source="!(bindpath.B)\X.dll" />
</Component>
<!-- ... -->
这两个 X.dll 文件是位于不同目录中的不同文件。
解决方案
正如指定的,<file>
标签没有ID
属性。当 WIX 遇到此问题时,它会创建一个默认 ID。它通过仅获取Source
属性的文件名来完成此操作。因此,这两个文件位于不同的目录中并不重要,它们仍然具有相同的 ID“X.dll”。
为了纠正这个问题,有必要明确地给出 ID 属性,如下所示:
<!-- ... -->
<Component Id="AXdll" Guid="{12CFD2B0-CB29-458C-BCEF-35C9AFA88363}" Directory="A">
<File ID="A_X.dll" KeyPath="yes" Source="!(bindpath.A)\X.dll" />
</Component>
<!-- ... -->
<Component Id="BXdll" Guid="{3DE33C12-72FD-412A-8685-BE4A6FB5A538}" Directory="B">
<File ID="B_X.dll" KeyPath="yes" Source="!(bindpath.B)\X.dll" />
</Component>
<!-- ... -->
推荐阅读
- qt - Material TextInput 难以识别
- javascript - 我想使用 nodejs 从 API 生成动态站点地图并表达
- java - 解决“org.apache.storm.thrift.transport.TTransportException”
- python - 是否可以将 lambda 表达式作为 f-String 中打印函数的参数传递?
- r - 用许多变化的变量为ggplot分配稳定的颜色
- amazon-web-services - 按时间创建过滤 aws ebs 卷
- javascript - 网页上的本地文件搜索引擎
- 8051 - LOW() HIGH() 使用变量而不是值
- php - 更改哪个图像版本被调用到 wordpress 插件中
- python - 在有组织的数据框上将数据输入 Python