2012-04-12 22 views
6

Este es un problema que solo ocurre para algunos usuarios. Cada vez que lanzo una nueva versión de mi aplicación en Marketplace recibo correos electrónicos de usuarios que dicen que se han perdido todas las configuraciones en la aplicación.La aplicación pierde todas las configuraciones cuando se instala la actualización de la aplicación

No puedo reproducir esto yo mismo y no tengo ningún código que pueda borrar IsolatedStorage.

Sería genial si alguien tuviera alguna pista sobre lo que podría estar causando esto.

+0

También estoy interesado en tu problema. Observé algo similar al probar mi aplicación. Cuando se ejecuta desde Visual Studio y se dirige al teléfono (no al emulador), a veces se borra la base de datos y se vuelve a crear, otras veces simplemente se actualiza el código sin eliminar la base de datos. – Dante

Respuesta

3

Actualización: No estoy seguro de si lo siguiente se aplica a las aplicaciones WP7. Lo dejaré aquí por si acaso. Solo he probado esto para aplicaciones normales.

Deberá "actualizar" el archivo de configuración anterior.

También necesita saber cuándo debe hacer esto (es decir, solo cuando se instala una nueva versión).

Para saber cuándo debe actualizar la configuración, agregue un booleano llamado (digamos) NeedSettingsUpgrade a su configuración, y de forma predeterminada a verdadero.

luego llamar a la siguiente función en algún lugar cerca del comienzo de Main():

/// <summary>Upgrades the application settings, if required.</summary> 
private static void upgradeApplicationSettingsIfNecessary() 
{ 
    // Application settings are stored in a subfolder named after the full #.#.#.# version number of the program. This means that when a new version of the program is installed, the old settings will not be available. 
    // Fortunately, there's a method called Upgrade() that you can call to upgrade the settings from the old to the new folder. 
    // We control when to do this by having a boolean setting called 'NeedSettingsUpgrade' which is defaulted to true. Therefore, the first time a new version of this program is run, it will have its default value of true. 
    // This will cause the code below to call "Upgrade()" which copies the old settings to the new. 
    // It then sets "NeedSettingsUpgrade" to false so the upgrade won't be done the next time. 

    if (Settings.Default.NeedSettingsUpgrade) 
    { 
     Settings.Default.Upgrade(); 
     Settings.Default.NeedSettingsUpgrade = false; 
    } 
} 

Nota: Usted, por supuesto que tenga que llamar Settings.Default.Save() antes de que sus salidas del programa, de lo contrario los ajustes cambian no se persistido.

+0

¿Este código es para aplicaciones que no sean WP7? – John

2

Mi enfoque para esto ha sido utilizar el número de versión del ensamblaje como el desencadenante de la actualización. En la primera ejecución, guarda la configuración en el formato requerido para v1.0 y el número de versión del ensamblaje 1.0.0.0. Cuando ocurre una actualización, compara el número de configuración guardada (1.0.0.0) con el número de ensamblaje actualizado 1.1.0.0 y decide que se necesita una actualización.

Descubrí que hacer una redistribución para Visual Studio no garantizaba realizar una actualización, a veces se desinstalaba y reinstalaba, lo que no era tan bueno. Así que cambié a usar Windows Phone Powertools para probar mi ruta de "actualización" ya que parece realizar actualizaciones de manera confiable.

+0

Gracias, echaré un vistazo. Pero todavía tengo el problema, ¿tienes alguna idea sobre qué está causando esto? – John

Cuestiones relacionadas