2012-09-07 9 views
7

En mi aplicación WinRT almaceno datos de usuario (no datos de sesión) en un archivo local. El archivo se guarda y carga a través de ApplicationData.Current.LocalFolder.Cambiar la aplicación de una aplicación WinRT destruye los datos de las aplicaciones

Cada vez que realizo un cambio menor en el manifiesto de la aplicación, estos archivos guardados y la configuración de la aplicación se invalidarán y eliminarán al inicio de la aplicación. ¿Esto solo ocurre en el entorno de desarrollo o esto también sucederá cuando el paquete se haya publicado en la tienda de aplicaciones?

¿Cómo evito que el sistema haga esto? ¡El usuario no estará contento si pierde sus datos debido a un cambio de versión!

Actualización 1:
Gracias a Hans Passant, he aprendido que también data files have a Version. Establecer la versión del archivo de datos ha solucionado el problema de los cambios de versión (solo incremento), pero no para el resto de los cambios del manifiesto.

Actualización 2:
Entretanto También he observado, que no sólo cambian las propiedades de la aplicación de manifiesto tienen este efecto. Si agrego un nuevo archivo de recursos para un nuevo idioma (localización), los datos también se eliminarán. Sería realmente bueno saber si este extraño comportamiento también existirá en las aplicaciones instaladas que se publican en la tienda.

+1

Parece que está cambiando la versión de la aplicación. Mire el método ApplicationData.SetVersionAsync(). –

Respuesta

0

Esto solo debería ocurrir en un entorno de desarrollo. Una vez que publique la aplicación, el manifiesto será fijo y no cambiará *.

* Excepto las siguientes circunstancias 1) la cambia y vuelve a cargar, y 2) es muy probable que el manifiesto cambie el manifiesto, y esto es de esperar.

+0

No entiendo: si realizo cambios en la aplicación, entonces estoy acostumbrado a incrementar la versión de las aplicaciones. Y debido a que MS integró el número de versión en el manifiesto de la aplicación, creo que quieren que establezcamos el número de versión allí. Pero si cambio el número de versión debido a algunas extensiones o correcciones de la aplicación y luego cargo la aplicación actualizada en la tienda, no quiero que se eliminen los datos de las aplicaciones. ¿O me falta interpretar tu respuesta? – HCL

+0

Cambiar el número de versión en una aplicación implementada en la tienda no debe sobrescribir los datos que ya están en el dispositivo. Al menos, eso es lo que entiendo. – ZombieSheep

2

La respuesta a mi pregunta no parece ser tan fácil. Finalmente, he observado que probablemente se trata de dos cuestiones diferentes. En la web solo he encontrado muy little Information, por lo tanto, todo lo que escribo aquí es un poco especulativo, basado en algunas pruebas simples que he hecho.

versión cambia
Gracias a Hans Passant, he aprendido que los archivos de datos pueden tener un version. Debido a la falta de documentación, que hago la prueba de la versión y configuración de la versión de la siguiente manera:

await ApplicationData.Current.SetVersionAsync((uint)1, (setVersionRequest) => { }); 

El código se ejecuta en cualquier momento antes me carga mis archivos de datos. Como actualmente no tengo cambios en mi formato de archivo, dejo la devolución de llamada de cambio vacía {}.
Después de insertar el código anterior, los cambios en la versión ya no borraron los datos de mis aplicaciones al cambiar las propiedades de la versión. Sin embargo, como una prueba eliminé el código e inesperadamente, ¡cualquier cambio en la versión ya no borró los archivos de datos de las aplicaciones! Tal vez porque ahora están versionados. (Como una marca de lado: la disminución de los resultados de la versión siempre en una pérdida de los archivos de datos).

General de manifiesto cambios
El efecto que los cambios en las propiedades del manifiesto (excepto la versión de propiedades) borra los datos no se ha ido. Si cambio, por ejemplo, la descripción de la aplicación, se borrarán todos los datos. He encontrado algunos mensajes adivinando que esto no ocurrirá en la tienda, pero no he encontrado ninguna evidencia.

La adición de Idiomas
Otro efecto que he observado, es que si añado un nuevo lenguaje para la aplicación (la adición de un ressource-archivo) hace lo mismo.

Tenga en cuenta: Todas las explicaciones anteriores se basan en las observaciones de mi Entorno de desarrollo. No he encontrado ninguna documentación concreta y, por lo tanto, recomiendo a todos que prueben los casos de uso en cuestión muy bien para no hacer infelices a sus clientes. Probablemente en algunos meses, habrá más documentación concreta disponible.

Cuestiones relacionadas