Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Wix中包含片段?_Wix_Wix3.5 - Fatal编程技术网

如何在Wix中包含片段?

如何在Wix中包含片段?,wix,wix3.5,Wix,Wix3.5,我创建了一个wixlib来共享一些wix项目中的片段。 我可以使用PropertyRef引用在我的主wix文件中具有属性的片段,但是我如何引用需要其内容的大容量副本的片段?? 例如,我有一个测试是否安装了.net framework的片段,我想将该片段包含在项目标记的主wix文件中… 以下是我的wixlib中的片段,我想将其包含在几个wix项目中: <Fragment Id="fm35"> <PropertyRef Id="NETFRAMEWORK35" />

我创建了一个wixlib来共享一些wix项目中的片段。
我可以使用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"/>