2009-01-21 12 views
7

Al instalar, 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.WiX: atributos CopyFile

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 de 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á trabajando. DB_DIR10 se busca en el registro como esto

<Property Id="DB_DIR10"> 
    <RegistrySearch Id='DbDirSearch10' Type='raw' Root='HKLM' Key='Software\$(var.CompanyName)\$(var.MsdeInstance)' Name='Dreem10_Personal' /> 
</Property>

Respuesta

3

De acuerdo con la documentación de Windows Installer para la sourcedir property, apunta a "el directorio raíz que contiene el archivo contenedor de origen o el árbol de archivos fuente del paquete de instalación ".

De modo que 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.

Edit: 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 no mostró el archivo que se está copiando. ¿Qué dice el registro en tu caso?

Edit2: Mientras CopyFile trabajó para mí, la mejor solución es añadir un medio sin comprimir a sus wxs así:

<Media Id='2'/> 

Y luego adaptar el elemento de archivo para su archivo de configuración personalizable como esto:

<File Source='path\to\default\config.ini' Compressed='no' DiskId='2' /> 

Esto hará que el aspecto instalador para config.ini en la misma carpeta que el MSI, que combina las ventajas de la personalización y una desinstalación limpia.

+0

Exactamente. Lo que quiero hacer es dar soporte a la posibilidad de personalizar la instalación al poner un archivo ini al lado del archivo msi. Esto contendrá algunos por configuración del cliente. Obviamente se podría hacer con una transformación (mst) para cada cliente, pero no creo que los chicos de soporte puedan crearlos fácilmente. – wqw

+0

No muestra nada está sucediendo.MoveFiles tiene una secuencia de comandos pero luego no ocurre FileCopy. ¿Cómo lo hiciste exactamente? ¿Retazo? – wqw

+0

Acabo de copiar y pegar tu fragmento para probarlo y funcionó para mí ... Pero puedes probar la opción superior de "medio sin comprimir" como expliqué más arriba. –

0

Se puede utilizar DestinationDirectory="INSTALLDIR" lugar, o usted tiene que crear las propiedades sobre la marcha ??

WIX Wiki CopyFile Element

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> 
+0

¿Está debajo de un Elemento principal de archivo o componente? – CheGueVerra

+0

CopyFile está en un elemento primario por separado a partir de ahora. Hará una acción personalizada si esto no se puede hacer fácilmente. – wqw