visual toolset studio c# visual-studio-2010 visual-studio c#-4.0 wix

c# - toolset - Cómo instalar la aplicación en una carpeta personalizada usando el instalador wix, que no sea la carpeta Archivos de programa



wix visual studio 2015 (2)

Encontré este consejo en kentie.net - Wix Tips & Tricks . Se dice que las sugerencias usan la ID de WINDOWSVOLUME .

TARGETDIR y la partición del sistema

Al intentar instalar en un subdirectorio de la raíz de la unidad del sistema (p. Ej., ''C: / application''), es posible que suponga que algo así como

<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="INSTALLLOCATION" Name="SetupProject1"> </Directory> </Directory>

TARGETDIR se refiere a la partición del sistema, ya que ProgramFilesFolder siempre se da como hijo de TARGETDIR. Este no es el caso; TARGETDIR es la partición con más espacio libre en el disco. Incluso puede ser una partición en un disco duro externo. Para establecerlo en la verdadera partición del sistema, use el siguiente enfoque:

<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="WINDOWSVOLUME" > <Directory Id="INSTALLLOCATION" Name="SetupProject1"> </Directory> </Directory> </Directory> <SetDirectory Id="WINDOWSVOLUME" Value="[WindowsVolume]"/>

El elemento SetDirectory es necesario porque intentar usar WindowsVolume directamente da como resultado

error LGHT0204: ICE99: el nombre del directorio: WindowsVolume es igual que una de las propiedades públicas de MSI y puede causar efectos secundarios imprevistos. MSI de firma

He creado un instalador usando wix. De forma predeterminada, la aplicación se instala en la carpeta Archivos de programa. Necesito crear una carpeta para mi aplicación en c: directorio e instalar mi aplicación allí.

<Fragment> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="WINDOWSVOLUME" > <Directory Id="INSTALLLOCATION" Name="WIXDemoApp"> </Directory> </Directory> </Directory> <SetDirectory Id="WINDOWSVOLUME" Value="c"/>

<Fragment> <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. --> <Component Id="MyApplication.exe"> <File Source="$(var.MyApplication.TargetPath)" Name="MyApp.exe" Id="MYAPPEXE" KeyPath="yes" /> <!-- TODO: Insert files, registry keys, and other resources here. --> </Component> </ComponentGroup> </Fragment>

Recibo el siguiente error " error LGHT0094: Unresolved reference to symbol ''Directory:INSTALLFOLDER'' in section ''Fragment:'' ".

Actualizar:

<Fragment> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="WindowsVolume" > <Directory Id="INSTALLLOCATION" Name="WIXDemoApp"> </Directory> </Directory> </Directory> <SetDirectory Id="WindowsVolume" Value="c"/> </Fragment> <Fragment> <ComponentGroup Id="ProductComponents" Directory="INSTALLLOCATION"> <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. --> <Component Id="MyApplication.exe"> <File Source="$(var.MyApplication.TargetPath)" Name="MyApp.exe" Id="MYAPPEXE" KeyPath="yes" /> <!-- TODO: Insert files, registry keys, and other resources here. --> </Component> </ComponentGroup> </Fragment>

Esto me da otro error "error LGHT0204: ICE99: The directory name: WindowsVolume is the same as one of the MSI Public Properties and can cause unforeseen side effects. " .Google y arbitrado esto y esto para solucionar esto. Pero no funciona para yo, todavía recibo el mismo error que "error LGHT0204: ICE99: el nombre del directorio: WindowsVolume es igual que una de las propiedades públicas de MSI y puede causar efectos secundarios imprevistos". Cualquier idea de cuál sería el problema.


Windows Installer WINDOWSVOLUME mayúsculas y minúsculas, por lo que WINDOWSVOLUME no funcionará. Puedes hacer algo como esto:

<Fragment> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLLOCATION" Name="SetupProject1" /> </Directory> </Directory> <SetDirectory Id="INSTALLLOCATION" Value="[WindowsVolume]SetupProject1" /> </Fragment>

Para su segundo error, está mezclando dos INSTALLLOCATION diferentes: INSTALLFOLDER e INSTALLLOCATION . Elige uno y úsalo en ambos lugares.