【问题标题】:Web.config is never updatedWeb.config 永远不会更新
【发布时间】:2012-11-29 14:08:48
【问题描述】:

我有一个使用 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>    

【问题讨论】:

  • 您的 WiX 源文件的其余部分是什么样的?您是否将该组件包含在适当的功能中?
  • 是的,该组件已包含在我的功能中,否则无法编译。
  • 当它到达该组件时,安装日志中的内容是什么?

标签: installation wix windows-installer wix3.5


【解决方案1】:

我最终成功了。对我有用的代码是这样的:

<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" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多