如何在Wix中包含片段?
我创建了一个wixlib来共享一些wix项目中的片段。如何在Wix中包含片段?,wix,wix3.5,Wix,Wix3.5,我创建了一个wixlib来共享一些wix项目中的片段。 我可以使用PropertyRef引用在我的主wix文件中具有属性的片段,但是我如何引用需要其内容的大容量副本的片段?? 例如,我有一个测试是否安装了.net framework的片段,我想将该片段包含在项目标记的主wix文件中… 以下是我的wixlib中的片段,我想将其包含在几个wix项目中: <Fragment Id="fm35"> <PropertyRef Id="NETFRAMEWORK35" />
我可以使用PropertyRef引用在我的主wix文件中具有属性的片段,但是我如何引用需要其内容的大容量副本的片段??
例如,我有一个测试是否安装了.net framework的片段,我想将该片段包含在项目标记的主wix文件中…
以下是我的wixlib中的片段,我想将其包含在几个wix项目中:
<Fragment Id="fm35">
<PropertyRef Id="NETFRAMEWORK35" />
<Condition Message="framework 3.5 is not installed">
<![CDATA[Installed OR NETFRAMEWORK35]]>
</Condition>
</Fragment>
谢谢 这是一个有趣的问题! 教程说:FeatureRef代表Feature,PropertyRef代表Property,等等。但是,问题中片段的内容不会出现任何错误,项目构建也很好 我不知道这是否是有意的,Fragment元素本身没有ref兄弟FragmentRef。出于某种原因,Fragment元素有一个可选的Id属性,但是高级用户会将其设置为标记节。我不知道这是什么意思 但是,似乎你可以在这里作弊。:-)向片段中添加一个假的ComponentGroup元素,该元素不包含任何真实的组件:
<Fragment>
<PropertyRef Id="NETFRAMEWORK35" />
<Condition Message="framework 3.5 is not installed">
<![CDATA[Installed OR NETFRAMEWORK35]]>
</Condition>
<ComponentGroup Id="Fake" />
</Fragment>
现在,您可以在main Product.wxs中引用该组件组,整个片段的内容将按照手册的承诺包括在内:
<Feature Id="ProductFeature" Title="My product feature" Level="1">
<ComponentRef Id="ProductComponent" />
<ComponentGroupRef Id="Fake"/>
</Feature>
只要ComponentGroup对MSI本身没有任何意义,它就不会给MSI包带来垃圾。但是它污染了源代码,当然…在WIX2的旧时代,我们曾经有FragmentRef元素。 在您的产品部分中包含任何片段都是非常容易的,阅读xml的任何人都可以很容易地了解正在做什么
<FragmentRef Id="CustomActionFrag" />
<FragmentRef Id="PropertiesFrag" />
现在在WIX3中,他们已经消除了FragmentRef元素。不知道为什么。我觉得这很有趣,因为在我的产品元素中,我必须添加几个对“在我的片段中定义的东西”的引用
如果我不这样做,片段将被完全忽略,并且不会进入最终的MSI
这对于任何阅读xml的人来说都是非常神秘的。
把我的碎片还给我 谢谢你,燕!我已经将ComponentGroup添加到了我的片段中,将ComponentGroupRef添加到了我的功能中,但我不知道为什么,我得到了一个错误:未解析对Product:…部分中的符号WixComponentGroup:CMPGRP_Fake的引用。。。我已经引用了我的wixlib,我用PropertyRef引用的其他元素都可以。。。知道吗?嗯。。。你重新构建了wixlib吗?是的..没有错误…但是当我在功能中取消对ComponentGroupRef的注释时,我得到了错误。请确保ComponentGroup和ComponentGroupRef Id属性中的名称相同…我已经检查过,Id相同。。。我肯定错过了一些东西,但什么…再次感谢你的帮助我对这一点完全陌生,但在我看来,当你拉入多个.wxs文件时,你将它们添加到某种全局名称空间中。因此,似乎要使用它们,您必须显式地设置它们。
FragmentRef
是一个很好的功能,但它在Wix3和Wix4上已经出现了,通过Component
和ComponentRef
将片段“链接”到另一个内容的方式
<CustomActionRef Id="caDoSomething"/>
<PropertyRef Id="PropCryptic"/>