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ć.
Dostępne są dwie opcje ElementPath: XmlConfig –