我希望能够到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。
由于没有答案,因为两年来,我会告诉我做了什么:
我用这个代码重新排序通过“源”组件中生成的文件,并将其存储到一个副本:
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);