I. Présentation▲
Suite d'InstallWIz.NetInstallWIz.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 DreamShieldPage 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.
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
III-A. 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▲
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 :
<?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 ».
<?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.
<?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 :
<?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▲
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.
<?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.
<?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. |
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▲
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 :
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 ».
<?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 :
<?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.
Dans le projet XML, un raccourci se présente comme suit :
<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.
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 :
<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
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
..
. 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
(
);
..
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é iciDreamShield, iciDreamShield et dispose d'un forum iciDreamShield, le forum