2013-08-28 13 views
5

Ciao Sto cercando di modificare un'impostazione valore in un file di configurazione utilizzando il seguente:impostazione di un valore 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> 

Questo codice non cambia il valore nel file applicationHost.config. Ho provato ad aggiungere il action="create" ma poi ho ricevuto l'errore durante l'installazione che non poteva aprire il file XML. Che cosa sto facendo di sbagliato?

risposta

2

penso che sia più conveniente utilizzare gli elementi XMLFILE per modificare i valori degli attributi:

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

È necessario assegnare correttamente il numero di sequenza nel frammento di cui sopra.

L'attributo di sequenza non è presente nell'elemento XmlConfig, pertanto potrebbe trattarsi di un problema con il codice. Un altro problema è la definizione dell'attributo ElementPath. Aggiungere @enable32BitAppOnWin64 è sbagliato. L'attributo individua l'elemento che si desidera modificare, nel tuo caso l'elemento add che ha l'attributo name di DefaultAppPool. In quell'elemento si desidera modificare il valore di un attributo. Si specifica l'attributo in base al suo nome. A tale scopo è necessario aggiungere l'attributo name all'elemento XmlConfig. In combinazione con l'attributo Node impostato su value, la definizione dell'attributo è completa. L'attributo Action dell'elemento XmlConfig deve essere impostato su create. L'attributo VerifyPath dell'elemento XmlConfig viene utilizzato per determinare se il nodo deve essere aggiunto o modificato.

La versione corretta del vostro elemento XMLConfig dovrebbe assomigliare a questo:

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

Se il vostro installatore ti dice che non può aprire il file XML, quindi è necessario verificare se il valore dell'attributo File è corretta. Forse hai bisogno di cambiarlo in qualcosa come "[INSTALLFOLDER]\config\applicationHost.config" o qualsiasi altra cosa tu abbia impostato l'attributo Id della tua directory di installazione. Il registro di installazione dovrebbe fornire le informazioni su quale file non è stato possibile aprire.

+1

Ci sono due ElementPath in uso: XmlConfig –

Problemi correlati