2015-06-18 61 views
0

我遇到了一个奇怪的问题与“配置”msi我正在写WIX中使用XMLConfig检查,删除,然后在一个单一的XML文件中创建新的值。WIX XMLConfig不同的根元素名称

由于我发现WIX我一直在打包很多我们的手动配置过程,所以这是我的第7次或第8次,所以我基本上完成了上述步骤。

虽然我遇到了一个奇怪的情况,但我不确定如何让WIX理解。

同一文件可以改变它的视情况而定

当第一次安装根元素名称:

<DataSet> 
    <SomeStuff /> 
</DataSet> 

如果删除或更改已安装程序的“设置”对话框

<NewDataSet> 
    <SomeStuff /> 
</NewDataSet> 

我正在使用VerifyPath来检查删除和添加,但当xmlconfig的路径不在文件中时,它会显示错误,因此即使我有两组XMLCon无花果每个场景人会明显错误输出这是不希望

A组分摘录低于

<Component Id="C_MobileSettings" Guid="" KeyPath="yes"> 
    <CreateFolder Directory="MOBILEINSTALLLOCATION" /> 
    <XmlConfig 
     Id="MobileSettings_Key_Delete" 
     Action="delete" 
     ElementPath="//NewDataSet/GeneralSettings" 
     File="[MOBILESETTINGSPATH]" 
     Name="Key" 
     Node="element" 
     On="install" 
     Sequence="1" 
     VerifyPath="//NewDataSet/GeneralSettings/Key" 
     xmlns="http://schemas.microsoft.com/wix/UtilExtension" 
    /> 
    <XmlConfig 
     Id="MobileSettings_Key_Add" 
     Action="create" 
     ElementPath="//NewDataSet/GeneralSettings" 
     File="[MOBILESETTINGSPATH]" 
     Name="Key" 
     Node="element" 
     On="install" 
     Sequence="1" 
     Value="Product Key" 
     xmlns="http://schemas.microsoft.com/wix/UtilExtension" 
    /> 
</Component> 

这个配置MSI必须能够在任何点后的软件安装无论根部的状态的运行元素名称。

这是可能的直WIX或我会不得不写一个自定义操作?

回答

1

我不相信您需要自定义操作。 XmlConfig::ElementPath是一个XPath,您可以使用|(联合)运算符来执行影响任一名称的xml节点的单个操作。

+1

正是医生所订购的!像魅力一样工作。似乎我只是在错误的地方寻找答案。猜猜我需要刷新我的XPath知识,因为接下来会有更复杂的XML配置。谢谢你这么快速的解决方案,你已经救了我的理智! (至少在接下来的5分钟内,直到下一个WIX“哪里有记录?”时刻) – TofuBug

0

(发布代表问题作者)

对于其他人谁被这里发生的原因,是我如何解决了这个用亚当的伟大的建议:

<util:XmlConfig 
    Id="MobileSettings_Key_Create" 
    Action="create" 
    ElementPath="//(NewDataSet | DataSet)/GeneralSettings/Key" 
    File="[MOBILESETTINGSPATH]" 
    Node="value" 
    On="install" 
    Sequence="1" 
    VerifyPath="//(NewDataSet | DataSet)/GeneralSettings/Key" 
    Value="[PRODUCTKEY]" 
/> 

重新包装可怕的书面第三部分安装了坚实的一个月后,这是一个很好的转变有一个解决方案SOMETHING是这个简单而优雅。禅宗的转瞬即逝,但禅宗无所不及。

相关问题