2012-08-13 28 views
5

Cuando compilo mi aplicación en visual studio 2012 RC, puedo ver una carpeta bin\ generada en la carpeta de origen del proyecto como se esperaba, en la que hay un foo.exe, se parece a la entrada del aplicación Cuando comienzo a la depuración de la aplicación, su icono se pone en la pantalla de inicio y no puedo encontrar una nueva carpeta creada endespliegue de una aplicación de Windows 8

C: \ Users \ alguien \ AppData \ Local \ Packages \ xxxxx_xxxxxx

Pero no puedo encontrar foo.exe en esta carpeta, incluso después de buscar en todo el disco. Parece que la aplicación win8 tiene un mecanismo de instalación/despliegue diferente que los programas de Windows anteriores. Mis preguntas son:

(1) ¿cómo/dónde se despliega/instala la aplicación win8?

(2) Quiero usar \AppData\Local\Packages\xxxxx_xxxxxx\LocalState como una carpeta de datos local (que es igual a ApplicationData.Current.LocalFolder en el código), pero toda la carpeta se elimina cuando se haga clic en el icono de la pantalla de inicio y pulse "desinstalación", sin ninguna advertencia. ¿Algún lugar mejor para almacenar datos locales? O necesito SQLite? Por ejemplo, mi aplicación escribe todos los mensajes de error en error.txt, obviamente no puedo usar sqlite en este caso, y si puse error.txt en la carpeta LocalState, los usuarios pueden haber desinstalado la aplicación, antes de ir a él para ver lo que está en error.txt. Otro escenario es: un usuario desea desinstalar la aplicación, pero conservar sus datos locales (archivos). Obviamente, ApplicationData.Current.LocalFolder no es una buena opción.

Respuesta

4

1) Los paquetes de Windows 8 se despliegan en c: \ Archivos de programa \ windowsapps \, pero por defecto, que Don No tiene la propiedad de esa carpeta y, por lo tanto, no puede acceder a ella. Eso es en gran medida irrelevante, sin embargo. Nunca deberías tener acceso a esta carpeta por diseño.

2) Una vez más, eliminar las carpetas de datos locales para una aplicación en la desinstalación es el comportamiento esperado. De lo contrario, si implementó una aplicación a través de la tienda y comenzó a comportarse mal y tomó todo el espacio de almacenamiento disponible, no habría una manera simple para que un usuario elimine esa información. Sin embargo, su afirmación de que no hay advertencia no es cierta. La ventana emergente de desinstalación dice claramente "Esta aplicación y su información relacionada se eliminarán de esta PC"

En algunos casos, el almacenamiento de datos en la carpeta itinerante puede ser una opción, pero esta carpeta no pretende grandes cantidades de datos - está ahí para mantener las configuraciones de la aplicación/opciones de configuración para recorrer entre dispositivos. Probablemente pueda colocar su registro de bloqueo allí durante el desarrollo (si es lo suficientemente pequeño), pero no hay garantía de que se sincronice con la nube antes de que se desinstale la aplicación. Su mejor opción probablemente sea utilizar Live SDK para sincronizar datos con la nube, pero nuevamente, no tiene garantía de que los datos se escriban instantáneamente en la nube.

1

Debe utilizar almacenamiento aislado para datos persistentes en el sistema de archivos en una aplicación Metro de Windows 8. Puede encontrar la ubicación usando lo siguiente:

Windows.Storage.ApplicationData.Current.LocalFolder.Path;

A medida que cambia la arquitectura de cada plataforma, nunca sabrá con certeza dónde se almacenarán los datos, pero esta constante garantizará que funcione en todas las aplicaciones. Esta carpeta también se mantiene "segura" mientras la aplicación está instalada y actualizada, por lo que no debe perder datos al usarla.

Un ejemplo de esto usando SQLLite-net se puede encontrar en la parte inferior de esta página: http://timheuer.com/blog/archive/2012/05/20/using-sqlite-in-metro-style-app.aspx

+0

Pero mi pregunta es: 'Windows.Storage.ApplicationData.Current.LocalFolder' se elimina sin previo aviso, cuando los usuarios hacen clic derecho en el ícono de la aplicación y seleccionan desinstalar. No es adecuado para mi aplicación. Quiero un lugar más seguro. –

+1

Las aplicaciones de metro por diseño no son compatibles con este escenario. El almacenamiento aislado es el único acceso de escritura que recibe el sistema de archivos sin implementar un explorador de archivos. Si desea guardar esta información, incluso después de la instalación, tendrá que considerar sincronizarla de forma incremental a un "servicio en la nube" y actualizar la aplicación cuando se vuelva a instalar. – LewisBenge

Cuestiones relacionadas