45 votes

Interface utilisateur personnalisée du bootstrapper WiX Burn?

Je suis de la création d'un package d'installation avec WiX 3.6 surtout pour que je puisse profiter de la Gravure d'amorçage fonctionnalités. Pour l'instant j'ai plusieurs packages MSI regroupés qui sera installé avec la fonction intégrée dans le programme d'amorçage de l'application (WixStandardBootstrapperApplication.RtfLicense).

J'ai lu que Graver permet au programme d'amorçage par défaut de l'application pour être remplacé par la spécification d'une coutume UX.dll, mais je n'ai pas encore été en mesure de localiser les ressources qui décrit comment la coutume ux.dll est construit (qui est, comment il s'intègre avec le moteur de Gravure, quelles sont les technologies qui dois-je utiliser, quelles sont les interfaces dois-je mettre en œuvre, etc.).

Mon but est de créer une marque de programme d'amorçage qui peut rassembler arbitraire des informations à l'utilisateur et de l'information sur les différents regroupés les fichiers MSI, EXE, etc.

J'ai donc deux questions vraiment:

  1. Dans quelle mesure le programme d'amorçage par défaut de l'application personnalisable?
  2. Des ressources sont disponibles qui décrivent comment construire une coutume UX.dll?

41voto

Bill Campbell Points 556

La chose à savoir c'est qu'il est un BootstrapperCore.dll dans le WiX binaires qui définit un BootstrapperApplication classe qui gère l'intégration avec le moteur de Gravure. J'avais besoin de créer ma propre classe dérivée et de redéfinir la méthode pour lancer mon INTERFACE utilisateur personnalisée.

Il est également utile d'utiliser la WixBA projet qui définit l'INTERFACE utilisateur pour le WiX programme d'amorçage comme une référence pour l'utilisation de la BootstrapperApplication classe (src\Setup\WixBA\WixBA.csproj).

Le balisage j'ai utilisé pour faire référence à mon programme d'amorçage personnalisé fichier DLL est:

<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
  <Payload SourceFile="$(var.InstallSourceResources)Bootstrapper\FusionInstallUX.dll"/>
  <Payload Id="FusionInstallUX.config"
           SourceFile="$(var.InstallSourceResources)Bootstrapper\FusionInstallUX.BootstrapperCore.config"
           Name="BootstrapperCore.config" Compressed="yes"/>
</BootstrapperApplicationRef>

Le fichier de configuration se compose de:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup
            name="wix.bootstrapper"
            type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperSectionGroup, BootstrapperCore">

            <section
                name="host"
                type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.HostSection, BootstrapperCore" />
        </sectionGroup>
    </configSections>

    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" />
    </startup>

    <wix.bootstrapper>
        <host assemblyName="FusionInstallUX">
            <supportedFramework version="v4\Full" />
            <supportedFramework version="v4\Client" />
        </host>
    </wix.bootstrapper>
</configuration>

J'ai également suivi d'autres exemples et annexé

[assembly: BootstrapperApplication(typeof([name of class deriving from BootstrapperApplication]))]

à l' AssemblyInfo.cs le fichier.

Et enfin, un Débordement de Pile interrogatio Spécifier le INSTALLLOCATION paquets de WiX à l'intérieur de la Gravure géré programme d'amorçage décrit comment définir et utiliser Graver des variables à l'aide du lecteur de l'installation.

Armés de cette information, je suis maintenant prêt à faire des ravages sur le monde avec mon très propre programme d'Amorçage personnalisé de l'application!

24voto

John M. Wright Points 1044

Pour compléter la réponse de @Bill Campbell, j'ai écrit une série de billets de blog sur l' écriture d'un Bootstrapper WiX personnalisé dans .NET qui approfondit les éléments impliqués, du moins pour une solution de code managé.

6voto

Dave Andersen Points 1822

Outre les autres ressources répertoriées ici, un bon exemple à nu d'une application d'amorçage personnalisée pour Burn est l'application Custom WiX Managed Bootstrapper .

J'ai trouvé que c'était un bon point de départ avant d'approfondir d'autres exemples plus approfondis, tels que le projet WixBA dans les sources WiX.

4voto

ironic Points 1035

Ne pas répondre précisément à cette question, mais si vous souhaitez personnaliser l'apparence de ManagedBootstrapperApplicationHost, alors ce est ce que vous devez faire.

Pour garder court, vous devez déclarer vos variables comme ceci (je l'ai mis avant BootstrapperApplicationRef)

<WixVariable Id="PreqbaThemeXml" Value="tt.thm" />
<WixVariable Id="PreqbaThemeWxl" Value="tt.wxl" />

en supposant que tt.thm est votre fichier de thème, et tt.wxl est votre fichier de traduction. Note de ces fichiers, ainsi que tous les fichiers de référence doit être incluse à BootstrapperApplicationRef comme Payoload, comme

<Payload SourceFile="tt.wxl"/>
<Payload SourceFile="tt.wxl"/>
<Payload SourceFile="cat.png"/>

Comme un exemple de mise en page que vous pouvez utiliser mbapreq.thm, sous WiX sources.

3voto

user2932857 Points 11

Un détail qui me manquait lors de la configuration était que je devais inclure une référence à WixBalExtension.dll . C'est parce que ManagedBootstrapperApplicationHost est défini dans cette DLL et utilisé dans le bundle comme ceci:

 <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost">
      <Payload Name="BootstrapperCore.config"
               SourceFile="MyBA.BootstrapperCore.config" />
      <Payload SourceFile="MyBA.dll"/>
</BootstrapperApplicationRef>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X