usuarios son resumen premium plugin las cuales conclusion catalogue app aplicacion wix windows-installer

son - wix login



Conjunto de herramientas Wix: crear directorio en el disco raĆ­z(disco del sistema o c: /) y copiar archivos dentro (2)

Soy consciente de preguntas similares dentro de stackoverflow:

WIX: directorio predeterminado en WixUI_InstallDir ,

Directorio raíz del instalador WIX y control de versiones ,

¿Es posible tener dos directorios raíz en WIX ,

Copie el archivo al directorio personalizado en otra partición ,

¿Cómo crear un directorio en wix?

Sin embargo, ninguno de ellos muestra un código simple e inmediato para crear una carpeta dentro de la carpeta C: / (no está codificado de forma rígida, pero debe ser el disco raíz o el disco del sistema o lo que se llame el disco que contiene la carpeta de Windows) y para copiar archivos. dentro de eso.

En otras palabras, ¿cómo puede Wix crear una carpeta C: / MynewDir / example.jar?

Esto es lo que intenté:

<?xml version="1.0" encoding="UTF-8"?> <!-- WiX installer MyProgram by Mark Seuffert --> <?define ProductVersion = "13.1.2.3"?> <?define ProductUpgradeCode = "12345678-1234-1234-1234-111111111112"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="*" UpgradeCode="$(var.ProductUpgradeCode)" Name="MyProgram" Version="$(var.ProductVersion)" Manufacturer="COMPANY" Language="1033"> <Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package" /> <Media Id="1" Cabinet="product.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLDIR" Name="MyProgram"> <Component Id="ApplicationFiles" Guid="12345678-1234-1234-1234-222222222222"> <File Id="ApplicationFile1" Source="C:/Users/user/Desktop/myprogram.exe" /> </Component> </Directory> </Directory> <Directory Id="ANOTHERLOCATION" FileSource="C:/MynewDir"> </Directory> </Directory> <DirectoryRef Id="ANOTHERLOCATION" FileSource="C:/MynewDir"> <Component Id="ApplicationFiles2" Guid="12345678-1234-1234-1235-111111111111"> <File Id="ApplicationFile2" Source="C:/Users/user/Desktop/InstallerFiles_13_4_9_3/myprogramLauncher.jar" /> <CreateFolder /> </Component> </DirectoryRef> <InstallExecuteSequence> <RemoveExistingProducts After="InstallValidate" /> </InstallExecuteSequence> <Feature Id="DefaultFeature" Level="1"> <ComponentRef Id="ApplicationFiles2" /> <ComponentRef Id="ApplicationFiles" /> </Feature> </Product> </Wix>

