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.