2010-02-14 9 views
5

Ho una semplice applicazione WPF che utilizza ClickOnce per gestire l'installazione. All'interno di questa applicazione è un database compatto. Attraverso i test ho scoperto che quando pubblico una nuova build questo database verrà sovrascritto, il che non è quello che voglio. Esiste comunque un controllo a grana fine su quali file vengono aggiornati? Presumo che ClickOnce stia semplicemente controllando l'hash del file di database, decidendo che è stato modificato e che ha tirato l'aggiornamento.In che modo il programma di installazione ClickOnce gestisce gli aggiornamenti quando è coinvolto un database compatto?

Come soluzione temporanea, ho rimosso il database dai file inclusi con l'applicazione pubblicata in modo che l'originale resti sul computer client dopo un aggiornamento, non modificato.

Non una grande soluzione So

Grazie,

+0

cosa cambia con il database che causa l'hash da modificare? pensi che * vorrà * spingere una nuova versione del database in futuro? – codeConcussion

+0

in realtà non dovrebbe esserci nulla che cambi per quanto posso vedere a parte il timestamp di creazione/modifica, forse. Potrei voler aggiornare il database a un certo punto ma suppongo ora Im nella situazione in cui il database nella versione che Im publishing ha un hash diverso dall'originale, quindi clickonce vuole sovrascrivere ogni volta, il che significherebbe che gli utenti perdono dati . – Sergio

risposta

5

implementazioni ClickOnce segregare i file dell'applicazione in "Include" o "file di dati". È possibile specificare quale sia ciascun file in Visual Studio andando alla pagina Proprietà del progetto, scheda Pubblica, quindi facendo clic sul pulsante "File dell'applicazione ...". Puoi quindi impostare il tuo file .sdf su "File di dati" nella colonna Pubblica stato.

Dati I file scaricati con un'applicazione ClickOnce vengono quindi inseriti in una directory separata per ogni nuova versione.

L'idea è che al primo avvio della nuova versione dell'applicazione, recuperare tutti i dati privati ​​dell'utente dai file di dati della vecchia versione e incorporarli nei nuovi file di dati che sono stati appena scaricati con il nuovo versione.

Penso che troverete le informazioni necessarie a Accessing Local and Remote Data in ClickOnce Applications. In particolare, guarda le sezioni "Directory dei dati ClickOnce" e "Directory dei dati e versioni delle applicazioni".

Per accedere a un database di SQL Server CE che si trova nella directory di dati, utilizzare una stringa di connessione simile al seguente:

<add 
    name="MyApplication.Properties.Settings.LocalCacheConnectionString" 
    connectionString="Data Source=|DataDirectory|\LocalCache.sdf" 
    providerName="Microsoft.SqlServerCe.Client.3.5" /> 

Il "| DataDirectory |" è una sintassi speciale supportata da SQL CE e SQL Express e si risolve in runtime nella directory corretta.

+0

Com'è che la mia versione precedente dei file MDF sembra avere la 'data di modifica' della nuova versione?pensi che ci sia una possibilità che la precedente versione della directory dei dati venga sovrascritta con i nuovi file di dati? –

2

Se si dispone del valore aperto nel database SQLCE incluso nel progetto, verrà modificato il timestamp nel database e ClickOnce lo distribuirà e inserirà la versione precedente nella sottocartella \ pre.

Si potrebbe prendere in considerazione this method per la gestione di questo. Quindi se accidentalmente distribuisci una nuova versione del database e non te ne rendi conto, non verrai protetto. Se si apportano modifiche intenzionalmente, è possibile modificare la struttura del database del database corrente con le query SQL e trasferire i dati dalla nuova copia distribuita nella directory dati (che altrimenti si ignorerà) quando necessario.

RobinDotNet

Problemi correlati