2015-12-08 4 views
0

J'ai créé un msi qui permet à l'utilisateur d'afficher la licence, de sélectionner le dossier d'installation et les fonctions à installer. Tout cela fonctionne bien.WixManagedBootstrapperApplicationHost IU personnalisée

Maintenant j'ai besoin de créer un bootstrapper qui va vérifier si framework 4.5 est installé, l'installer sinon, puis installer msi.

Je peux le faire en utilisant WixStandardBootstrapperApplication.RtfLargeLicense, où j'installerai framework, puis exécuter msi avec sa propre interface utilisateur. Mais que se passe-t-il si je ne veux pas afficher deux applications (msi sur exe), mais une seule fenêtre?

Étant donné que ma fonction msi contient une fonctionnalité, le programme d'amorçage standard ne fournit pas d'interface permettant de définir des fonctions à partir de msi. J'ai donc besoin de créer une interface utilisateur personnalisée.

Le problème est que je ne comprends pas comment fonctionne WixManagedBootstrapperApplicationHost? J'ai créé une DLL avec une nouvelle interface utilisateur et la place dans Payload. Lors de l'exécution du programme d'installation, lorsque le cadre doit être installé, WixManagedBootstrapperApplicationHost invoque toujours sa propre fenêtre qui dit:

Microsoft .NET Framework required for MyApp Setup. Click the "Accept and Install" button to accept the Microsoft .NET Framework license terms. 

Et après avoir terminé l'installation de .NET Framework, il invoque l'interface utilisateur que je créé à l'dll. Pourquoi quelqu'un voudrait-il ce genre de fonctionnalité, où mon application bootstrapper contient une interface utilisateur totalement différente de celle de l'interface d'installation du framework? L'idée de bootstrapper avec l'interface utilisateur personnalisée n'est-elle pas de fournir une interface utilisateur complètement personnalisée? Alors, comment puis-je fournir mon interface utilisateur personnalisée pour cette partie de l'installation du framework?

Répondre

0

Je suppose que votre propre interface utilisateur est C# et WPF? Si vous l'installez sur une machine sans .Net, il faudra installer .Net avant de pouvoir afficher l'interface utilisateur de WPF. Je peux me tromper mais je suis sûr que c'est inévitable.

Si vous souhaitez remplacer/modifier l'écran d'installation .Net, alors ce fil ressemble a la réponse:

Wix Burn: Basic UI handling if No Net Framework is there

Cependant, si votre disant .Net installer dialogue affiche au-dessus de votre interface utilisateur à un certain moment de l'installation, vous devez définir la commande d'installation sur "/ q", ce qui signifie calme (pas d'interface utilisateur).

+0

Mon logiciel est construit sur la version 4.5, donc je suis limité à supporter Vista ou plus tard. Cela signifie que sur chaque OS il y aura un framework installé (min v3). Pour cette raison, ma DLL d'amorçage personnalisée Bootstrapper est construite sur framework v3, de sorte que je n'ai pas besoin d'utiliser les prérequis BA. Cependant, il semble que quelque chose manque, puisque lorsque je teste sur Vista, BA prérequis demande toujours d'installer .NET Framework v4.5, bien que v3 soit présent. Par application prérequise BA, je veux dire la fenêtre exacte qui est affichée dans un thread SO vous avez posté un lien vers. Alors, pourquoi cela se voit-il si mon BA a besoin de framework v3, qui est déjà présent? – Goran

+0

Je pense que le fichier bootstrapper.config est ce que vous devez regarder. Voir l'exemple de celui-ci: http://blogs.msdn.com/b/heaths/archive/2011/10/28/introducing-managed-bootstrapper-applications.aspx Vous devez changer la section de structure supportée que j'attends. – user3161729

+0

Désolé pour la réponse tardive. J'ai déjà configuré bootstrapper.config, comme dans le lien fourni, mais cela ne fonctionnait toujours pas. Après avoir basculé de la version 3.0 vers la version 3.5, créer une interface utilisateur ciblant ce framework et configuré bootstrapper.config pour cibler ce framework, cela a bien fonctionné. Cependant, dès que je reviens à v3.0, il commence à planter dans presentationframework.dll. Étrange... – Goran