metaetiqueta - WIX: Cómo seleccionar características desde la línea de comandos
metaetiqueta wix (3)
Cambiaría Feature1, Feature2 y Feature3 a Components, y luego declararía algo como esto:
<Feature Id="FEATUREA" Title="Super" Level="1" >
<ComponentRef Id="Component1" />
<ComponentRef Id="Component2" />
</Feature>
<Feature Id="FEATUREB" Title="Super1" Level="1" >
<ComponentRef Id="Component1" />
<ComponentRef Id="Component3"/>
</Feature>
Luego, para instalar FeatureA o FeatureB
msiexec /i install.msi ADDLOCAL=[FEATUREA | FEATUREB]
Esta podría ser una pregunta ingenua. Tengo que editar manualmente un archivo .WXS para que admita funciones selectas desde la línea de comandos.
Por ejemplo, hay 3 funciones en el archivo .WXS.
<Feature Id="AllFeature" Level=''1''>
<Feature Id="Feature1" Level=''1''> </Feature>
<Feature Id="Feature2" Level=''1''> </Feature>
<Feature Id="Feature3" Level=''1''> </Feature>
</Feature>
Ahora, quiero seleccionar características desde la línea de comando. Digamos, si escribo "msiexec / i install.msi FEATURE = A", entonces se instalan "Feature1" y "Feature2"; si escribo "msiexec / i install.msi FEATURE = B", entonces se instalan "Feature1" y "Feature3". En este caso, "A" se asigna a la Característica 1 y 2; Mapas "B" a la Característica 1 y 3.
¿Cómo lograr esto en WIX?
Hay una serie de propiedades que pueden controlar los estados de instalación de las Características. Consulte esta documentación de MSI SDK y los enlaces que contiene : http://msdn.microsoft.com/en-us/library/aa367536(VS.85).aspx
La respuesta aceptada ya menciona la propiedad ADDLOCAL, pero parece implicar que puede seleccionar solo una característica. En realidad, puede seleccionar varias funciones separándolas con comas como esta:
msiexec /i install.msi ADDLOCAL=Feature1,Feature2
o
msiexec /i install.msi ADDLOCAL=Feature2,Feature3
Otra sugerencia: puede descubrir estos nombres de funciones abriendo el msi con orca . Esto es muy útil cuando quiere usar estos trucos para crear un bootstrapper que instale ciertas características de paquetes msi de terceros.