2009-12-16 14 views
6

Ho un file di configurazione, myapp.exe.config, che voglio installare solo se non esiste già. Cioè, non voglio sovrascrivere alcun file di configurazione esistente. Come può essere fatto in WiX?Copia se non esiste in WiX

(In definitiva dovrò fare qualcosa di più sofisticato con le impostazioni, con le impostazioni predefinite e le sostituzioni e così via. Ma nel frattempo io sono solo alla ricerca di una soluzione a breve termine.)

risposta

12

Ciò che si descrive è il comportamento predefinito se il file è keypath di un componente. Ad esempio, il seguente componente non verrà installato se foo.config esiste già (o, nel caso di un file di versione, se un file con un numero di versione uguale o superiore esiste già):

<Component Id="foo.config"> 
    <File Source="foo.config"/> 
</Component> 

Si noti che se si dispone di più file nel componente, quindi solo uno può essere il keypath . È possibile controllare ciò impostando l'attributo KeyPath del file su yes. Ma la strategia raccomandata è di avere un solo file per componente, nel qual caso il file diventa automaticamente il keypath del componente.

modifica: notare che questo comportamento predefinito può essere sovrascritto con REINSTALLMODE property. Potresti voler aprire il tuo MSI con orca e vedere se questa proprietà viene impostata nella tabella delle proprietà.

+1

Grazie. Si scopre che ho fatto la domanda sbagliata. Il mio programma di installazione deve essere disinstallato prima di installarne uno nuovo. (Il tutorial mi assicura che è del tutto normale per un aggiornamento minore.) Il problema è che il file di configurazione viene eliminato anche se è stato modificato dall'utente. Dovrò indagare su questo. –