2009-07-29 10 views
5

momento disponiamo di 4 programmi di installazione per il nostro software client:Forza la sovrascrittura di App.config durante l'installazione

  • ClientSetupTest
  • ClientSetupProduction
  • ClientUpdateTest
  • ClientUpdateProduction

Le uniche differenze tra questi sono che il programma di installazione contiene i file ridistribuibili di Crystal Reports e l'aggiornamento lo fa no. Test e produzione specifica solo l'ambiente in cui vengono eseguiti e l'unica differenza è una riga nel file Client.exe.config.

Scemo, lo so, è per questo che li ho sostituiti tutti con un programma di installazione dopo aver eliminato Crystal Reports. Il nuovo programma di installazione scrive l'ambiente selezionato su setup.config, a cui fa riferimento l'attributo file (see here).

L'attributo "file" è nuovo nel file di configurazione con questo nuovo programma di installazione. Il problema che sto incontrando è che se modifichiamo il file Client.exe.config su una vecchia installazione, quindi eseguiamo il nuovo programma di installazione, il file di configurazione non viene mai aggiornato con l'attributo "file".

C'è un modo per forzare l'aggiornamento di un file? RemovePreviousVersions non funziona esattamente, dal momento che si tratta di un programma di installazione diverso, a meno che non stia fraintendendo qualcosa. La mia idea corrente, che probabilmente funzionerà, consiste nell'aggiungere codice nel metodo OnBeforeInstall per rinominare il vecchio Client.exe.config in un file di backup, quindi scriverà sempre il nuovo. Sembra che ci dovrebbe essere una soluzione più semplice all'interno del programma di installazione stesso, però. Qualche idea?

EDIT: Rinominare il vecchio file di configurazione su Client.exe.config.old prima di chiamare base.OnBeforeInstall() non ha funzionato. Ha rinominato il file, ma non ha mai scritto quello nuovo.

risposta

4

Windows Installer won't update a modified file.

file nonversioned sono dati utente-Se la data Modified è successiva alla data Creare per il file sul computer, non installare il file perché le personalizzazioni degli utenti saranno eliminati. Se le date Modificate e Crea sono uguali, installare il file. Se la data di creazione è successiva alla data modificata, il file viene considerato non modificato, installa il file.

avete alcune opzioni:

  • comprendono un'azione personalizzata che modifica il file al suo posto. Questo potrebbe essere un codice script o .NET.

  • fare come dici tu - spostare il file esistente fuori strada. L'installer non si fermerà su di esso. Ma devi assicurarti che ciò accada nell'ordine che stai immaginando. Potrebbe essere necessario Orca per capire l'ordine.

  • include un'opzione personalizzata per impostare la data di creazione su "oggi". Questo dovrebbe essere veramente semplice con un'azione personalizzata tramite script, usando lo Scripting.FileSystemObject. Quindi il programma di installazione di Windows lo sovrascriverà.

+0

Grazie. Darò l'opzione personalizzata un colpo. Avrò ancora il problema di non continuare con le loro impostazioni personalizzate, ma se è stato modificato, posso rilevarlo e copiare la vecchia configurazione. –

Problemi correlati