0

Wix 3.5 を使用して構築された MSI インストーラーがあり、これを使用してインストール中に web.config xml ファイルを編集しようとしています:

<Component Id="EditWebConfigToUseCertificate" Guid="xxx">   
    <util:XmlConfig Id="configureX509Value"
            File="[WebServiceFolder]web.config"
            ElementPath="configuration/system.serviceModel/behaviors/serviceBehaviors/behavior[\[]1[\]]/serviceCredentials/serviceCertificate"
            Name="x509FindType"
            Value="FindBySubjectName"
            Sequence="1" /> 
</Component>

ファイルの属性を変更することはできません。MSI は正常にインストールされますが、web.config は変更されません。ファイル パス (ハードコーディング) を確認しましたが、XPath も正しいです。ファイルを変更していないのはなぜですか?インストール ログにエラーは表示されません。

これは私のweb.configです:

<configuration> 
   <system.web>
    <compilation debug="true" targetFramework="4.0">
        <assemblies>
                <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E31" />
        </assemblies>
    </compilation>
        <!-- do not use asp.net authentication -->
        <authentication mode="None" />
    </system.web>

    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <clear />
                <behavior name="AuthenticationServiceBehavior">
                    <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />                    
                    <serviceDebug includeExceptionDetailInFaults="false" />
                    <!-- service credentials -->
                    <serviceCredentials>
                        <serviceCertificate storeLocation="LocalMachine" storeName="My" x509FindType="FindBySerialNumber" findValue="00 91 d9 2e 07 82 d8 99 c0" />
                    </serviceCredentials>
                </behavior>
                <behavior>                  
                    <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />                    
                    <serviceDebug includeExceptionDetailInFaults="false" />
                    <!-- service credentials -->
                    <serviceCredentials>
                        <serviceCertificate storeLocation="LocalMachine" storeName="My" x509FindType="FindBySerialNumber" findValue="00 91 d9 2e 07 82 d8 99 c0" />
                    </serviceCredentials>               
                </behavior>
        </serviceBehaviors>
     </behaviors>
</configuration>    
4

1 に答える 1

0

私は最終的にそれを機能させました。私のために働いたコードはこれでした:

<util:XmlConfig Id='configureX509Value' File='[WebServicesFolder]web.config'
                                Action='create' 
                                Name='findValue'
                                Node='value'
                                ElementPath="//configuration/system.serviceModel/behaviors/serviceBehaviors/behavior[\[]0[\]]/serviceCredentials/serviceCertificate"
                                Value="[CERT_SERIAL_NUMBER]"
                                On='install' 
                                PreserveModifiedDate='yes'
                                VerifyPath="//configuration/system.serviceModel/behaviors/serviceBehaviors/behavior[\[]0[\]]/serviceCredentials/serviceCertificate" />
于 2012-12-03T14:38:15.147 に答える