Distribution d'applications .NET avec DreamShield

Karim Audrey LUCCIN

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

N'hésitez pas à commenter cet article ! Commentez ♪

- Titre : Distribution d'applications .NET avec DreamShield

- Auteur : Karim Audrey LUCCIN

- Parution : 28 juillet 2007

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2020 Karim Audrey LUCCIN. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- 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 projets 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-A. Édition des CD

- V-B. Édition des archives

- V-C. Édition des packets

- VI. Édition des fichiers

- VII. Fonctionnalités supplémentaires

- VII-A. Licence et Lisez-moi

- VII-B. Création de raccourcis

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

- VIII. Construction de l'installeur

- VIII-A. Compilation standard du projet

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

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

- IX. Fonctionnalités avancées

- IX-A. Plugins

- IX-B. Vérifier une condition avant l'installation (LUA)

- IX-C. Rajouter une page personnalisée (C#)

- IX-D. Exécuter une action pendant l'installation d'un composant (LUA)

- X. 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 autres de plusieurs assistants de création de projets, tels 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 tutoriel de DreamShield est la version 0,8 que vous pourrez obtenir à l'adresse suivante : Page d'accueil de DreamShield.

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ée 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 projets, 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 projets Visual Studio 2005

Importation de projets 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 source contenus dans le projet.

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écriront 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 projets 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 autoextractible

Indique si le compilateur doit créer une archive autoextractibe, 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 autoextractible

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-A - Édition des CD

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

La vérification du CD n'est pas un dispositif d'anticopie, 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 multiCD, 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écifier 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 clic droit sur la liste des CD puis cliquer sur le menu Nouveau CD.

V-B - Édition des archives

Édition des archives

Les médias 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 choisi comme sortie du compilateur). Les fichiers du média 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.

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égaoctets, 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

Clic 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 média pour l'installation à partir d'Internet

URL à partir de laquelle charger les archives d'installation, ex. : http://www.monsite.com/dreamshield-packages/

Description

Description de l'archive

Description de l'archive

V-C - Édition 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ées 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 visibles, tous les composants parents (à part MainComponent) doivent eux aussi avoir la 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

VI - Édition 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 fichiers un ensemble de dossier et/ou fichiers à rajouter à l'installation.
En faisant un clic 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 a un dossier de destination. Il peut être soit défini 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 clic 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.

Pour le chemin de destination, vous pouvez utiliser dans les chemins 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'adresse 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

Propriétés du dossier -> Chemin de destination

Chemin de destination dans lequel sera installé le dossier.

Propriétés du dossier -> packet

Composant auquel appartient le dossier. Dans le cas du fichier XML il s'agit du guid du composant.

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

VII - Fonctionnalités supplémentaires

VII-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 à sérialiser
-->
<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>

Les textes du fichier de licence et du lisez-moi peuvent être définis en utilisant le format RTF.

VII-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 clic droit sur la liste des fichiers puis cliquer sur le menu Nouveau raccourci.
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>

VII-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>

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 projets, 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.

VIII-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éé.
Si vous avez spécifié au compilateur de créer une archive SFX, celle-ci se trouvera dans le dossier OutputSFX.

VIII-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 :

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

IX-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.

IX-B - Vérifier une condition avant l'installation (LUA)

Dans la page Script de l'installeur, activez LUA dans le projet. Faites ensuite un clic 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 a 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

À 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();

À rajouter au début du fichier afin de charger les assemblies

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

IX-C - 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.

IX-D - 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 clic 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.

X - Conclusion et remerciements

DreamShield est un projet que je développe maintenant depuis près de un an et j'espère qu'il pourra devenir un outil efficace et utile pour toute la communauté des programmeurs .NET de developpez.com, et bien plus encore.
À ce titre, je tiens à remercier l'ensemble de l'équipe des rédacteurs/modérateurs qui m'ont aidé jusqu'ici comme dev01, Janitrix, Cardi et Giovanny Temgoua. Merci à Etanne pour sa relecture.

Aujourd'hui, DreamShield peut être trouvé ici, ici et dispose d'un forum ici