我已经创建了一个wixlib来共享一些wix项目中的片段。
我可以使用PropertyRef引用在我的主wix文件中具有属性的片段,但是如何在我想要其内容的大容量副本的地方引用片段呢?
例如,我有一个测试是否安装了.net框架的片段,我想将该片段包含在我的主wix文件的项目标记中……
下面是位于我的wixlib中的片段,我希望将其包含在几个wix项目中:
<Fragment Id="fm35">
<PropertyRef Id="NETFRAMEWORK35" />
<Condition Message="framework 3.5 is not installed">
<![CDATA[Installed OR NETFRAMEWORK35]]>
</Condition>
</Fragment>谢谢!!
发布于 2011-11-02 18:05:54
这是一个有趣的问题!教程说anything that can be delegated into a fragment has its variant tag:FeatureRef代表特性,PropertyRef代表属性,等等。然而,你问题中片段的内容没有发出任何错误,并且项目构建得很好。
我不知道这是有意还是无意,片段元素本身没有引用兄弟FragmentRef。由于某些原因,片段元素有一个可选的Id属性,但它被指定由高级用户设置为标记节。我不知道这是什么意思。
但是,看起来你可以在这里作弊。:-)在您的片段中添加一个伪ComponentGroup元素,该元素不包含任何真实组件:
<Fragment>
<PropertyRef Id="NETFRAMEWORK35" />
<Condition Message="framework 3.5 is not installed">
<![CDATA[Installed OR NETFRAMEWORK35]]>
</Condition>
<ComponentGroup Id="Fake" />
</Fragment>现在,您可以在主Product.wxs中引用该ComponentGroup,整个片段的内容将如手册所承诺的那样包括在内:
<Feature Id="ProductFeature" Title="My product feature" Level="1">
<ComponentRef Id="ProductComponent" />
<ComponentGroupRef Id="Fake"/>
</Feature>只要ComponentGroup对MSI本身没有任何意义,它就不会给MSI包带来垃圾。但它污染了源代码,当然...
发布于 2014-04-09 01:23:50
回到wix 2的旧时代,我们曾经有过FragmentRef元素。在Product部分中包含任何片段都非常容易,任何阅读xml的人都可以很容易地弄清楚正在做什么。
<FragmentRef Id="CustomActionFrag" />
<FragmentRef Id="PropertiesFrag" />现在,在WiX3中,他们删除了FragmentRef元素。不知道为什么。我发现它非常有趣,因为在我的Product元素中,我必须添加几个对“在我的片段中定义的东西”的引用。
<CustomActionRef Id="caDoSomething"/>
<PropertyRef Id="PropCryptic"/>如果我不这样做,片段将被完全忽略,并且不会进入最终的MSI。
对于任何阅读xml的人来说,这是非常神秘的。把我的FragmentRef还给我!
https://stackoverflow.com/questions/7978066
复制相似问题