2017-08-03 6 views
1

Nous avons un ensemble d'amorçeurs de grappes qui installe un paquet de prérequis, lance notre installation principale, puis exécute silencieusement quelques installateurs d'extension. Nous avons récemment dû ajouter quelques nouveaux composants à l'ensemble d'installation, tous deux nécessitant des informations de configuration déjà collectées à partir d'autres produits lancés plus tôt dans l'installation. Donc, fondamentalement:Définir une variable d'amorçage de graver WiX à partir d'un fichier MSI groupé?

  1. Le paquet 1 est installé et une interface utilisateur est présentée. Il demande un utilisateur de service et un mot de passe.
  2. Le paquet 2 a été ajouté à notre offre groupée. Il a également besoin d'un utilisateur de service et d'un mot de passe, comme pour le paquet 1.
  3. Le paquet 3 a été ajouté à notre offre groupée. Il a également besoin d'un utilisateur de service et d'un mot de passe, comme pour le paquet 1.

Nous souhaitons éviter que l'utilisateur configure la même information trois fois de suite. Une solution possible que nous avons vu était d'écrire notre propre application bootstrappeur WiX, mais cela semble assez lourd. Une autre possibilité que nous avons envisagée était peut-être qu'il y avait un moyen pour que le paquet un appelle une action personnalisée qui définit la valeur d'une variable de brûlure. Nous pourrions ensuite appeler les programmes d'installation des paquets deux et trois avec la variable de gravure transmise dans le cadre de leur ligne de commande d'installation silencieuse. Y a-t-il un moyen de faire cela? Si oui, qu'est-ce que cela impliquerait?

Répondre

0

Nous avons finalement trouvé une solution à cela, en utilisant le extended bootstrapper application de Neil Sleightholm. Cela permet la création d'actions personnalisées dans le programme d'amorçage. Nous avons créé une action personnalisée de gravure WiX qui, dans OnDetect, lance un thread séparé. Ce thread ouvre un tube nommé et écoute les paires de noms de variables et de valeurs à envoyer: lorsqu'il obtient une telle paire, il utilise la commande SetVariableValue du moteur pour définir la valeur. Dans l'installation appelée, nous avons créé une action personnalisée qui se connecte au canal nommé et envoie à travers les noms de variables et les valeurs en fonction de ce qu'il a recueilli. Les nouvelles valeurs des variables sont transmises avec succès aux installations suivantes, mais les conditions d'installation sont évaluées avant le lancement des installations. Elles ne peuvent donc pas utiliser les variables dont les valeurs sont définies par les installations.