【发布时间】:2017-11-09 18:47:34
【问题描述】:
要么是我对 WiX 不了解的地方,要么是历史上最大的巧合一次又一次地发生。
我有一个<Component/> 元素。在这个组件中,我将 GUID 分配为星号.....就像你做的那样。
<Component Id="Component_PowershellDLL"
Guid="*">
<File Source="$(var.MyProject.ProjectDir)System.Management.Automation.dll"/>
</Component>
(我知道我应该使用 Nuget 来访问这个 DLL,但那是另一回事了......)
当我编译时,我得到这个错误信息:
Component/@Id='Component_PowershellDLL' 有一个 @Guid 值'{guid-here}',它复制了此包中的另一个组件。
组件中的 DLL 在项目的其他地方使用,但它唯一存在的地方是“MyProject”文件夹(因此,(var.MyProject.ProjectDir))。
我没有在我去掉星星并放入一个普通的旧 Guid 时收到错误。
任何人都可以对此有所了解吗?我的印象是,当使用星号时,它只会生成一个新的 Guid。那么它生成的 Guid 怎么可能在项目的其他地方呢?
我明白了。我确实将组件安装的 DLL 保留在同一解决方案中(所示示例中的MyProject)。
所以,是的,组件中通过宏引用的 DLL 存在于 Visual Studio 解决方案中。
我想如果他们有不同的 GUID(存在于另一个项目中的 DLL 和我放入安装所述 DLL 的组件中的 GUID),那么 Windows Installer 将有两个 GUID 用于相同的东西......
谢谢大家。你们是我涉足 Windows Installer 世界的真正帮助。
@PhileDW 你的书就在我身边,但我还没有时间真正深入了解它。
【问题讨论】:
-
如果你得到一个有用的答案,你应该接受它。 stackoverflow.com/help/accepted-answer
-
在我的情况下,这似乎是由长 File/@Source 路径(或者可能是带有句点的目录名?)Wix 应该根据文件名部分生成 GUID of Source="...",但我的猜测是它错误地解析了源路径,并基于所有文件相同的路径的一部分生成...
标签: wix windows-installer components guid