2013-08-28 15 views
5

Hi Próbuję zmienić ustawienie wartości w pliku konfiguracyjnym przy użyciu następujących:Ustawienie wartości 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> 

Kod ten nie zmienia wartości w pliku applicationHost.config. Próbowałem dodać action="create", ale dostałem błąd podczas instalacji, że nie można otworzyć pliku XML. Co ja robię źle?

Odpowiedz

2

myślę, że to bardziej wygodne w użyciu elementy XmlFile zmodyfikować wartości atrybutów:

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

Trzeba prawidłowo przypisać numer sekwencji w fragmencie powyżej.

W elemencie XmlConfig brakuje również atrybutu Sequence, co może być przyczyną problemu z kodem. Kolejnym problemem jest definicja atrybutu ElementPath. Dodanie @enable32BitAppOnWin64 jest nieprawidłowe. Atrybut ElementPath lokalizuje element, który chcesz zmienić, w twoim przypadku element add, który ma atrybut name z DefaultAppPool. W tym elemencie chcesz zmienić wartość atrybutu. Atrybut określasz według jego nazwy. W tym celu musisz dodać atrybut name do swojego elementu XmlConfig. W połączeniu z atrybutem Node ustawionym na value definicja atrybutu została zakończona. Atrybut elementu XmlConfig musi być ustawiony na create. Atrybut elementu XmlConfig ma wartość VerifyPath w celu ustalenia, czy węzeł powinien zostać dodany lub zmodyfikowany.

Poprawna wersja elemencie XmlConfig powinna wyglądać następująco:

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

Jeśli instalator mówi, że nie może otworzyć pliku XML, a następnie trzeba sprawdzić, czy wartość atrybutu File jest poprawna. Może musisz zmienić to na coś takiego jak "[INSTALLFOLDER]\config\applicationHost.config" lub cokolwiek, co ustawisz atrybut Id na twój katalog instalacyjny. Dziennik instalatora powinien dostarczyć ci informacji, których pliku nie można otworzyć.

+1

Dostępne są dwie opcje ElementPath: XmlConfig –

Powiązane problemy