Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS .NET FAQs .NET TUTORIELS .NET SOURCES .NET LIVRES .NET OUTILS .NET BLOG .NET DOTNET TV

Distribution d'applications .NET avec DreamShield

Date de publication : 28/07/2007 , Date de mise à jour : 28/07/2007

Par Karim Audrey LUCCIN (Espace perso)
 

Cet article décrit les procédures permettant de distribuer une application .NET en utilisant DreamShield

I. Présentation
II. Installation et premier lancement
III. Création du projet d'installation grâce aux assistants
III-A. Assistant de projet standard
III-B. Importation de projet Visual Studio 2005
IV. Création du projet d'installation grâce à un fichier XML et/ou l'interface
IV-A. Création du projet
IV-B. Propriétés générales de l'installeur
IV-C. Propriétés de compilation
V. Données du package
V-1. Edition des CD
V-2. Edition des archives
V-3. Edition des packets
V-4. Edition des fichiers
VI. Fonctionnalités supplémentaires
V-A. Licence et Lisez-moi
V-B. Création de raccourcis
V-C. Associer un type de fichier avec une application
VIII. Construction de l'installeur
VI-A. Compilation standard du projet
VI-B. Compilation pour un déploiement sur le WEB
VIII-C. Projet d'exemple : Installation de Notepad ( XML )
IX. Fonctionnalités avancées
VI-A. Plugins
VI-A-1. Vérifier une condition avant l'installation ( LUA )
VI-A-2. Rajouter une page personnalisée ( C# )
VI-A-3. Exécuter une action pendant l'installation d'un composant ( LUA )
VIII. Conclusion et Remerciements


I. Présentation

Suite d'InstallWIz.Net, DreamShield est un éditeur permettant de créer d'une manière visuelle ou à l'aide d'un fichier XML, une installation pour un logiciel afin de le distribuer sur d'autres machines exécutant un système d'exploitation Microsoft Windows.

Il dispose entre autre de plusieurs assistants de création de projet, tel que l'importation d'un projet Visual Studio 2005, mais aussi la création de projets d'installations par le biais d'un fichier au format XML.

Ce tutoriel a pour but d'exposer les différentes méthodes qui conduisent à la création d'une installation pour votre application qui permettra à celle-ci d'être distribuée sur d'autres ordinateurs en installant si nécessaire le .NET Framework 2.0 Redistribuable et Windows Installer 3.0.

La version utilisée dans ce toturiel de DreamShield est la version 0,8 que vous pourrez obtenir à l'adresse suivante :



II. Installation et premier lancement

L'installation de DreamShield peut se faire à partir des trois packages d'installation disponibles. Vous pourrez les obtenir à l'adresse cité au dessus.

Les descriptions concernant les trois types de packages sont présentées plus bas, à la section Compilation pour un déploiement sur le WEB

L'installation de DreamShield créera des raccourcis à différents endroits, qui vous permettront de lancer l'application.
- Sur le bureau
- Dans le menu démarrer : Tous les programmes/LKSoft/DreamShield

Page de démarrage

Les sections suivantes exposeront les deux grandes méthodes qui permettent de commencer un projet avec DreamShield.


III. Création du projet d'installation grâce aux assistants

Bien que vous puissiez créer un projet d'installation sans, DreamShield dispose à l'heure actuelle de trois assistants qui permettent de créer rapidement une installation fonctionnelle.
Pour pouvoir y accéder, cliquez sur le menu Fichier/Nouveau puis, dans la boite de dialogue de création de projet, accédez à la section Projets d'installations/Windows (.NET)/Assistants de projet

Nouveau projet


III-A. Assistant de projet standard

Assistant de projet standard

Cet assistant propose étape par étape, de spécifier les propriétés les plus communes de l'installation.
Aucune contrainte n'est fixée par celui-ci et vous pouvez à tout moment cliquer sur "Terminer" pour générer le projet d'installation en utilisant les valeurs par défaut.


III-B. Importation de projet Visual Studio 2005

Importation de projet Visual Studio 2005

Cet assistant permet de créer un projet d'installation à partir d'un projet ( et pas une solution pour l'instant ) Visual Studio 2005 (ou MSBuild). Vous pouvez avec cet assistant décider d'inclure la sortie principale de votre projet ( les fichiers compilés ) et/ou les fichiers sources contenus dans le projet.

idea Si vous utilisez toujours certains paramètres dans vos installations, tels que le texte de licence ou encore certains composants présents par défaut, vous pouvez utiliser un fichier "Template" qu'il vous sera possible de spécifier au cours de l'assistant d'importation.Le fichier Template sert de base à la génération du projet.

IV. Création du projet d'installation grâce à un fichier XML et/ou l'interface

Il vous est possible de ne pas utiliser d'assistant pour créer le projet, mais de le créer à la main soit par l'éditeur de projet soit en utilisant un script XML.
Les sections suivantes décrirons en parallèle les étapes de création du projet grâce à un script XML et grâce à l'éditeur.


IV-A. Création du projet

Dans cette section nous allons créer un projet d'installation pour Notepad.

Pour créer un nouveau projet dans l'éditeur vous devez sélectionner dans la boite de création de nouveau projet Projets d'installation/Windows (.NET)/Projet d'installation.
Pour créer un projet à partir d'un fichier XML vous devez utiliser l'assistant d'importation de projet DreamShield XML. De même pour créer un fichier XML à partir d'un projet DreamShield, ouvrez le projet avec DreamShield puis cliquez sur le menu Projet -> Exporter le projet au format XML
Projet vide DreamShield XML

<?xml version="1.0" encoding="utf-8"?>
<DreamShieldProject name="Exemple - installation de notepad" version="1">
                
</DreamShieldProject>
                

IV-B. Propriétés générales de l'installeur

Dans l'éditeur, les informations générales du projet telles que le nom du produit, l'auteur ou encore le dossier par défaut d'installation, sont disponibles à la fois dans la section Propriétés globales et dans le fichier XML par la clef "Product".
Propriétés globales du projet
Propriétés globales du projet XML

<?xml version="1.0" encoding="utf-8"?>
<DreamShieldProject name="Exemple - installation de notepad" version="1">
  <Product>
    <Name>Notepad sample</Name>
    <Guid>34D877D2-A6B0-458e-B389-27C55EE61C20</Guid>
    <Author>Audrey LUCCIN</Author>
    <Company>Copyright (c) Audrey LUCCIN 2007</Company>
    <Description>Package d'installation d'exemple pour Notepad</Description>
    <Keywords>Installer, DreamShield, .NET</Keywords>
    <DefaultInstallerDir>{ProgramFiles}\LKSoft\DreamShield\Samples\Notepad</DefaultInstallerDir>
    <Version>1</Version>
  </Product>
</DreamShieldProject>
Le projet doit toujours avoir un guid valide, c'est à dire qu'il doit être différent de {00000000-0000-0000-0000-000000000000}.
Le guid est également un identifiant qui doit définir de manière unique votre application et ce de manière universelle. Vous pouvez pour cela utiliser le bouton "Générer" de la section Informations des propriétés globales du projet.


IV-C. Propriétés de compilation

Les propriétés de compilation définissent le dossier de sortie utilisé par le compilateur ainsi que les fichiers à inclure pour le bootstrapper.
Propriétés de compilation
Propriétés de compilation

<?xml version="1.0" encoding="utf-8"?>
<DreamShieldProject name="Exemple - installation de notepad" version="1">
<Compiler>
    <BuildAsMergeModule>false</BuildAsMergeModule>
    <CompilerOutputDir>{PROJECTDIR}\NotepadOutput</CompilerOutputDir>
    <SFXArchive createSFXArchive="true" name="Notepad sample"/>
    <IncludeNativeLauncher>true</IncludeNativeLauncher>
    <IncludeNativeLauncherRuntimes>false</IncludeNativeLauncherRuntimes>
  </Compiler>
</DreamShieldProject>

Identifiant XML Nom dans l'éditeur de projets Description
BuildAsMergeModule Créer un module partagé Non documenté pour l'instant - toujours false
CompilerOutputDir Dossier de sortie du compilateur Dossier dans lequel sera généré l'installeur
SFXArchive createSFXArchive Créer une archive auto-extractible Indique si le compilateur doit créer une archive auto-extractibe, utile pour les petites applications et le déploiement d'applications sur le WEB
SFXArchive name Nom de l'archive SFX Nom de l'application produite par la création de l'archive auto-extractible
IncludeNativeLauncher Créer un lanceur d'installation natif Indique si le compilateur doit créer un fichier Setup.exe natif afin de vérifier les dépendances de l'installeur ( .NET Framework 2.0 Redistribuable )
IncludeNativeLauncherRuntimes Inclure les runtimes pour l'installation native Si un lanceur natif est créé, indique au compilateur d'y lier les fichiers dotnetfx.exe et WindowsInstaller***.exe afin de distribuer les runtimes nécessaires aux applications .NET si nécessaire


V. Données du package


V-1. Edition des CD

DreamShield supporte les installations multi CD. Lorsqu'il en aura besoin, l'installeur demandera à l'utilisateur le CD approprié et le vérifiera avant de poursuivre l'installation.

warning La vérification du CD n'est pas un dispositif d'anti-copie, elle permet simplement d'identifier le CD requis par l'installeur.
L'installation contient toujours un CD par défaut et il n'est pas nécessaire de le spécifier dans le fichier XML cependant il y est défini ainsi :
CD par défaut

<?xml version="1.0" encoding="utf-8"?>
<DreamShieldProject name="Exemple - installation de notepad" version="1">
   <CDs>
      <CD name="-Default-" title="CD par défaut" description="CD par défaut"/>
   </CDs>
</DreamShieldProject>
Les archives utilisent elles aussi par défaut le cd "-Default-". Si vous voulez créer une installation multi-CD, il suffit généralement de créer une archive ( abordé dans la section suivante ) par CD. Il est également conseillé ( mais cela n'est pas nécessaire ) de créer un composant par CD et d'y spécifié par la suite les fichiers afin que l'installeur demande un par un les CD nécessaires, sans avoir besoin de réinsérer un CD déjà demandé.

Pour créer un nouveau CD vous devez faire un click droit sur la liste des CD puis cliquer sur le menu Nouveau CD


V-2. Edition des archives

Edition des archives
Les medias ou archives sont les "entités" qui contiennent les données de l'installeur telles que les fichiers à installer. Les archives et les fichiers qu'elles contiennent sont identifiés de manière unique par rapport à chaque package d'installation crée. En d'autres termes, même si vous ne changez pas de projet mais que vous recompilez deux fois celui-ci, les archives des deux installations ne seront pas interchangeables.

Les archives peuvent être intégrées ou non dans le package d'installation ( fichier .ddins situé dans un des sous dossiers du répertoire choisis comme sortie du compilateur ).Les fichiers du media peuvent eux aussi être intégrés ou non dans l'archive ( par défaut, ils sont contenus dans celle-ci ). Ils peuvent également être compressés. Les compressions supportées dans la version 0,8 de DreamShield sont les compressions LZMA, GZIP et Deflate. Bien que le SFX utilise une compression CAB, celle ci n'est pas disponible pour les fichiers.

Grâce à DreamFromTheWeb vous pouvez indiquer au compilateur de créer des archives qui pourront se trouver sur un serveur WEB et télécharger si nécessaire à partir de celui-ci par l'installeur. Cela réduit de manière importante la taille du téléchargement de l'installeur.

idea Dans le cas de l'installation de DreamShield, l'installation complète fait environ 38 Mo et le package DreamFromTheWeb fait 1,5 Mo. Cette différence peut être utile si les données facultatives de votre installation s'élèvent à plusieurs Méga-octets, car, celles-ci ne seront donc pas téléchargées si l'utilisateur ne le souhaite pas.
Archives dans le projet XML

<?xml version="1.0" encoding="utf-8"?>
<DreamShieldProject name="Exemple - installation de notepad" version="1">					
   <DefaultMediaName>Data</DefaultMediaName>
   <Medias>
    <Media name="Data" embedMediaInSetup="true" embedFilesInMedia="true" compressionMethod="LZMA" cd="-Default-" enableInstallFromTheWeb="false">
        <Description>Archive par défaut</Description>
        <WebUrl></WebUrl>
    </Media>
  </Medias>
</DreamShieldProject>
Identifiant XML Nom dans l'éditeur de projets Description
DefaultMediaName Click droit sur la liste des archives + Définir comme Archive par défaut Archive par défaut utilisée par le compilateur
embedMediaInSetup Inclure l'archive dans le package d'installation Indique s'il faut imbriquer l'archive dans le fichier ddins
embedFilesInMedia Inclure les fichiers dans l'archive Indique s'il faut imbriquer les fichiers dans l'archive
compressionMethod Méthode de compression des fichiers de l'archive LZMA, GZip, Deflate ou None
cd CD de l'archive CD contenant l'archive
enableInstallFromTheWeb Permettre le chargement de cette archive à partir d'un serveur distant Indique s'il faut utiliser DreamFromTheWeb ( voir plus haut la description de DreamFromTheWeb )
WebUrl URL du media pour l'installation à partir d'internet URL à partir de laquelle charger les archive d'installation, ex : http://www.monsite.com/dreamshield-packages/
Description Description de l'archive Description de l'archive

V-3. Edition des packets

Les packets ou composants sont les conteneurs logiques des données de l'installeur telles que les fichiers à installer ou les clefs du registre.
Chaque composant doit avoir un GUID unique au sein de l'installation ( différent de {00000000-0000-0000-0000-000000000000} sauf pour le composant racine ou Root ) mais pas forcément unique entre plusieurs installations.
Les composants

<?xml version="1.0" encoding="utf-8"?>
<DreamShieldProject name="Exemple - installation de notepad" version="1">	
    <MainComponent>
        <Components>
          <Component name="Notepad main" version="1" selectable="false" selectedByDefault="true" guid="DBD64667-2210-4965-AE1E-93C5DF10CFB2">
            <Description>Composant principal pour notepad</Description>
          </Component>
        </Components>
      </MainComponent>
</DreamShieldProject>
Identifiant XML Nom dans l'éditeur de projets Description
MainComponent Composant Root Composant racine, parent de tous les autres. Ses propriétés sont ignorés et ne doivent donc pas être modifiées.
name Nom du composant Nom du composant
selectable Afficher dans la page de sélection des composants pour l'installation Si le composant est "selectable", alors il sera affiché dans la page de sélection des composants à installer lors d'une installation personnalisée.
Pour être visible, tous les composants parents ( à part MainComponent ) doivent eux aussi avoir le propriété "selectable" à true.
selectedByDefault Sélectionner par défaut pour l'installation Indique si le composant est installé par défaut
Description Description du composant Description du composant

V-4. Edition des fichiers

Fichiers du package
La page d'édition des fichiers permet de définir l'ensemble des fichiers à installer. Vous pouvez dans n'importe quel dossier glisser à partir de l'explorateur de Windows vers l'éditeur de fichier un ensemble de dossier et/ou fichiers à rajouter à l'installation.
En faisant un click droit sur un dossier ou sur un fichier vous pourrez accéder à ces attributs ( Caché, Système, ... ) et ses propriétés ( chemin du fichier source, ... ).

Chaque répertoire du projet à un dossier de destination. Il peut être soit définis explicitement, soit hérité du répertoire parent à l'exception du dossier InstallerData qui n'a pas de dossier d'installation. Rajouter un fichier directement dans InstallerData provoquera donc une erreur car il ne sera pas possible pour ces fichiers de résoudre le dossier de destination.
Pour installer des fichiers dans le dossier de destination choisi par l'utilisateur, vous devez d'abord créer un dossier en faisant un click droit sur le dossier InstallerData ou sur l'espace blanc de droite et cliquer sur le menu Nouveau Dossier. Une boite de dialogue apparaît alors :
Nouveau dossier

Nom Description
Nom du nouveau dossier Le nom du dossier. Il ne correspond pas forcément au nom du dossier lors de l'installation. Si le nom du dossier est TargetDir et que le chemin de destination est {TargetDir} alors son chemin lors de l'installation sera le dossier de destination du dossier.
Packet Composant auquel appartient le dossier.
Chemin de destination Chemin de destination du dossier lors de l'installation.
idea Pour le chemin de destination, Vous pouvez utiliser dans les chemin une variable d'environnement. Pour obtenir les dossiers correspondant aux variables sur votre ordinateur vous pouvez utiliser l'outil "Liste des dossiers spéciaux".
Dossiers spéciaux
Les fichiers dans le projet d'exemple au format XML

<?xml version="1.0" encoding="utf-8"?>
<DreamShieldProject name="Exemple - installation de notepad" version="1">	
  <Files name="InstallerData">
    <Elements>
      <Directory name="TargetDir">
        
        <Properties>
          <!--le dossier TargetDir sera installé à l'addresse choisie par l'utilisateur-->
          <property name="$target" value="{TARGETDIR}"/>
          <!--le dossier TargetDir appartient au composant Notepad main-->
          <property name="$packet" value="DBD64667-2210-4965-AE1E-93C5DF10CFB2"/>
        </Properties>

        <Elements>
          <File name="notepad.exe" readOnly="false" hidden="false" system="false">
            <Properties>
              <property name="$src" value="{windir}\notepad.exe"/>
            </Properties>
          </File>
        </Elements>
        
      </Directory>
    </Elements>
  </Files>
  
</DreamShieldProject>
Identifiant XML Nom dans l'éditeur de projets Description
<property name="$target" value="..."/> Propriétés du dossier -> Chemin de destination Chemin de destination dans lequel sera installé le dossier.
<property name="$packet" value="..guid.."/> Propriétés du dossier -> packet Composant auquel appartient le dossier. Dans le cas du fichier XML il s'agit du guid du composant.
<property name="$src" value="..chemin.."/> Propriétés du fichier -> Emplacement du fichier source sur le disque Emplacement du fichier source, peut être un chemin de la forme C:\MyApp\*.*
readOnly, hidden, system Attributs du fichier/dossier Attributs du fichier ou du dossier : Lecture Seule, Fichier Caché, Fichier Système

VI. Fonctionnalités supplémentaires


V-A. Licence et Lisez-moi

Les informations de licence et du fichier lisez-moi peuvent être modifiées dans l'éditeur de projet à la section Pages de Texte et dans le projet XML sous forme de plugin :
licence et lisez-moi

<?xml version="1.0" encoding="utf-8"?>
<DreamShieldProject name="Exemple - installation de notepad" version="1">
    <plugins>
        <plugin>
          <!--
          Les textes de licence et de lisez-moi sont présents dans l'installation
          sous forme de plugin. Ceci ce manifeste dans le projet XML
          par l'utilisation d'entrée PluginElement ayant pour type
          la classe fournissant l'objet à serialiser
          -->
          <PluginElement type="Deployment.TextFiles.Compiler.TextEntries, Deployment.TextFiles.Compiler">
            <TextEntries>
              <Licence showOnInstall="true">
                Ceci est un exemple de licence
                pour l'installation test de notepad.
              </Licence>
              <Readme showOnInstall="true">
                Projet d'installation d'éssai pour
                notepad
              </Readme>
              <!--les champs Licence et Readme peuvent aussi contenir
              du texte mis en forme avec le format RTF-->
            </TextEntries>
          </PluginElement>
        </plugin>
      </plugins>
</DreamShieldProject>
idea Les textes du fichier de licence et du lisez-moi peuvent être définis en utilisant le format RTF.

V-B. Création de raccourcis

Vous pouvez créer des raccourcis dans n'importe quel dossier du projet d'installation, à la manière d'un fichier quelconque.
Dans l'éditeur de projet, vous devez faire un click droit sur la liste des fichiers puis cliquer sur le menu Nouveau raccourcis.
L'image ci-dessous présente les propriétés à définir pour obtenir un raccourci vers le programme de désinstallation de votre application.
Désinstalleur ( raccourcis )

Dans le projet XML, un raccourci se présente comme suit :
Raccourcis vers le désinstalleur

            <File name="uninstaller.lnk">
              <Properties>
                <!--nécéssaire pour indiquer un lien-->
                <property name="$ext" value="$lnk"/>
                
                <property name="SCDescription" value="Raccourcis vers le désinstalleur"/>
                <property name="SCIcon" value="{UNINSTALLER}"/>
                <property name="SCTarget" value="{UNINSTALLER}"/>
              </Properties>
            </File>

V-C. Associer un type de fichier avec une application

DreamShield dispose d'un éditeur des clefs du registre. Vous pouvez à partir de celui ci créer des clefs et/ou des valeurs. Cependant, un menu permet de créer très simplement une association entre une application et une extension.
Association de fichier
Association

Le champ application peut recevoir divers paramètres et n'est donc pas limité à contenir le chemin d'une application. Cependant, pour transmettre par exemple des arguments à l'application choisie il doit avoir un format bien défini. Exemple :
TargetDir\dside.exe::"{0}" "%1"
Le format est le suivant :
VARIABLE_1:VARIABLE_2:...::Chaine recevant les paramètres {0} {1} {...}
Cette chaine aura lors de l'exécution la valeur suivante :
Chaine recevant les paramètres VARIABLE_1 VARIABLE_2 ...

Dans le projet XML, l'association est obtenue en recréant les clefs, de la même manière qu'on l'aurait fait avec l'outil regedit.exe présent avec Windows:
Association des fichiers dscproj

<Component name="DreamShield IDE" version="1" selectable="false" selectedByDefault="true" guid="e45b7bb8-a4b8-4416-aa23-0390d9c0307f">
        <plugins />
        <RegistryKeys>
          <Key name="HKEY_CURRENT_USER" keyCreationMode="PlaceHolder">
            <plugins />
            <Elements />
          </Key>
          <Key name="HKEY_CURRENT_CONFIG" keyCreationMode="PlaceHolder">
            <plugins />
            <Elements />
          </Key>
          <Key name="HKEY_CLASSES_ROOT" keyCreationMode="PlaceHolder">
            <plugins />
            <Elements>
              <Key name=".dscproj" keyCreationMode="CreateAlways">
                <plugins />
                <DefaultValue name="" keyCreationMode="CreateAlways" type="REG_SZ" internalReferenceEnabled="false">
                  <plugins />
                  <Value>DS.dscprojFILE</Value>
                </DefaultValue>
                <Elements />
              </Key>
              <Key name="DS.dscprojFILE" keyCreationMode="CreateAlways">
                <plugins />
                <DefaultValue name="" keyCreationMode="CreateAlways" type="REG_SZ" internalReferenceEnabled="false">
                  <plugins />
                  <Value>Projet d'installation DreamShield</Value>
                </DefaultValue>
                <Elements>
                  <Key name="DefaultIcon" keyCreationMode="CreateAlways">
                    <plugins />
                    <DefaultValue name="" keyCreationMode="CreateAlways" type="REG_SZ" internalReferenceEnabled="true">
                      <plugins />
                      <Value>TargetDir\Installer\Icons\installer.ico::{0}</Value>
                    </DefaultValue>
                    <Elements />
                  </Key>
                  <Key name="shell" keyCreationMode="PlaceHolder">
                    <plugins />
                    <Elements>
                      <Key name="Open.DS" keyCreationMode="CreateAlways">
                        <plugins />
                        <DefaultValue name="" keyCreationMode="CreateAlways" type="REG_SZ" internalReferenceEnabled="false">
                          <plugins />
                          <Value>Ouvrir</Value>
                        </DefaultValue>
                        <Elements>
                          <Key name="command" keyCreationMode="CreateAlways">
                            <plugins />
                            <DefaultValue name="" keyCreationMode="CreateAlways" type="REG_SZ" internalReferenceEnabled="true">
                              <plugins />
                              <Value>TargetDir\dside.exe::"{0}" "%1"</Value>
                            </DefaultValue>
                            <Elements />
                          </Key>
                        </Elements>
                      </Key>
                    </Elements>
                  </Key>
                </Elements>
              </Key>
            </Elements>
        </Key>
    </RegistryKeys>
</Component>
idea Si la création d'associations au format XML est une tâche qui vous semble trop complexe, vous pouvez également générer l'association dans l'éditeur de projet, puis, l'exporter au format XML.

VIII. Construction de l'installeur

Une fois que votre projet est terminé, vous pouvez le compiler. Pour cela, soit vous pouvez accéder à la page Compilation -> Compilation du projet, soit vous pouvez accéder au menu Projet -> Compiler et Compiler pour le WEB


VI-A. Compilation standard du projet

La compilation standard du projet génère une installation qui sera accessible à partir du dossier de sortie du compilateur dans le répertoire Output. Les fichiers seront organisés par disque ( CD ) mais s'il n'y a qu'un seul disque ( CD par défaut ), seul le dossier DEFAULT_CD sera crée.
Si vous avez spécifié au compilateur de créer une archive SFX, celle-ci se trouvera dans le dossier OutputSFX


VI-B. Compilation pour un déploiement sur le WEB

La deuxième manière de compiler le projet est en utilisant la compilation pour le WEB, faisant partie des options apportées par DreamFromTheWeb. DreamShield est un exemple d'application utilisant DreamFromTheWeb qui lui permet d'avoir trois packages d'installations distincts. Plusieurs fichiers seront créés dans le dossier Deploy.

Fichier / Dossier Description
all.version Contient uniquement la chaine de version du projet. Peut être utile avec une ligne de php de la forme :
<p id="infos_page">Version actuelle de DreamShield : win-<? include("./deploy/all.version") ?> </p>
static.url Adresse relative par rapport au dossier courant de l'installeur statique en ( sans les runtimes du .NET Framework )
static-dotnet.url Adresse relative par rapport au dossier courant de l'installeur statique ( avec les runtimes du .NET Framework ), si vous avez décidé d'inclure les runtimes lors de la création du projet d'installation.
web.url Adresse relative par rapport au dossier courant de l'installeur DreamFromTheWeb ( sans les runtimes du .NET Framework )
web Dossier contenant l'installation DreamFromTheWeb sous forme de SFX.
web\web-packages Packages pour lesquels DreamFromTheWeb a été activé. Ils seront à uploader à l'Adresse spécifiée par WebUrl
static et static-dotnet Dossiers contenant respectivement les installations statiques sous forme de SFX sans le .NET Framework et avec le .NET Framework

VIII-C. Projet d'exemple : Installation de Notepad ( XML )

Le projet complet permettant d'installer Notepad ( Notepad.exe ) est disponible dans le dossier d'installation de DreamShield, dans le sous dossier Samples\XmlProjects.


IX. Fonctionnalités avancées


VI-A. Plugins

DreamShield permet d'utiliser des plugins de deux manières : soit par l'utilisation d'assemblies managées ( .NET ), soit en rajoutant un script LUA. De plus importants exemples seront disponibles par la suite.


VI-A-1. Vérifier une condition avant l'installation ( LUA )

Dans la page Script de l'installeur, activez LUA dans le projet. Faites ensuite un click droit sur le dossier script et créez un nouveau fichier de script. Un code par défaut sera généré dans le fichier.
Le code suivant est présent dans l'installation de DreamShield 0.8 et vérifie qu'il n'y a aucune version de DreamShield 0.7 installé sur l'ordinateur cible ( ces deux versions présentant quelques différences au niveau du projet d'installation ).
Function de vérification

function InitBootstrapper(
 bootstrapper --[[DreamShield.Deployment.Bootstrappers.BaseBootstrapper]]
)
	--[[vérifier qu'il n'y ai pas d'ancienne version de DreamShield
	car pour la version 0.7 le projet avec pour version 3 et pour
	la version 0.8 il correspond bien à la version 0.8
	
	0.8 < 3 donc il faut vérifier
	
	old guid :
	7a5b26cb-d3b7-4982-95e8-a69454e2b1e7
	]]
	Guid=System.Guid
	guid = Guid("7a5b26cb-d3b7-4982-95e8-a69454e2b1e7")

	if DS_Indexer.LocalProductIndexEntry.IsProductInstalled (
		guid ) then
		
		bootstrapper:CancelInit("Une installation plus ancienne de DreamShield est déjà présente sur cet ordinateur. Vous devez au préalable la désinstaller.")
	end

end
A rajouter à la fin du fichier afin de charger les bibliothèques

... DSBoostrappers = CLRPackage("DreamShield.Deployment.dll","DreamShield.Deployment.Bootstrappers")
DSInstallers = CLRPackage("DreamShield.Deployment.dll","DreamShield.Deployment.Installers")
System = CLRPackage("System.dll","System");

Deployment = CLRPackage("DreamShield.Deployment.dll", "DreamShield.Deployment")
DS_Indexer = CLRPackage("DreamShield.Deployment.dll", "DreamShield.Deployment.Driver.Indexer")

... first_init();
A rajouter au début du fichier afin de charger les assemblies

.. luanet.load_assembly("System.Xml")
luanet.load_assembly("DreamShield.Deployment")

VI-A-2. Rajouter une page personnalisée ( C# )

DreamShield permet d'étendre l'assistant en ajoutant de nouvelles pages. Pour obtenir une aide quant à l'ajout de pages consultez le fichier PDF accessible par le menu Aide -> Tutoriels -> Page personnalisée pour l'assistant d'installation


VI-A-3. Exécuter une action pendant l'installation d'un composant ( LUA )

Afin d'exécuter un script LUA pendant un moment précis de l'installation, créez un nouveau script LUA puis faites dans l'éditeur un click droit et ouvrez le menu Insérer un modèle.
Le modèle Evénements d'installation créera plusieurs fonctions LUA qui correspondront chacune à un évènement de l'installation.


VIII. Conclusion et Remerciements




Valid XHTML 1.1!Valid CSS!