2012-03-01 19 views
10

Tengo un directorio que contiene varios archivos que quiero incluir en mi compilación del paquete msi mediante un proyecto Wix.Incluir todos los archivos en un directorio específico en el paquete msi

/database 
/database/migration11.txt 
/database/migration21.txt 
/database/migration32.txt 

Esos archivos cambian a menudo o no son nuevos agregados, y no quiero que adaptar mi archivo Wix con cada nuevo archivo de migración.

Básicamente quiero decir en mi archivo wxs para incluir todos los archivos de la base de datos de directorio y después de la instalación los pusieron en el directorio [INSTALLLOCATION]/database.

¿Alguna forma de lograr esto?

añadido:

Sólo encontró esta solución: use HEAT pero tengo curiosidad si hay otra manera, se recomienda.

+1

El calor es una manera bastante recomendada. Es una parte del conjunto de herramientas. También hay una herramienta externa llamada Paraffin (http://www.wintellect.com/CS/blogs/jrobbins/archive/tags/Paraffin/default.aspx) ampliamente utilizada en la comunidad. Por cierto, debes tener cuidado con la automatización. Si no planea cambiar el contenido de esa carpeta de manera exhaustiva, podría ser mejor generar un archivo WiX una vez, e incluirlo en la solución, y luego simplemente modificarlo a medida que cambie el contenido de la carpeta. Más trabajo manual, pero más control. Gracias, com usual :) –

+0

Gracias por su comentario. Pensé que no usaría Heat porque parece [no se recomienda su uso de forma automática en su compilación] (http://stackoverflow.com/a/5100898/220636). Pero lo comprobaré. – nabulke

+0

"No recomendado == tenga cuidado" en este caso. Si tiene muchos archivos, tiene pocas opciones. Como mencioné, sigue siendo una compensación en algún momento. –

Respuesta

13

Puede utilizar la tarea en su archivo wixproj:

<ItemGroup> 
... Your wxs files ... 
<HarvestDirectory Include="$(variable)\YourDirectory\"> 
    <ComponentGroupName>CG_YOUR_GROUP</ComponentGroupName> 
    <DirectoryRefId>DIR_REFERENCE</DirectoryRefId> 
    <AutogenerateGuids>false</AutogenerateGuids> 
    <GenerateGuidsNow>false</GenerateGuidsNow> 
    <SuppressUniqueIds>true</SuppressUniqueIds> 
    <SuppressCom>true</SuppressCom> 
    <SuppressRegistry>true</SuppressRegistry> 
    <SuppressRootDirectory>true</SuppressRootDirectory> 
    <PreprocessorVariable>var.Property_Preprocessor</PreprocessorVariable> 
</HarvestDirectory> 
</ItemGroup> 

Esta tarea requiere de calor durante la construcción. Espero que esto te ayude.

+1

Gracias por el ejemplo. Lo intentaré. – nabulke

+0

@nabulke ¿Esto funcionó? – sirdank

+0

¡Por favor, @nabulke, eres nuestra única esperanza! ¿¿Esto funciona?? – gakera

2

Si alguien todavía necesita esto, here es una muestra de HarvestDirector con wixproj. Gracias a DavidEGrayson.

+0

Esto debería ser un comentario. –

Cuestiones relacionadas