Procédure pas à pas : utilisation d'une action personnalisée pour créer une base de données au moment de l'installation

La procédure pas à pas suivante décrit l'utilisation d'une action personnalisée et de la propriété CustomActionData pour créer une base de données et une table de base de données pendant l'installation.

Notes

Pour cette procédure, SQL Server doit être installé sur l'ordinateur sur lequel vous déploierez l'application.

Notes

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.

Notes

Les instructions suivantes décrivent comment créer un projet de déploiement à l'aide d'un projet Visual Basic ; les principes généraux s'appliquent à tous les projets dans un langage de Visual Studio qui prennent en charge le déploiement des applications Windows.

Pour créer une classe Installer

  1. Dans le menu Fichier, cliquez sur Nouveau projet.

  2. Dans la boîte de dialogue Nouveau projet, sélectionnez Projets Visual Basic dans le volet Type de projet, puis sélectionnez Bibliothèque de classes dans le volet Modèles. Dans la zone Nom, tapez DBCustomAction.

  3. Dans le menu Projet, cliquez sur Ajouter un nouvel élément.

  4. Dans la boîte de dialogue Ajouter un nouvel élément, cliquez sur Classe Installer. Dans la zone Nom, tapez VbDeployInstaller.vb.

Pour créer un objet de connexion de données

  1. Dans l'Explorateur de serveurs, sélectionnez Connexions de données. Cliquez avec le bouton droit et cliquez sur Ajouter une connexion.

  2. Dans la boîte de dialogue Choisir une source de données, sélectionnez Microsoft SQL Server.

  3. Dans la boîte de dialogue Ajouter une connexion, procédez comme suit :

    1. Dans la liste Nom de serveur, tapez ou sélectionnez un nom de serveur.

    2. Sélectionnez Utiliser l'authentification Windows.

    3. Dans la zone de sélection de la base de données, tapez master.

    4. Cliquez sur OK pour fermer la boîte de dialogue.

  4. Dans le menu Données, cliquez sur Ajouter une nouvelle source de données, puis utilisez l'Assistant pour ajouter la connexion que vous avez établie au cours des étapes précédentes. Pour vérifier que la source de données se trouve dans le projet, cliquez sur Afficher les sources de données dans le menu Données.

