metaetiqueta - wix head tag
WiX: atributos de CopyFile (2)
En la instalación, deseo copiar opcionalmente algunos archivos .ini de SOURCEDIR a TARGETDIR, lo que significa que desde el directorio el archivo .msi está ubicado en la carpeta de destino en la que está configurada la aplicación.
Lo hice <CopyFile Id="CopyIniFile" DestinationProperty="INSTALLDIR" SourceProperty="SOURCEDIR" SourceName="Dreem15.ini" Delete="no" />
pero parece que no está haciendo nada. El archivo de registro no está ayudando mucho.
He tenido éxito en hacer un escenario mucho más elaborado con CopyFile y estoy baffeled por este simple.
Editar: tengo estas filas en la tabla MoveFile:
|FileKey |Component |SourceName |SourceFolder|DestFolder|Options |CopyIniFile |CoAppLicAndIni|Dreem15.ini |SOURCEDIR |INSTALLDIR|0 |MoveDataFile|CoAppLicAndIni|Dreem10_Personal.mdf|DB_DIR10 |INSTALLDIR|0
y el segundo está funcionando. DB_DIR10
se busca en el registro como este
<Property Id="DB_DIR10"> <RegistrySearch Id=''DbDirSearch10'' Type=''raw'' Root=''HKLM'' Key=''Software/$(var.CompanyName)/$(var.MsdeInstance)'' Name=''Dreem10_Personal'' /> </Property>
¿Puede usar DestinationDirectory="INSTALLDIR"
lugar, o tiene que crear las propiedades sobre la marcha?
Este wxs, pondrá el archivo en el MSI
<Component Id="myIni.ini" Guid="*">
<File Id="myIni.ini" Name="myIni.ini" KeyPath="yes" Source="!(wix.Files)/myIni.ini">
<CopyFile Id="CopyIni" DestinationProperty="TARGETDIR" />
</File>
</Component>
De acuerdo con la documentación del instalador de Windows para la propiedad sourcedir , señala "el directorio raíz que contiene el archivo contenedor de origen o el árbol de archivos de origen del paquete de instalación".
Entonces, o bien no sabía que SourceDir es una propiedad predefinida del instalador de Windows, o está intentando copiar un archivo no empaquetado del medio de instalación que contiene el msi. En este último caso, probablemente tendría más sentido instalar el archivo como un componente normal para que se desinstale correctamente.
Editar: He probado el escenario "copiar desde el medio de instalación" y funcionó para mí. Además, he instalado con
misexec /lvx* install.log /i mymsi.msi
y el registro mostró el archivo que se está copiando. ¿Qué dice el registro en tu caso?
Edit2: Mientras CopyFile funcionó para mí, una mejor solución es agregar un medio sin comprimir a sus wxs como este:
<Media Id=''2''/>
Y luego adapte el elemento Archivo para su archivo de configuración personalizable como este:
<File Source=''path/to/default/config.ini'' Compressed=''no'' DiskId=''2'' />
Esto hará que el instalador busque config.ini en la misma carpeta que el msi, combinando las ventajas de la personalización y una desinstalación limpia.