Distribution d'applications .NET avec DreamShield

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

N'hésitez pas à commenter cet article ! Commentez Donner une note à l'article (5)

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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

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

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
Sélectionnez

<?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
Sélectionnez

<?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
Sélectionnez

<?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 XMLNom dans l'éditeur de projetsDescription
BuildAsMergeModuleCréer un module partagéNon documenté pour l'instant - toujours false
CompilerOutputDirDossier de sortie du compilateurDossier dans lequel sera généré l'installeur
SFXArchive createSFXArchiveCréer une archive auto-extractibleIndique 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 nameNom de l'archive SFXNom de l'application produite par la création de l'archive auto-extractible
IncludeNativeLauncherCréer un lanceur d'installation natifIndique 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 )
IncludeNativeLauncherRuntimesInclure les runtimes pour l'installation nativeSi 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.

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
Sélectionnez

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

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
Sélectionnez

<?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 XMLNom dans l'éditeur de projetsDescription
DefaultMediaNameClick droit sur la liste des archives + Définir comme Archive par défautArchive par défaut utilisée par le compilateur
embedMediaInSetupInclure l'archive dans le package d'installationIndique s'il faut imbriquer l'archive dans le fichier ddins
embedFilesInMediaInclure les fichiers dans l'archiveIndique s'il faut imbriquer les fichiers dans l'archive
compressionMethodMéthode de compression des fichiers de l'archiveLZMA, GZip, Deflate ou None
cdCD de l'archiveCD contenant l'archive
enableInstallFromTheWebPermettre le chargement de cette archive à partir d'un serveur distantIndique s'il faut utiliser DreamFromTheWeb ( voir plus haut la description de DreamFromTheWeb )
WebUrlURL du media pour l'installation à partir d'internetURL à partir de laquelle charger les archive d'installation, ex : http://www.monsite.com/dreamshield-packages/
DescriptionDescription de l'archiveDescription 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
Sélectionnez

<?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 XMLNom dans l'éditeur de projetsDescription
MainComponentComposant RootComposant racine, parent de tous les autres. Ses propriétés sont ignorés et ne doivent donc pas être modifiées.
nameNom du composantNom du composant
selectableAfficher dans la page de sélection des composants pour l'installationSi 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.
selectedByDefaultSélectionner par défaut pour l'installationIndique si le composant est installé par défaut
DescriptionDescription du composantDescription 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

NomDescription
Nom du nouveau dossierLe 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.
PacketComposant auquel appartient le dossier.
Chemin de destinationChemin de destination du dossier lors de l'installation.

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
Sélectionnez

<?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 XMLNom dans l'éditeur de projetsDescription
<property name="$target" value="..."/>Propriétés du dossier -> Chemin de destinationChemin de destination dans lequel sera installé le dossier.
<property name="$packet" value="..guid.."/>Propriétés du dossier -> packetComposant 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 disqueEmplacement du fichier source, peut être un chemin de la forme C:\MyApp\*.*
readOnly, hidden, systemAttributs du fichier/dossierAttributs 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
Sélectionnez

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

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
Sélectionnez

            <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
Sélectionnez

<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 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 / DossierDescription
all.versionContient 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.urlAdresse relative par rapport au dossier courant de l'installeur statique en ( sans les runtimes du .NET Framework )
static-dotnet.urlAdresse 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.urlAdresse relative par rapport au dossier courant de l'installeur DreamFromTheWeb ( sans les runtimes du .NET Framework )
webDossier contenant l'installation DreamFromTheWeb sous forme de SFX.
web\web-packagesPackages pour lesquels DreamFromTheWeb a été activé. Ils seront à uploader à l'Adresse spécifiée par WebUrl
static et static-dotnetDossiers 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
Sélectionnez

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
Sélectionnez

... 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
Sélectionnez

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

DreamShield est un projet que je développe maintenant depuis près de 1 an et j'espère qu'il pourra devenir un outil efficace et utile pour toutes la communauté des programmeurs .NET de developpez.com, et bien plus encore.
A ce titre, je tient à 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.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+