2013-08-28 26 views
5

Hi Tôi cố gắng để thay đổi một thiết lập giá trị trong một tập tin cấu hình bằng cách sử dụng sau đây:Việc đặt giá trị XmlConfig

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

Mã này không thay đổi giá trị trong file applicationHost.config. Tôi đã thử thêm action="create" nhưng sau đó tôi đã nhận được lỗi trong quá trình thiết lập mà nó không thể mở tệp XML. Tôi đang làm gì sai?

Trả lời

2

Tôi nghĩ đó là thuận tiện hơn để sử dụng các yếu tố xmlFile để thay đổi giá trị thuộc tính:

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

Bạn phải gán một cách chính xác số lượng trình tự trong đoạn mã trên.

Thuộc tính Chuỗi cũng bị thiếu trong phần tử XmlConfig của bạn, do đó có thể là sự cố với mã của bạn. Một vấn đề khác là định nghĩa thuộc tính ElementPath. Thêm @enable32BitAppOnWin64 vào đó là sai. Thuộc tính ElementPath xác định phần tử bạn muốn thay đổi, trong trường hợp của bạn là phần tử add có thuộc tính nameDefaultAppPool. Trong phần tử đó, bạn muốn thay đổi giá trị của một thuộc tính. Bạn chỉ định thuộc tính theo tên của nó. Vì mục đích đó, bạn phải thêm thuộc tính name vào phần tử XmlConfig của mình. Kết hợp với thuộc tính Node được đặt thành value định nghĩa thuộc tính hoàn tất. Thuộc tính Action của phần tử XmlConfig phải được đặt thành create. Thuộc tính VerifyPath của phần tử XmlConfig được sử dụng để xác định nếu Nút được thêm hoặc sửa đổi.

Phiên bản đúng của nguyên tố XmlConfig của bạn sẽ giống như thế này:

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

Nếu cài đặt của bạn sẽ cho bạn biết nó không thể mở tập tin XML, sau đó bạn phải kiểm tra xem giá trị File thuộc tính là chính xác. Có lẽ bạn cần phải thay đổi nó thành một cái gì đó như "[INSTALLFOLDER]\config\applicationHost.config" hoặc bất cứ điều gì bạn đặt thuộc tính Id của thư mục cài đặt của bạn. Nhật ký trình cài đặt sẽ cung cấp cho bạn thông tin mà tệp không thể mở được.

+1

Có hai ElementPath trong bạn sử dụng: XmlConfig –

Các vấn đề liên quan