我认为使用 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
元素具有. 在该元素中,您要更改属性的值。您可以通过名称指定属性。为此,您必须将属性添加到您的元素。结合属性集到属性定义就完成了。XmlConfig 元素的属性必须设置为。这name
DefaultAppPool
name
XmlConfig
Node
value
Action
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
安装目录的属性设置为的任何内容。安装程序日志应为您提供无法打开文件的信息。