2011-04-07 11 views
7

Estoy creando una aplicación de escritorio que necesita instalar un archivo SDF en la carpeta SpecialFolder.CommonDocuments (C:\Users\Public\documents en Win 7). En un proyecto de implementación de escritorio de Visual Studio, ¿cómo especifico esta carpeta en el Editor de sistema de archivos?Instalador de Visual Studio: cómo apuntar a la carpeta de documentos públicos de Windows?

intenté crear una carpeta personalizada en el Editor del sistema de archivos y apuntando a la carpeta CommonDocuments en el panel Propiedades, así:

Properties pane screenshot

Desafortunadamente, esa especificación no va a construir. No quiero codificar una ruta de carpeta, ya que varía según las versiones de Windows. Entonces, ¿cómo especifico la carpeta CommonDocuments en el Editor de FileSystem? Gracias por tu ayuda.

Respuesta

11

Descubrí esto y lo documenté para fines internos. Así que simplemente reimprimiré este artículo aquí:

Los proyectos de implementación de Visual Studio no admiten la carpeta CommonDocuments directamente, pero podemos agregar esa compatibilidad mediante el Editor de condiciones de inicio, que tiene una tarea "Buscar máquina de destino" . Utilizaremos la tarea para buscar en el registro de Windows la ruta a la carpeta Documentos públicos y asignar el resultado a una propiedad de instalador (en realidad, una variable) llamada COMDOCFOLDER. Luego usaremos esa variable para establecer la ruta a una carpeta personalizada en el Editor del sistema de archivos.

Estos son los pasos para realizar la tarea. En primer lugar, abra el Editor de condiciones de inicio en un proyecto de implementación de Visual Studio:

Launch Conditions Editor

Haga clic derecho en 'Buscar equipo de destino' y seleccione 'Agregar Registro Search' desde el menú de contexto. Aparecerá un nuevo artículo (ver 1 arriba). Llámalo Get Common Documents Folder. En el panel de propiedades (Ver 2 arriba), establezca la propiedad 'Propiedad' (el nombre de nuestra variable) en COMDOCFOLDER, establezca la propiedad 'Root' (la clave raíz del Registro para buscar) en vsdrrHKLM, y configure la propiedad 'RegKey' (La clave del Registro para encontrar) al SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders. Tenga en cuenta que omitimos la clave raíz de la propiedad 'RegKey'. Finalmente, establezca la propiedad 'Valor' (El nombre del valor que estamos buscando dentro de la clave de registro) en Common Documents. La variable COMDOCFOLDER ahora mantendrá la ruta a la carpeta Documentos públicos.

A continuación, ir al Editor del sistema de archivos en el proyecto de despliegue Visual Studio:

File System Editor

Haga clic en 'sistema de archivos en el equipo de destino' y seleccione 'Agregar carpeta especial> Carpeta personalizada' de la Menú de contexto. Aparecerá un nuevo artículo (ver 1 arriba). Cambie el nombre del elemento Common Documents. En el panel de propiedades (consulte 2 más arriba), establezca la propiedad 'Propiedad' en COMDOCFOLDER. Establecí la propiedad 'DefaultLocation' en el valor codificado de la carpeta CommonDocuments para Windows Vista y posterior; este valor solo se usaría si la propiedad COMDOCFOLDER devolviera un valor nulo, lo que no debería ocurrir. El instalador ahora tiene una carpeta de documentos comunes que apunta a la carpeta de documentos públicos, como se especifica en el registro de Windows.

Hay más información in this Microsoft Support How-To.

+0

¡Muchas gracias por publicar esto! ¡Me ahorraste mucho tiempo tratando de resolver esto! – user685869

0

¡La respuesta de David Veeneman es genial! Ayudó mucho. Una pequeña corrección:

Haga clic en 'sistema de archivos en el equipo de destino' y seleccione 'Agregar carpeta especial> Carpeta personalizada' en el menú contextual. Aparecerá un nuevo artículo (ver 1 arriba). Cambie el nombre del elemento Documentos comunes. En el panel de propiedades (Véase 2 arriba), establezca la propiedad 'Propiedad' a

[COMDOCFOLDER]

Esos corchetes son necesarios, de lo contrario, recibirá una excepción al ejecutar el instalador.

Cuestiones relacionadas