2014-02-06 3 views
0

내 wix 설치 프로그램에 wcf 바인딩을 web.config에 추가하는 구성 요소가 있습니다. 이제 다른 wcf 서비스를 사용하여 기본 제품을 설치하면 설치 프로그램이 바인딩 정보를 web.config에 추가하지 않습니다.Wix XmlConfig VerifyPath 동작

나는 이미의 Web.config의 다른 서비스에 대한있는 wsHttpBinding 요소가 있기 때문에 그것이 확신합니다.

제 질문은 내 VerifyPath의 경로를 사용할 수 있습니까? 해당 루트 요소가 있는지 여부를 확인하는 대신에 그 아래의 중첩 요소에 찾고자하는 이름이 있는지 확인할 수 있습니까? 다음은

참조 내 XmlConfig 문입니다 :

   <util:XmlConfig Id="EndPointIP_wsHttpBinding" Action="create" On="install" Node="element" Name="wsHttpBinding" ElementPath="/configuration/system.serviceModel/bindings" File="[Web]web.config" VerifyPath="/configuration/system.serviceModel/bindings/wsHttpBinding" Sequence="1" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding" Action="create" On="install" Node="element" Name="binding" ElementPath="/configuration/system.serviceModel/bindings/wsHttpBinding" File="[Web]web.config" VerifyPath="/configuration/system.serviceModel/bindings/wsHttpBinding/binding" Sequence="2" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_name" ElementId="EndPointIP_wsHttpBinding_binding" Name="name" Value="wsHTTPBindingConfig" File="[Web]web.config" Sequence="3" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_closeTimeout" ElementId="EndPointIP_wsHttpBinding_binding" Name="closeTimeout" Value="00:10:00" File="[Web]web.config" Sequence="4" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_openTimeout" ElementId="EndPointIP_wsHttpBinding_binding" Name="openTimeout" Value="00:10:00" File="[Web]web.config" Sequence="5" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_receiveTimeout" ElementId="EndPointIP_wsHttpBinding_binding" Name="receiveTimeout" Value="00:10:00" File="[Web]web.config" Sequence="6" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_sendTimeout" ElementId="EndPointIP_wsHttpBinding_binding" Name="sendTimeout" Value="00:10:00" File="[Web]web.config" Sequence="7" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_maxBufferPoolSize" ElementId="EndPointIP_wsHttpBinding_binding" Name="maxBufferPoolSize" Value="524288" File="[Web]web.config" Sequence="8" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_maxReceivedMessageSize" ElementId="EndPointIP_wsHttpBinding_binding" Name="maxReceivedMessageSize" Value="2147483647" File="[Web]web.config" Sequence="9" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_readerQuotas" Action="create" On="install" Node="element" Name="readerQuotas" ElementPath="/configuration/system.serviceModel/bindings/wsHttpBinding/binding" File="[Web]web.config" VerifyPath="/configuration/system.serviceModel/bindings/wsHttpBinding/binding/readerQuotas" Sequence="10" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_readerQuotas_maxDepth" ElementId="EndPointIP_wsHttpBinding_binding_readerQuotas" Name="maxDepth" Value="32" File="[Web]web.config" Sequence="11" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_readerQuotas_maxStringContentLength" ElementId="EndPointIP_wsHttpBinding_binding_readerQuotas" Name="maxStringContentLength" Value="2147483647" File="[Web]web.config" Sequence="12" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_readerQuotas_maxArrayLength" ElementId="EndPointIP_wsHttpBinding_binding_readerQuotas" Name="maxArrayLength" Value="2147483647" File="[Web]web.config" Sequence="13" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_readerQuotas_maxBytesPerRead" ElementId="EndPointIP_wsHttpBinding_binding_readerQuotas" Name="maxBytesPerRead" Value="4096" File="[Web]web.config" Sequence="14" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_readerQuotas_maxNameTableCharCount" ElementId="EndPointIP_wsHttpBinding_binding_readerQuotas" Name="maxNameTableCharCount" Value="16384" File="[Web]web.config" Sequence="15" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_security" Action="create" On="install" Node="element" Name="security" ElementPath="/configuration/system.serviceModel/bindings/wsHttpBinding/binding" File="[Web]web.config" VerifyPath="/configuration/system.serviceModel/bindings/wsHttpBinding/binding/security" Sequence="16" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_security_mode" ElementId="EndPointIP_wsHttpBinding_binding_security" Name="mode" Value="None" File="[Web]web.config" Sequence="17" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_security_transport" Action="create" On="install" Node="element" Name="transport" ElementPath="/configuration/system.serviceModel/bindings/wsHttpBinding/binding/security" File="[Web]web.config" VerifyPath="/configuration/system.serviceModel/bindings/wsHttpBinding/binding/security/transport" Sequence="18" /> 
      <util:XmlConfig Id="EndPointIP_transport_clientCredentialType" ElementId="EndPointIP_wsHttpBinding_binding_security_transport" Name="clientCredentialType" Value="None" File="[Web]web.config" Sequence="19" /> 
      <util:XmlConfig Id="EndPointIP_wsHttpBinding_binding_security_message" Action="create" On="install" Node="element" Name="message" ElementPath="/configuration/system.serviceModel/bindings/wsHttpBinding/binding/security" File="[Web]web.config" VerifyPath="/configuration/system.serviceModel/bindings/wsHttpBinding/binding/security/message" Sequence="20" /> 
      <util:XmlConfig Id="EndPointIP_security_message_establishSecurityContext" ElementId="EndPointIP_wsHttpBinding_binding_security_message" Name="establishSecurityContext" Value="false" File="[Web]web.config" Sequence="21" /> 
      <util:XmlConfig Id="EndPointIP_endpoint" Action="create" On="install" Node="element" Name="endpoint" ElementPath="/configuration/system.serviceModel/client" File="[Web]web.config" VerifyPath="/configuration/system.serviceModel/client/endpoint" Sequence="22" /> 
      <util:XmlConfig Id="EndPointIP_endpoint_address" ElementId="EndPointIP_endpoint" Name="address" Value="[CLAIMSURL]" File="[Web]web.config" Sequence="23" /> 
      <util:XmlConfig Id="EndPointIP_endpoint_binding" ElementId="EndPointIP_endpoint" Name="binding" Value="wsHttpBinding" File="[Web]web.config" Sequence="24" /> 
      <util:XmlConfig Id="EndPointIP_endpoint_bindingConfiguration" ElementId="EndPointIP_endpoint" Name="bindingConfiguration" Value="wsHTTPBindingConfig" File="[Web]web.config" Sequence="25" /> 
      <util:XmlConfig Id="EndPointIP_endpoint_contract" ElementId="EndPointIP_endpoint" Name="contract" Value="LossHistoryService" File="[Web]web.config" Sequence="26" /> 

답변

1

은 기본적으로 VerifyPath가 XPATH 쿼리를 사용하기 때문에 당신이 속성을 선택하는 적절한 쿼리를 작성하는 경우는

TO를 비교 또는 확인 할 수 있어야한다 Web.config의 내 항목 "service1binding"을 선택, 우리는 다음과 같은 XPATH 쿼리를 사용하는 것이

<wsHttpBinding> 
<binding name="service1binding"> 

XPATH 쿼리

"/configuration/system.serviceModel/bindings/wsHttpBinding/binding[@name='service1binding']"

위의 XPATH 쿼리는 WIX 포맷되지 않았습니다 그리고 당신은 그것이 VERIFYPATH는 따라서에서 대괄호 포맷 필드 것을

참고 인 방법을 사용할 수 없습니다 XPath를 이스케이프 처리해야합니다. 또한 XPath는 백 슬래시를 사용하여 문자를 이스케이프 처리 할 수 ​​있으므로 리터럴 백 슬래시를 포함하려는 경우이 속성에서 이중 슬래시를 사용하여 이스케이프 처리해야합니다. 이 문자열은 MSI에서 먼저 형식화되며 결과는 XPath로 사용됩니다.

+0

감사합니다. 알고 싶습니다. – twreid