维克斯换热:部件的排列顺序

问题描述 投票:1回答:1

我希望能够到WXS文件进行比较 - 通过产生的热量 - 与以前的版本,这样我可以验证更改。

但是我无法找到组件为了后面的任何逻辑。生成的组件被标识,且未通过目录名称既不排序。而一向当我重新我WXS文件和某些文件已被添加,顺序是完全不同的,这使得表的比较非常困难。

有什么办法来控制排序顺序?理想的情况是,如果部件将由内文件节点的源进行排序。但是,任何恒定的顺序将是对我不够好。

例如。在下面的例子中,这将是巨大的,当这些部件被按文件源进行排序。 I.E.前AutoMapper log4net的

<Component Id="cmpB83..." Directory="DIR.MYDIR" Guid="{2A49...}">
    <File Id="filA272..." KeyPath="yes" source="$(var.MYVAR)\AutoMapper.xml" />
</Component>
<Component Id="cmp445..." Directory="DIR.MYDIR" Guid="{1C34...}">
    <File Id="filB356..." KeyPath="yes" source="$(var.MYVAR)\Log4Net.xml" />
</Component>

我开始用热参数如下:

heat.exe dir MYDIR -gg -dr DIR.MYDIR -srd -sreg -ke -cg compGroup.MYGROUP -var var.MYVAR -out ..\MYOUTPUT.wxs

我使用WiX的3.11。

sorting wix
1个回答
0
投票

由于没有答案,因为两年来,我会告诉我做了什么:

我用这个代码重新排序通过“源”组件中生成的文件,并将其存储到一个副本:

XDocument xdoc = XDocument.Load(filename);

XElement componentsFragment = xdoc.Root.Elements().ElementAt(1);
XElement componentGroup = componentsFragment.Elements().ElementAt(0);
List<XElement> components = componentGroup.Elements().ToList();
List<XElement> sortedComponents = components.OrderBy(one =>   one.Elements().ElementAt(0).Attribute("Source").Value).ToList();

componentGroup.RemoveNodes();
foreach (XElement component in sortedComponents)
{
  componentGroup.Add(component);
}

xdoc.Save(resultFilename);
© www.soinside.com 2019 - 2024. All rights reserved.