2011-02-09 11 views
8

Estoy usando WiX 3.5 en VS 2010, y agregué todos los ensamblados de proyectos como referencias en el proyecto de instalación (.wixproj) y configuré la propiedad Harvest en True para que los binarios, el contenido y los satélites estén incluidos en el archivo .msi.WiX: recolectar ensamblajes no de proyecto en la salida de configuración

Sin embargo, ¿cómo podría agregar agregados de terceros (.dlls) a la salida .msi? ¿Debo agregar cada uno explícitamente al archivo Product.wxs o hay una manera más agradable? Idealmente, me gustaría agregarlos como referencias de archivos en el proyecto de instalación, pero esto no parece ser una opción.

Respuesta

7

Sí se tendrá que añadir manualmente a algún archivo wxs O puede utilizar una etapa de pre-construcción que utiliza el calor para cosechar estos archivos para usted (suponiendo que todos estos archivos en un directorio separado).

calor es parte de Wix y se puede cosechar un directorio completo con el interruptor dir. Dependiendo de los argumentos de la línea de comandos, producirá un archivo separado de wxs que contiene un único ComponentGroup. Simplemente haga referencia a este ComponentGroup desde el producto.wxs.

Para un ejemplo de cómo Actualmente uso de calor para cosechar mi directorio de versión:

dir calor "../../bin/release" -Gg -CG CG.ApplicationBinaries -dr DIRINSTALACIÓN -scom -sfrag -sreg -srd -VAR var.BuildOutputDir -o ApplicationBinaries.wxs

Esto producirá los ApplicationBinaries.wxs archivo:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <DirectoryRef Id="INSTALLDIR"> 
      <Component Id="cmp53F90D1335DD67504EC2B9E1E8620DD3" Guid="{CA2DF1B5-7B20-4596-84A4-925B4F9BA6EC}"> 
       <File Id="filC65F9CB88694FCA79FCB3CADB9481921" KeyPath="yes" Source="$(var.BuildOutputDir)\AsyncTCPsocket.dll" /> 
      </Component> 
      .... 
     </DirectoryRef> 
    </Fragment> 
    <Fragment> 
     <ComponentGroup Id="CG.ApplicationBinaries"> 
      <ComponentRef Id="cmp53F90D1335DD67504EC2B9E1E8620DD3" /> 
      ... 
     </ComponentGroup> 
    </Fragment> 
</Wix> 
+1

Gracias, creo que las definiré explícitamente – devdigital

+0

¿No necesita definir una propiedad para poder hacer referencia al archivo wxs generado que contiene el grupo de componentes? – KennO

+0

¿Configura de alguna manera $ (var.BuildOutputDir) a algo como $ (var.YOURPROJECT.TargetDir) dentro de Product.wxs? Si es así, ¿cómo lo logras? – jpierson

4

en la actualidad existe a bug in Heat que es utilizado por el proyecto de instalación de WiX que significa ensamblados de referencia de un proyecto no son automatizados ticamente cosechado Probablemente tendrá que esperar la versión 4 antes de que se solucione.

Mientras tanto, la respuesta de @Elmar de Koning será la mejor por el momento.

Cuestiones relacionadas