Domanda

Al momento abbiamo 4 programmi di installazione per il nostro software client:

  • ClientSetupTest
  • ClientSetupProduction
  • ClientUpdateTest
  • ClientUpdateProduction

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

Scemo, lo so, ecco perché li ho sostituiti tutti con un programma di installazione dopo aver eliminato Crystal Reports. Il nuovo programma di installazione scrive l'ambiente selezionato in setup.config, a cui fa riferimento l'attributo del file ( vedi qui ).

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

Esiste un modo per forzarlo ad aggiornare un file? RemovePreviousVersions non funziona esattamente, poiché è un programma di installazione diverso, a meno che non abbia frainteso qualcosa. La mia idea attuale, che probabilmente funzionerà, è quella di aggiungere il codice nel metodo OnBeforeInstall per rinominare il vecchio Client.exe.config in un file di backup, quindi scriverà sempre quello nuovo. Sembra però che ci dovrebbe essere una soluzione più semplice all'interno dell'installer stesso. Qualche idea?

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

È stato utile?

Soluzione

Windows Installer non aggiorna un file modificato .

  

I file non controllati sono Dati utente & # 8212; Se la data modificata è successiva   rispetto alla data di creazione per il file sul computer, non installare   il file perché le personalizzazioni dell'utente verrebbero eliminate. Se modificato   e Crea date sono le stesse, installa il file. Se la data di creazione   è successiva alla data modificata, il file è considerato non modificato,   installa il file.

Hai alcune opzioni:

  • include un'azione personalizzata che modifica il file in atto. Potrebbe trattarsi di un script o codice .NET .

  • fai come dici tu - sposta il file esistente di mezzo. L'installer non si fermerà su di esso. Ma devi assicurarti che accada nell'ordine che stai immaginando. Potrebbe essere necessario Orca per capire l'ordinamento .

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top