Cómo seleccionar características de la línea de comandos
-
05-07-2019 - |
Pregunta
Esta podría ser una pregunta ingenua. Tengo que editar manualmente un archivo .WXS para que admita funciones de selección 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 de la línea de comando. Por ejemplo, si escribo " msiexec / i install.msi FEATURE = A " ;, luego " Feature1 " y " Feature2 " esta instalado; si escribo " msiexec / i install.msi FEATURE = B " ;, entonces " Feature1 " y " Feature3 " esta instalado. En este caso, " A " mapas de las funciones 1 y 2; " B " se asigna a la Característica 1 y 3.
¿Cómo lograr esto en WIX?
Solución
Cambiaría Feature1, Feature2 y Feature3 a Componentes, 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]
Otros consejos
La respuesta aceptada ya menciona la propiedad ADDLOCAL, pero parece implicar que solo puede seleccionar 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 desea utilizar estos trucos para crear un programa de arranque que instale ciertas funciones de paquetes msi de terceros.
Hay una serie de propiedades que pueden controlar los estados de instalación de las Características. Consulte esta documentación del SDK de MSI y los enlaces que contiene: http: //msdn.microsoft.com/en-us/library/aa367536(VS.85).aspx