2009-07-29 9 views
24

Ogni volta che compilo la mia app e il numero di versione cambia (ho un numero di build a incremento automatico), perdo le impostazioni app.config configurate dall'utente, poiché sono memorizzate nella cartella AppData per una versione specifica. In sostanza, ogni versione della mia applicazione inizia da zero per quanto riguarda le impostazioni dell'utente."Aggiorna" automaticamente le impostazioni utente dalla versione precedente del file app.config?

Mentre questo è un lieve fastidio in fase di sviluppo, solleva la questione mentre mi avvicino alla distribuzione/rilascio - se utilizzo app.config per memorizzare le mie impostazioni utente, le impostazioni personalizzate dell'utente verranno hosed ogni volta che installano un patch che cambia il numero di versione della mia app? In tal caso, c'è un modo semplice per "aggiornare" le impostazioni della versione precedente? So che l'utilizzo di HKCU nel registro è un'altra opzione, ma mi piace la facilità dello spazio dei nomi My.Settings e mi piacerebbe rimanere con app.config.

Another SO question chiede qualcosa di simile, anche se la risposta non sembra così chiara. L'impostazione del mio MSI in modo che richieda all'utente di eseguire l'aggiornamento sia sufficiente per conservare queste impostazioni a livello utente?

risposta

34

Hai guardato ApplicationSettingsBase.Upgrade()? Permette le impostazioni da aggiornare da una versione precedente utilizzando la seguente chiamata:

My.Settings.Upgrade() 
+5

Questo è esattamente il comportamento che stavo cercando: recupera la copia più recente delle impostazioni e le carica. Vale anche la pena notare che il metodo ApplicationSettingsBase.GetPreviousVersion, che è possibile utilizzare per caricare una singola impostazione da una versione precedente. Grazie! – SqlRyan

1

Avete considerato la distribuzione di ClickOnce? Questo argomento è quindi coperto in depth. IMO, ClickOnce è molto più facile sia per lo sviluppatore che per l'utente.

+5

ClickOnce è eccezionale finché non funziona, quindi il debug è quasi impossibile. Lo usavamo e lo sostituivamo con un programma di tipo "launcher", perché c'erano troppe cose che potevano andare storte fuori dal nostro controllo e senza una registrazione sufficiente che lasciava il sol utente. –

7

Non so perché, ma né il comando di aggiornamento o la versione precedente ottenere sembra funzionare per me. Cosa potrei fare di sbagliato? Devo chiamare un comando di aggiornamento o qualcosa del genere. Sto facendo questo sul caricamento del modulo, dovrebbe essere un evento applicativo?

UPDATE

scoperto perché, a quanto pare non funziona quando si utilizza un numero di versione principale a 4 cifre. Stavo usando l'anno 2012 come numero di versione principale. Ho cambiato quello a 12 e funziona come un fascino, anche se non è conforme al millennio. Ho ancora 88 anni prima di iniziare a preoccuparmi di questo!

Problemi correlati