我在Visual Studio 2010中使用wix 3.8。
如果我在wxs文件中的片段中有2个组件,并且我只在一个功能中引用其中一个组件,则会出现ICE21错误,即存在未使用的组件。
如果我有一个带有组件的wxs文件,其中没有任何组件是功能的一部分,我没有得到任何错误,组件只是被静默跳过。
这是理想的行为吗?在这种情况下,有没有办法强制显示错误消息?
我问的原因是我计划使用wix创建一个安装程序,开发人员自己负责向安装程序添加新文件和组件。有一种方法可以确保他们(我们)不会忘记在功能中包含新组件。
答案 0 :(得分:1)
片段描述from the documentation,我强调了它应该回答你问题的部分:
Fragment元素是创建安装程序的构建块 WiX中的数据库。一旦定义,Fragment就变成了一个不可变的, 原子单位,可以完全包含在一个或从中排除 产品。 Fragment元素的内容可以链接到一个 产品利用众多* Ref元素中的一种。 在链接时 片段,有必要链接所有单独的单位。 例如,如果给定的Fragment包含两个Component元素,那么 必须使用ComponentRef为每个链接在两个功能下链接 零件。否则,您将收到链接器警告并拥有 浮动组件未出现在任何功能下。
因此,如果任何组件被引用到功能中,那么包含其所有组件的完整片段将被拉入构建中并向您发出警告/错误,表明您拥有孤立组件。
在第一种情况下,您在同一个片段中有两个组件,并且您只引用了一个,并且第二个组件出错。
如果你有一个包含许多组件的片段,并且你没有引用它们中的任何一个,那么Wix根本不会读取该片段。
在第二种情况下,所有组件都在同一个片段中,但没有任何组件被引用到Feature中,因此没有错误,因为根本没有使用该片段。