Como selecionar características da linha de comando
-
05-07-2019 - |
Pergunta
Esta pode ser uma pergunta ingênua. Eu tenho que editar manualmente um arquivo .WXS para torná-lo apoiar selecionar os recursos de linha de comando.
Por exemplo, existem 3 características em arquivo .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>
Agora, eu quero selecionar os recursos de linha de comando. Digamos, se eu digitar "msiexec / i INSTALL.MSI feature = A", então "Feature1" e "Feature2" está instalado; se eu digitar "msiexec / i INSTALL.MSI feature = B", então "Feature1" e "Feature3" está instalado. Neste caso, "A" mapeia para Feature 1 e 2; "B" mapeia para Feature 1 e 3.
Como fazer isso em WIX?
Solução
Eu mudaria Feature1, Feature2 e Feature3 de Componentes, em seguida, iria declarar algo como isto:
<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>
Depois de instalar ou o FeatureA ou FeatureB
msiexec /i install.msi ADDLOCAL=[FEATUREA | FEATUREB]
Outras dicas
A resposta aceita já menciona a propriedade ADDLOCAL, mas parece implicar que você pode selecionar apenas um recurso. Você pode realmente selecionar várias características, separando-os por vírgulas como esta:
msiexec /i install.msi ADDLOCAL=Feature1,Feature2
ou
msiexec /i install.msi ADDLOCAL=Feature2,Feature3
Outra dica: você pode descobrir esses nomes de recursos, abrindo o msi com orca . Isto é muito útil quando você quiser usar esses truques para criar um bootstrapper que instala certas características de terceiros pacotes MSI.
Há um número de propriedades que podem controlar os instalar estados de Recursos. Confira esta documentação MSI SDK e as ligações a partir dele: http: //msdn.microsoft.com/en-us/library/aa367536(VS.85).aspx