嗨,我正在尝试使用以下方法更改配置文件中的值设置:
<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/