wix - 设置值 XmlConfig

标签 wix

嗨,我正在尝试使用以下方法更改配置文件中的值设置:

    <Component Id="Enable32BitAppPoolComponent" Guid="*" Directory="INSTALLLOCATION">
        <CreateFolder/>
        <util:XmlConfig Id="Enable32BitAppPool" Node="value"
                      ElementPath="//configuration/system.applicationHost/applicationPools/add[\[]@name='DefaultAppPool'[\]]/@enable32BitAppOnWin64"
                      File="[inetsrv]\config\applicationHost.config"
                      Value="true" On="install"/>
    </Component>

此代码不会更改 applicationHost.config 中的值文件。我尝试添加 action="create"但是我在安装过程中遇到了无法打开 XML 文件的错误。我究竟做错了什么?

最佳答案

我认为使用 XmlFile 元素来修改属性值更方便:

<Component Id="Enable32BitAppPoolComponent" Guid="*" Directory="INSTALLLOCATION">
<CreateFolder/>
<util:XmlFile Id="Enable32BitAppPool" 
    Action="setValue"
    Name="enable32BitAppOnWin64" 
    ElementPath="//configuration/system.applicationHost/applicationPools/add[\[]@name='DefaultAppPool'[\]]" 
    File="[inetsrv]\config\applicationHost.config" 
    PreserveModifiedDate="yes"
    SelectionLanguage="XPath" 
    Sequence="INSERTCORRECTSEQUENCENUMBERHERE"
    Value="true" />
</Component>

您必须在上面的代码片段中正确分配序列号。

您的 XmlConfig 元素中也缺少 Sequence 属性,因此这可能是您的代码有问题。另一个问题是ElementPath的定义属性。添加 @enable32BitAppOnWin64它是错误的。 ElementPath属性定位您要更改的元素,在您的情况下是 add具有 name 的元素DefaultAppPool 的属性.在该元素中,您要更改属性的值。您可以按名称指定属性。为此,您必须添加 name归因于您的 XmlConfig元素。结合Node属性设置为 value属性定义完成。 Action XmlConfig 元素的属性必须设置为 create . VerifyPath XmlConfig 元素的属性用于确定是否应添加或修改节点。

XmlConfig 元素的正确版本应如下所示:
<Component Id="Enable32BitAppPoolComponent" Guid="*" Directory="INSTALLLOCATION">
    <CreateFolder/>
    <util:XmlConfig
    Id="Enable32BitAppPool"
    Action="create" 
    Node="value"
    ElementPath="//configuration/system.applicationHost/applicationPools/add[\[]@name='DefaultAppPool'[\]]"
    File="[inetsrv]\config\applicationHost.config"
    Name="enable32BitAppOnWin64"
    Value="true"
    On="install"/>
</Component>

如果您的安装程序告诉您它无法打开 XML 文件,那么您必须检查 File属性的值是正确的。也许你需要把它改成 "[INSTALLFOLDER]\config\applicationHost.config" 之类的东西或任何您设置的 Id你的安装目录的属性。安装程序日志应为您提供无法打开哪个文件的信息。

关于wix - 设置值 XmlConfig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18482610/

相关文章:

c# - 禁用 InstallFiles 的自动回滚

visual-studio - WIX 3.5 Visual Studio 项目为已安装文件的 .NET 版本创建多个 MSI

visual-c++ - 确定处理器是 AMD64 还是 Intel64?

wix - 如何修复 ICE57.Per-User 安装

wix - 在安装结束时打开 readme.txt 在 WiX 中失败

wix - 在 wix 中更改我的组件 GUID?

WiX:如何混合手动生成和自动生成的 .wxs 内容?

windows - 如何获取命令行参数并使用 wix 安装程序将其添加到注册表?

iis - 未选择 Web 功能时,如何禁用 Wix 中的 WebSite 操作?

c# - Wix-如何将目录复制到安装文件夹