Pour créer un fichier texte contenant une instruction SQL destinée à créer une base de données

  1. Dans l'Explorateur de solutions, sélectionnez le projet DBCustomAction. Dans le menu Projet, cliquez sur Ajouter un nouvel élément.

  2. Dans la boîte de dialogue Ajouter un nouvel élément, cliquez sur Fichier texte. Dans la zone Nom, tapez sql.txt (en minuscules).

  3. Ajoutez ce qui suit au fichier sql.txt :

    CREATE TABLE [dbo].[Employees] (
    [Name] [char] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    [Rsvp] [int] NULL ,
    [Requests] [nvarchar] (4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
    ) ON [PRIMARY];
    
    ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD 
    CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED 
    (
    [Name]
    ) ON [PRIMARY];
    
  4. Dans l'Explorateur de solutions, sélectionnez sql.txt. Dans la fenêtre Propriétés, affectez à la propriété BuildAction la valeur Ressource incorporée.

Pour ajouter du code à la classe Installer afin de lire le fichier texte

  1. Dans l'Explorateur de solutions, sélectionnez VbDeployInstaller.vb. Dans le menu Affichage, cliquez sur Code.

  2. Ajoutez l'instruction Imports suivante en haut du module :

    Imports System.IO
    Imports System.Reflection
    Imports System.Data.SqlClient
    
  3. Ajoutez le code suivant à la classe VbDeployInstaller, après la déclaration de MyBase.New:

    Public Class VbDeployInstaller
    
        Dim masterConnection As New System.Data.SqlClient.SqlConnection
    
        Public Sub New()
            MyBase.New()
    
            'This call is required by the Component Designer.
            InitializeComponent()
    
            'Add initialization code after the call to InitializeComponent
    
        End Sub
    
        Private Function GetSql(ByVal Name As String) As String
            Try
    
                ' Gets the current assembly.
                Dim Asm As [Assembly] = [Assembly].GetExecutingAssembly()
    
                ' Resources are named using a fully qualified name.
                Dim strm As Stream = Asm.GetManifestResourceStream(
                  Asm.GetName().Name + "." + Name)
    
                ' Reads the contents of the embedded file.
                Dim reader As StreamReader = New StreamReader(strm)
                Return reader.ReadToEnd()
    
            Catch ex As Exception
                MsgBox("In GetSQL: " & ex.Message)
                Throw ex
            End Try
        End Function
    
        Private Sub ExecuteSql(ByVal DatabaseName As String, ByVal Sql As String)
            Dim Command As New SqlClient.SqlCommand(Sql, masterConnection)
    
            ' Initialize the connection, open it, and set it to the "master" database
            masterConnection.ConnectionString = My.Settings.masterConnectionString
            Command.Connection.Open()
            Command.Connection.ChangeDatabase(DatabaseName)
            Try
                Command.ExecuteNonQuery()
            Finally
                ' Closing the connection should be done in a Finally block
                Command.Connection.Close()
            End Try
        End Sub
    
        Protected Sub AddDBTable(ByVal strDBName As String)
            Try
                ' Creates the database.
                ExecuteSql("master", "CREATE DATABASE " + strDBName)
    
                ' Creates the tables.
                ExecuteSql(strDBName, GetSql("sql.txt"))
    
            Catch ex As Exception
                ' Reports any errors and abort.
                MsgBox("In exception handler: " & ex.Message)
                Throw ex
            End Try
        End Sub
    
        Public Overrides Sub Install(
            ByVal stateSaver As System.Collections.IDictionary)
    
            MyBase.Install(stateSaver)
            AddDBTable(Me.Context.Parameters.Item("dbname"))
        End Sub
    
    End Class
    
  4. Dans le menu Générer, cliquez sur Générer DBCustomAction.

Pour créer un projet de déploiement

  1. Dans le menu Fichier, pointez sur Ajouter, puis cliquez sur Nouveau projet.

  2. Dans la boîte de dialogue Ajouter un nouveau projet, ouvrez le nœud Autres types de projets et sélectionnez Projets de configuration et de déploiement dans le volet Type de projet. Ensuite, sélectionnez Projet d'installation dans le volet Modèles. Dans la zone Nom, tapez DBCustomAction_Setup.

  3. Dans la fenêtre Propriétés, sélectionnez la propriété ProductName et tapez DB Installer.

  4. Dans l'Éditeur du système de fichiers, sélectionnez Dossier d'application. Dans le menu Action, cliquez sur Ajouter, puis sur Sortie du projet.

  5. Dans la boîte de dialogue Ajouter le groupe de sorties du projet, sélectionnez Sortie principale pour le projet DBCustomAction.

Pour créer une boîte de dialogue d'installation personnalisée

  1. Sélectionnez le projet DBCustomAction_Setup dans l'Explorateur de solutions. Dans le menu Affichage, pointez sur Éditeur, puis cliquez sur Interface utilisateur.

  2. Dans l'Éditeur muni d'une interface utilisateur, sélectionnez le nœud Début sous Installer. Dans le menu Action, cliquez sur Ajouter une boîte de dialogue.

  3. Dans la boîte de dialogue Ajouter une boîte de dialogue, sélectionnez la boîte de dialogue Zones de texte (A), puis cliquez sur OK.

  4. Dans le menu Action, cliquez sur Monter. Répétez l'opération jusqu'à ce que la boîte de dialogue Zones de texte (A) se trouve au-dessus du nœud Dossier d'installation.

  5. Dans la fenêtre Propriétés, sélectionnez la propriété BannerText et tapez Spécifier le nom de la base de données.

  6. Sélectionnez la propriété BodyText et tapez Cette boîte de dialogue vous permet de spécifier le nom de la base de données à créer sur le serveur de base de données.

  7. Sélectionnez la propriété Edit1Label et tapez Nom de la base de données :.

  8. Sélectionnez la propriété Edit1Property et tapez CUSTOMTEXTA1.

  9. Sélectionnez les propriétés Edit2Visible, Edit3Visible et Edit4Visible, et affectez-leur la valeur False.

Pour créer une action personnalisée

  1. Sélectionnez le projet DBCustomAction_Setup dans l'Explorateur de solutions. Dans le menu Affichage, pointez sur Éditeur et cliquez sur Actions personnalisées.

  2. Dans l'Éditeur des actions personnalisées, sélectionnez le nœud Installer. Dans le menu Action, cliquez sur Ajouter une action personnalisée.

  3. Dans la boîte de dialogue Sélectionner un élément dans le projet, double-cliquez sur Dossier d'application.

  4. Sélectionnez l'élément Sortie principale de DBCustomAction (Actif), puis cliquez sur OK pour fermer la boîte de dialogue.

  5. Assurez-vous que l'élément Sortie principale de DBCustomAction (Actif) est sélectionné dans l'Éditeur des actions personnalisées. Dans la fenêtre Propriétés, sélectionnez la propriété CustomActionData et tapez /dbname=[CUSTOMTEXTA1]. Ces données sont passées à l'action personnalisée qui est exécutée à la fin de l'installation. Pour plus d'informations, consultez CustomActionData, propriété.

  6. Dans le menu Générer, cliquez sur Générer DBCustomAction_Setup.

Pour installer l'application sur votre ordinateur de développement

  • Sélectionnez le projet DBCustomAction_Setup dans l'Explorateur de solutions. Dans le menu Projet, cliquez sur Installer.

    Cette action exécute le programme d'installation sur votre ordinateur de développement.

    Notes

    Vous devez avoir des autorisations d'installation sur l'ordinateur pour pouvoir exécuter le programme d'installation.

Pour déployer l'application sur un autre ordinateur

  1. Dans l'Explorateur Windows, naviguez jusqu'à votre répertoire de projet et recherchez le programme d'installation généré. Le chemin d'accès par défaut est \documents and settings\VotreNomDeConnexion\DBCustomAction_Setup\configuration de projet\ DBCustomAction_Setup.msi. La configuration de projet par défaut est Debug.

  2. Copiez DBCustomAction_Setup.msi, ainsi que tous les autres fichiers et sous-répertoires du répertoire, sur un autre ordinateur.

    Notes

    Pour installer l'application sur un ordinateur ne se trouvant pas sur un réseau, copiez les fichiers sur des médias traditionnels, tels que des CD-ROM.

    Sur l'ordinateur cible, double-cliquez sur le fichier Setup.exe pour exécuter le programme d'installation.

    Notes

    Vous devez avoir des autorisations d'installation sur l'ordinateur pour pouvoir exécuter le programme d'installation.

Pour désinstaller l'application

  1. Dans le Panneau de configuration Windows, double-cliquez sur Ajout/Suppression de programmes.

  2. Dans la boîte de dialogue Ajouter ou supprimer des programmes, sélectionnez DBCustomAction_Setup et cliquez sur Supprimer, puis cliquez sur OK pour fermer la boîte de dialogue.

    Conseil

    Pour désinstaller l'application de votre ordinateur de développement, dans le menu Projet, cliquez sur Désinstaller.

Voir aussi

Référence

CustomActionData, propriété

Concepts

Gestion des erreurs dans les actions personnalisées

Autres ressources

Gestion des actions personnalisées lors d'un déploiement