2016-05-18 15 views
0

WIXツールセットを使用してサービスのインストールパッケージを作成しています。インストールパッケージは単純なxml置換のために働いていますが、私は複数のノードを "同じ"パスに置き換えても値を置き換えることができません。例のXML設定:インストール中に特定のXMLノード値をWIXに置き換える方法

<service name="service1"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.tcp://localhost:1234/service1" /> 
     </baseAddresses> 
    </host> 
</service> 
<service name="service2"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.tcp://localhost:1234/service2/" /> 
     </baseAddresses> 
    </host> 
</service> 

交換する簡単な方法は、「1234」、インストール時には、(1234 xmlファイルに一意である)WIXを使用して、すべてのノードでは、ありますか?もしそうなら、どうですか?

もしそうでなければ、特定のサービスノードをどのようにターゲットできますか?私の推測はElementPathですか?私は正しい値を含むプロパティ[newPortValue]を持っています。

<Component Id="xmlReplacerForService2" Guid="..."> 
    <util:XmlFile 
    Id="xmlReplacerForService2" 
    Action="setValue" 
    File="[TESTFILEPRODUCTDIR]service.exe.config" 
    SelectionLanguage="XPath" 
    Permanent="yes" 
    ElementPath="/service?WhatToAdd?" 
    Name="baseAddress" 
    Value="net.tcp://localhost:[newPortValue]/service2" /> 
</Component> 

これは可能ですか?

答えて

0

次のコードを試してみてください。 (私は今、これをテストすることができません。理由は何ですか?)それぞれのサービスエントリに複数のutil:XmlFile要素を持たなければなりません。

<util:XmlFile 
     Id="xmlReplacerForService2" 
     Action="setValue" 
     File="[TESTFILEPRODUCTDIR]service.exe.config" 
     SelectionLanguage="XPath" 
     Permanent="yes" 
     ElementPath="/service[\[]@name='service1'[\]]/host/baseAddresses/add" 
     Name="baseAddress" 
     Value="net.tcp://localhost:[newPortValue]/service2" /> 
+0

ありがとう、それはトリックでした。 – MOS

関連する問題