2010-08-25 10 views
5

Estoy actualizando una aplicación existente que se instala a través de un proyecto de instalación e implementación.Escribir en AppData desde un proyecto de configuración e implementación

La aplicación anterior copió una configuración y un archivo de base de datos en la carpeta de la aplicación en Archivos de programa durante la instalación. Esto funcionó bien en Win 2000 y Win Xp (bajo una cuenta de administrador local). En Windows 7, sin embargo, no solo está mal visto, sino que esencialmente no funciona debido a UAC.

Así que quiero actualizar la aplicación para escribir sus config/data en CommonApplicationData. En el proyecto de Instalación y Despliegue existente, puede seleccionar fácilmente algunas ubicaciones como destinos para copiar archivos. es decir, Carpeta de la aplicación, Escritorio del usuario, & Archivos del programa del usuario.

No veo una forma análoga de indicar al programa de instalación que copie en las carpetas AppData/CommonApplicationData. ¿Eso existe, y si no, hay soluciones simples?

Gracias!

Respuesta

5

Hacer un clic derecho | Añadir carpeta especial | Carpeta personalizada y asígnele el nombre que desee (la Carpeta de datos de la aplicación común sería buena)

En la cuadrícula de propiedades de la carpeta, cambie el atributo DefaultLocation a [CommonAppDataFolder].

Agregue un archivo a la carpeta, cree e instale. Debería encontrar su archivo en C: \ ProgramData en Windows 7.

Tenga en cuenta que recomiendo otras herramientas como InstallShield y WiX sobre Visual Studio Deployment Projects. La herramienta es muy limitada en lo que puede hacer y eventualmente golpearás una pared de ladrillos.

+1

Esto funcionó bien en su mayor parte, pero agregué algunos archivos dentro de un directorio, incluido un archivo de base de datos. Puedo escribir bien en los archivos nuevos y sobrescribir los archivos existentes, pero la base de datos dice que solo es de lectura. ¿Algún pensamiento allí? – turtle

+0

Estilo de MS-DOS de solo lectura (attrib + R) o NTFS ACL de solo lectura? (El usuario no tiene permisos) (por cierto, esta es realmente una pregunta nueva) –

+1

Lo siento. En cierto modo estoy de acuerdo, pero está fuertemente relacionado, creo. Usando el método anterior, puedo crear los archivos y las carpetas, sin embargo, parece que las carpetas se crean como de solo lectura para usuarios estándar, lo que parece ir en contra del uso de la carpeta de datos de la aplicación. ¿Hay alguna manera de editar el método anterior para que el proyecto de configuración e implementación cree las carpetas como editables para un usuario estándar? – turtle

Cuestiones relacionadas