wixproj visual tutorial toolset studio prime instalador extension descargar wix installation

visual - Wix-Configuración correcta de la carpeta de instalación



wix toolset visual studio 2017 extension (2)

Finalmente he resuelto el problema. Después de buscar por un tiempo, me encontré con este documento:

Conjunto de diálogos WixUI_InstallDir

La parte relevante: "El ID de directorio debe ser todos los caracteres en mayúsculas porque debe pasar de la interfaz de usuario a la secuencia de ejecución para que tenga efecto".

Y como puede ver en mi código: "Myapp_Installer_Dir" no cumple con este criterio.

Después de cambiarlo a "MYAPPINSTALLERDIR", todo funcionó.

Estoy creando un programa que está siendo instalado por Wix, usando VS 2010 y ya tengo listo el producto.wxs.

En mi archivo wxs, tengo definiciones de directorio que se parecen a esto:

<SetDirectory Id="INSTALLFOLDER" Value="[WindowsVolume]Myapp" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="INSTALLFOLDER" Name="Myapp"> <Directory Id="Myapp_Installer_Dir" Name="Myapp"> <Directory Id="BIN" Name="Bin" /> <Directory Id="ICONS" Name="Icons" /> </Directory> </Directory> </Directory>

Y luego tengo estas definiciones de instalación de archivos:

<DirectoryRef Id="Myapp_Installer_Dir"> <Component Id="INSTALLER_Myapp" Guid="{94F18477-8562-4004-BC6F-5629CC19E4CB}" > <File Source="$(var.Myapp.TargetPath)" KeyPath="yes"/> </Component> </DirectoryRef> <DirectoryRef Id="BIN"> <Component Id="INSTALLER_Data" Guid="{545FB5DD-8A52-44D7-898E-7316E70A93F5}" > <File Source="$(var.Data.TargetPath)" KeyPath="yes"/> </Component> ...

Y continúa de esa manera. Los archivos para el directorio "ICONOS" también están definidos.

También estoy usando el conjunto de diálogos WixUI_InstallDir y también tengo estas líneas presentes:

<Property Id="WIXUI_INSTALLDIR" Value="Myapp_Installer_Dir" /> <UIRef Id="WixUI_InstallDir" />

El problema es cuando el usuario instala el programa y cambia el valor de la carpeta de instalación, los archivos del "Contenedor" y los "Iconos" se instalan en su ruta correcta, pero el destino Myapp se instala en una ubicación de reparación que se definió en El inicio como la ruta de instalación por defecto.

¿Por qué solo los archivos de bin e íconos instalados en la carpeta correcta que el usuario deseaba, pero el objetivo de myapp no ​​lo hace?


No estoy muy seguro, pero esto es lo que creo que ha sucedido.

Cuando SetDirectory un elemento SetDirectory , básicamente agrega una acción personalizada que establece un directorio en la base de datos MSI. Mientras no especifique la secuencia en la que se ejecuta, el valor predeterminado es both , lo que significa que se ejecutará tanto en InstallUISequence como en InstallExecuteSequence .

Ahora, cuando un usuario cambia el directorio de instalación en el asistente, esto sucede en la secuencia de la interfaz de usuario. Obviamente, cuando la instalación entra en la secuencia de ejecución, el valor de INSTALLFOLDER se establece en [WindowsVolume]Myapp como se le indicó.

Entonces, tienes que volver a trabajar esto de alguna manera. Tenga en cuenta la instalación silenciosa también, solo hay una secuencia de ejecución allí.

ACTUALIZAR en lugar de lo que tienes, intenta algo como esto:

<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="WindowsVolume"> <Directory Id="INSTALLFOLDER" Name="Myapp"> <Directory Id="BIN" Name="Bin" /> <Directory Id="ICONS" Name="Icons" /> </Directory> </Directory> </Directory>

Y deje que el usuario cambie opcionalmente el INSTALLFOLDER como lo hace ahora.