EDICIÓN 1: Yan Sklyarenko acaba de encontrar lo que estaba buscando, ese es el WindowsVolume (no sé cómo me lo perdí en http://msdn.microsoft.com/en-us/library/windows/desktop/aa370905%28v=vs.85%29.aspx#system_folder_properties microsoft document).

Sin embargo, ¿cómo puedo reemplazar FileSource = "C: / MynewDir" con FileSource = "[WindowsVolume] MynewDir" ??? porque al parecer, incluso con WINDOWSVOLUME, el volumen resultante elegido es siempre D: / en mi computadora que tiene más espacio disponible :(

EDIT 2 Actualicé mi código usando la segunda muestra de Yan Sklyarenko (@@@@ newpart @@@@ identifica partes donde el código difiere), sin embargo el comportamiento sigue siendo el mismo, el instalador elige el disco con más espacio libre (D: / en mi caso) y no C: / donde está windows ..

<?xml version="1.0" encoding="UTF-8"?> <!-- WiX installer MyProgram by Mark Seuffert --> <?define ProductVersion = "13.1.2.3"?> <?define ProductUpgradeCode = "12345678-1234-1234-1234-111111111112"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="*" UpgradeCode="$(var.ProductUpgradeCode)" Name="MyProgram" Version="$(var.ProductVersion)" Manufacturer="COMPANY" Language="1033"> <Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package" /> <Media Id="1" Cabinet="product.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLDIR" Name="MyProgram"> <Component Id="ApplicationFiles" Guid="12345678-1234-1234-1234-222222222222"> <File Id="ApplicationFile1" Source="C:/Users/user/Desktop/myprogram.exe" /> </Component> </Directory> </Directory> <Directory Id="ANOTHERLOCATION" FileSource="C:/MynewDir"> @@@@newpart@@@@<Component Id="ApplicationFiles2" Guid="12345678-1234-1234-1235-111111111111"> <File Id="ApplicationFile2" Source="C:/Users/user/Desktop/InstallerFiles_13_4_9_3/myprogramLauncher.jar" /> <CreateFolder /> </Component> </Directory> </Directory> @@@@newpart@@@@<SetDirectory Id="ANOTHERLOCATION" Value="[WINDOWSVOLUME]" /> <InstallExecuteSequence> <RemoveExistingProducts After="InstallValidate" /> </InstallExecuteSequence> <Feature Id="DefaultFeature" Level="1"> <ComponentRef Id="ApplicationFiles2" /> <ComponentRef Id="ApplicationFiles" /> </Feature> </Product> </Wix>

EDITAR 3 El último fragmento de código anterior debería funcionar, sin embargo, cambie la carcasa de WINDOWSVOLUME a WindowsVolume como se sugiere.


Aquí hay una solución de trabajo completa basada en su código simplificado (observe el comentario en el código):

<?define ProductVersion = "13.1.2.3"?> <?define ProductUpgradeCode = "12345678-1234-1234-1234-111111111112"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="*" UpgradeCode="$(var.ProductUpgradeCode)" Name="MyProgram" Version="$(var.ProductVersion)" Manufacturer="COMPANY" Language="1033"> <Package InstallerVersion="200" Compressed="yes" /> <Media Id="1" Cabinet="product.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLDIR" Name="MyProgram" /> <Directory Id="ANOTHERLOCATION" /> </Directory> </Directory> <!-- The casing of ''ANOTHERLOCATION'' and ''WindowsVolume'' is very important here. Replace ''MyNewDir'' with the correct name of the folder you want on WindowsVolume. --> <SetDirectory Id="ANOTHERLOCATION" Value="[WindowsVolume]MyNewDir" /> <Feature Id="DefaultFeature" Level="1"> <Component Directory="INSTALLDIR"> <File Id="ApplicationFile1" Source="C:/Users/user/Desktop/myprogram.exe" /> </Component> <Component Directory="ANOTHERLOCATION"> <File Id="ApplicationFile2" Source="C:/Users/user/Desktop/InstallerFiles_13_4_9_3/myprogramLauncher.jar" /> </Component> </Feature> </Product> </Wix>


Ok, puedes hacer algo como esto:

<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="WindowsVolume"> <Directory Id="MyNewDirId" Name="MyNewDir"> <Component Id="SampleComponent" Guid="..."> <File Id="SampleFile" Source="..." KeyPath="yes" /> </Component> </Directory> </Directory> </Directory>

Esto instalará el archivo en la carpeta MyNewDir en la unidad de Windows (C: en mi caso). Sin embargo, se quejará de que el uso de WindowsVolume de esta manera podría tener efectos secundarios inesperados.

Para satisfacer esa validación, puede cambiar la muestra a:

<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="MyNewDirId" Name="MyNewDir"> <Component Id="SampleComponent" Guid="..."> <File Id="SampleFile" Source="..." KeyPath="yes" /> </Component> </Directory> </Directory> <SetDirectory Id="MyNewDirId" Value="[WindowsVolume]MyNewDir" />

Esto se parece más a un hack, pero el resultado es el mismo. Para ser honesto, no entiendo cuáles podrían ser esos "efectos secundarios inesperados". Tal vez, los gurús de Windows Installer pueden arrojar algo de luz sobre esto.

Espero que esto ayude.