Agrupe múltiples archivos de soporte para WiX Burn
Tengo un MSI de terceros que me ha sido suministrado por un proveedor. Sin embargo, el MSI no está solo, requiere múltiples archivos de soporte (dll, archivos de configuración, controladores de dispositivos ...) para completar una instalación. He intentado instalar sin estos archivos presentes en el directorio con el MSI y se queja de los archivos que faltan durante la instalación. Me parece que esta es una forma extraña de construir un instalador. De todos modos, me gustaría agrupar esta "instalación" para que Burn la consuma. He usado MSIPackage antes, pero eso funciona para un solo archivo. ¿Cómo especificaría este grupo de archivos? Estoy tentado de hacer un nuevo MSI que incluya el MSI del tercero más los archivos adicionales, pero luego termino con algún programa fantasma instalado que realmente no es lo que quiero.
Gracias de antemano por tu ayuda.
EDITAR con solución:
Muchas gracias a Tom por las claves de este problema. Para aquellos que tienen curiosidad aquí está el código y los pasos que usé para resolver este problema en WiX 3.8.
Primero coseche el directorio donde estaba almacenado el instalador externo.
"%WIX%bin\heat.exe" dir "$(ProjectDir)..\ThirdParty\AppDirectory" -dr Dir_AppName -cg PAYGROUP_AppName -ag -sreg -scom -srd -var "var.AppNameDir" -t "$(ProjectDir)\ComponentToPayload.xsl" -out "$(ProjectDir)AppNamePayloadGroup.wxs"
DóndeAppNameDir es una variable de preprocesador que hace referencia a la ubicación de los archivos de instalación de la aplicación.
Mi archivo de transformación era un poco diferente del que estaba vinculado por Tom, pero no mucho. Creé un grupo de componentes en mi archivo de calor original y luego lo usé como mi grupo de carga más tarde en lugar de DirectoryRef.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
xmlns="http://schemas.microsoft.com/wix/2006/wi">
<xsl:template match="/">
<Wix>
<Fragment>
<xsl:apply-templates select="*" />
</Fragment>
</Wix>
</xsl:template>
<xsl:template match="//wix:ComponentGroup">
<PayloadGroup>
<xsl:attribute name="Id">
<xsl:value-of select="@Id"/>
</xsl:attribute>
<xsl:apply-templates select="*" />
</PayloadGroup>
</xsl:template>
<xsl:template match="//wix:File">
<Payload>
<xsl:attribute name="SourceFile">
<xsl:value-of select="@Source"/>
</xsl:attribute>
</Payload>
</xsl:template>
</xsl:stylesheet>
Luego creé un fragmento para el componente y hice referencia al grupo Payload
<Fragment>
<PackageGroup Id="PCKGRP_AppName">
<MsiPackage
SourceFile="$(var.AppNameDir)\app.msi">
<MsiProperty Name="PropertyName1" ="Value1"/>
<MsiProperty Name="PropertyName2" ="Value2"/>
<MsiProperty Name="PropertyName3" ="Value3"/>
<PayloadGroupRef Id="PAYGROUP_AppName"/>
</MsiPackage>
</PackageGroup>
</Fragment>
Y luego finalmente hacer referencia al grupo en la cadena
<Chain>
...
<PackageGroupRef Id="PCKGRP_AppName"/>
...
</Chain>