10
votes

Installation conditionnelle avec Wix

est-il possible d'avoir une configuration d'installation conditionnelle, esclave WTH l'environnement de configuration Visual Studio?

Par exemple, la sélection de la configuration de débogage ou de libération, WIX sélectionne différents exécutables dans l'installation construite.

Fondamentalement, je vais construire différentes installations des mêmes projets, mais ils diffèrent par les composants. Certains composants sont construits à partir du même projet, mais construits avec différentes options de préprocesseur.

Bien sûr, il est possible d'inclure chaque composant requis, puis de définir des fonctionnalités afin de sélectionner un composant spécifique de l'installation, mais je ne veux pas vraiment redistribuer certains exécutables.

Construire différents projets WIX est la seule solution?


0 commentaires

3 Réponses :


6
votes

Utilisez le préprocesseur, par exemple: Pour inclure / exclure de manière conditionnelle basé sur la configuration.


1 commentaires

Je n'ai pas pensé que Wix pourrait avoir le prétraitement! J'ai trouvé l'homme wix.sourceforge.net/manual-wix2/preprocessor.htm < / a>



8
votes

Vos scripts WIX ont accès à des paramètres de construction, tels que la configuration («débogage» ou «version»). Vous pouvez donc conditionnellement conditionnellement les fichiers binaires corrects pour la configuration actuelle en référençant $ (var.configuarttion) dans vos déclarations de composants: xxx

Lorsque vous exécutez la version en mode de version, ce script prendra en charge. la version de libération du binaire. De même, en mode de débogage, le binaire de débogage sera ramassé. Cette approche ne nécessite pas de prétraitement - le script fait des décisions relatives à la configuration à la durée de construction.


1 commentaires

C'est génial pour trouver le chemin - mais si je veux conditionnellement inclure certains fichiers et non les autres? (Par conséquent, la question posée.) Par exemple, avec une construction de débogage, je souhaite peut-être inclure les fichiers .pdb et non les inclure avec la version de la version (car les fichiers sont comme 20+ MB chacun parfois).



13
votes

Mettre les deux autres réponses et Luca's Recherche ensemble Je suis venu avec cette Solution, qui semble fonctionner (notez que la comparaison de chaîne semble être sensible à la casse et le manque de guillemets semble être correct, j'ai testé cela avec WIX 3.7):

<?if $(var.Configuration) = Debug ?>
  <!-- DEBUG ONLY -->

  [ ... insert debug only XML here ... ]

  <!-- END DEBUG ONLY -->
<?else?>
  <!-- RELEASE ONLY -->

  [ ... insert release only XML here ... ]

  <!-- END RELEASE ONLY -->
<?endif?>


4 commentaires

devrait être


@ Brainslugs83 Je reçois une "variable de préprocesseur mal formé" (configuration) '. Les variables doivent avoir un préfixe (comme' var. ',' Env. 'Ou' sys. ') Et un nom d'au moins 1 caractère long . Si la chaîne littérale '$ (configuration)' est souhaitée, utilisez «$$ (configuration)». Des idées?


@ user95227 Prenez un look de plus près, il devrait être $ (var.configuration) pas $ (configuration) .


$ (var.configuration) n'est pas valide pour WIX 4.0