Exemplarische Vorgehensweise: Erstellen einer Datenbank mithilfe einer benutzerdefinierten Aktion während der Installation

Im Folgenden wird exemplarisch beschrieben, wie eine benutzerdefinierte Aktion und die CustomActionData-Eigenschaft verwendet werden, um während einer Installation eine Datenbank sowie eine Datenbanktabelle zu erstellen.

Tipp

Für diese exemplarischen Vorgehensweise muss SQL Server auf dem Computer ausgeführt werden, auf dem die Anwendung bereitgestellt werden soll.

Tipp

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Tipp

In den folgenden Anweisungen wird gezeigt, wie ein Bereitstellungsprojekt mithilfe eines Visual Basic-Projekts erstellt wird. Die allgemeinen Prinzipien gelten für Visual Studio-Projekte in allen Programmiersprachen, die das Bereitstellen von Windows-basierten Anwendungen unterstützen.

So erstellen Sie eine Installationsprogrammklasse

  1. Klicken Sie im Menü Datei auf Neues Projekt.

  2. Wählen Sie im Dialogfeld Neues Projekt im Bereich Projekttyp den Eintrag Visual Basic-Projekte aus. Wählen Sie anschließend im Bereich Vorlagen den Eintrag Klassenbibliothek aus. Geben Sie im Feld Name die Zeichenfolge DBCustomAction ein.

  3. Klicken Sie im Menü Projekt auf Neues Element hinzufügen.

  4. Klicken Sie im Dialogfeld Neues Element hinzufügen auf Installerklasse. Geben Sie im Feld Name die Zeichenfolge VbDeployInstaller.vb ein.

So erstellen Sie ein neues Datenverbindungsobjekt

  1. Wählen Sie im Server-Explorer den Eintrag Datenverbindungen aus. Klicken Sie mit der rechten Maustaste, und klicken Sie dann auf Verbindung hinzufügen.

  2. Wählen Sie im Dialogfeld Datenquelle auswählen die Option Microsoft SQL Server aus.

  3. Gehen Sie im Dialogfeld Verbindung hinzufügen wie folgt vor:

    1. Geben Sie in der Liste Servername einen Servernamen ein, oder wählen Sie einen aus.

    2. Wählen Sie Windows-Authentifizierung verwenden aus.

    3. Geben Sie im Datenbankfeld die Zeichenfolge master ein.

    4. Klicken Sie auf OK, um das Dialogfeld zu schließen.

  4. Klicken Sie im Menü Daten auf Neue Datenquelle hinzufügen, und fügen Sie dann mithilfe des Assistenten die im vorherigen Schritt erstellte Verbindung hinzu. Um sicherzustellen, dass sich die Datenquelle im Projekt befindet, klicken Sie im Menü Daten auf Datenquellen anzeigen.

So erstellen Sie eine Textdatei, die eine SQL-Anweisung zum Erstellen einer Datenbank enthält

  1. Wählen Sie im Projektmappen-Explorer das DBCustomAction-Projekt aus. Klicken Sie im Menü Projekt auf Neues Element hinzufügen.

  2. Klicken Sie im Dialogfeld Neues Element hinzufügen auf Textdatei. Geben Sie im Feld Name die Zeichenfolge sql.txt (in Kleinbuchstaben!) ein.

  3. Fügen Sie die folgenden Zeilen zu der Datei sql.txt hinzu:

    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. Wählen Sie im Projektmappen-Explorer sql.txt aus. Legen Sie im Eigenschaftenfenster die Eigenschaft BuildAction auf Eingebettete Ressource fest.

So fügen Sie der Installerklasse Code zum Lesen der Textdatei hinzu

  1. Wählen Sie im Projektmappen-Explorer den Eintrag VbDeployInstaller.vb aus. Klicken Sie im Menü Ansicht auf Code.

  2. Fügen Sie die folgende Imports-Anweisung am Anfang des Moduls ein:

    Imports System.IO
    Imports System.Reflection
    Imports System.Data.SqlClient
    
  3. Fügen Sie nach der Deklaration von MyBase.New folgenden Code der VbDeployInstaller-Klasse hinzu:

    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. Klicken Sie im Menü Erstellen auf DBCustomAction erstellen.

So erstellen Sie ein Bereitstellungsprojekt

  1. Klicken Sie im Menü Datei auf Hinzufügen, und klicken Sie dann auf Neues Projekt.

  2. Öffnen Sie im Dialogfeld Neues Projekt hinzufügen den Knoten Andere Projekttypen, und wählen Sie im Bereich Projekttyp die Option Setup- und Bereitstellungsprojekte aus. Wählen Sie anschließend im Bereich Vorlagen die Vorlage Setup-Projekt aus. Geben Sie im Feld Name die Zeichenfolge DBCustomAction_Setup ein.

  3. Wählen Sie im Eigenschaftenfenster die ProductName-Eigenschaft aus, und geben Sie DB Installer ein.

  4. Wählen Sie im Dateisystem-Editor den Anwendungsordner aus. Klicken Sie im Menü Aktion auf Hinzufügen, und klicken Sie dann auf Projektausgabe.

  5. Wählen Sie im Dialogfeld Projektausgabegruppe hinzufügen die Option Primäre Ausgabe für das DBCustomAction-Projekt aus.

So erstellen Sie ein benutzerdefiniertes Installationsdialogfeld

  1. Wählen Sie im Projektmappen-Explorer das Projekt DBCustomAction_Setup aus. Zeigen Sie im Menü Ansicht auf Editor, und klicken Sie dann auf Benutzeroberfläche.

  2. Wählen Sie im Benutzeroberflächen-Editor unter Installieren den Knoten Start aus. Klicken Sie im Menü Aktion auf Dialogfeld hinzufügen.

  3. Wählen Sie im Dialogfeld Dialogfeld hinzufügen das Dialogfeld Textfelder (A) aus, und klicken Sie dann auf OK.

  4. Klicken Sie im Menü Aktion auf Nach oben. Wiederholen Sie diesen Vorgang so lange, bis sich das Dialogfeld Textfelder (A) über dem Knoten Installationsordner befindet.

  5. Wählen Sie im Eigenschaftenfenster die Eigenschaft BannerText aus, und geben Sie den folgenden Text ein: Specify Database Name.

  6. Wählen Sie die BodyText-Eigenschaft aus, und geben Sie den folgenden Text ein: In diesem Dialogfeld können Sie den Namen der Datenbank eingeben, die auf dem Datenbankserver erstellt werden soll.

  7. Wählen Sie die Eigenschaft Edit1Label aus, und geben Sie den folgenden Text ein: Name of database.

  8. Wählen Sie die Edit1Property-Eigenschaft aus, und geben Sie CUSTOMTEXTA1 ein.

  9. Legen Sie die Eigenschaften Edit2Visible, Edit3Visible und Edit4Visible auf False fest.

So erstellen Sie eine benutzerdefinierte Aktion

  1. Wählen Sie im Projektmappen-Explorer das Projekt DBCustomAction_Setup aus. Zeigen Sie im Menü Ansicht auf Editor, und klicken Sie auf Benutzerdefinierte Aktionen.

  2. Wählen Sie im Editor für benutzerdefinierte Aktionen den Knoten Installieren aus. Klicken Sie im Menü Aktion auf Benutzerdefinierte Aktion hinzufügen.

  3. Doppelklicken Sie im Dialogfeld Element im Projekt auswählen auf den Anwendungsordner.

  4. Wählen Sie das Element Primäre Ausgabe aus DBCustomAction (Aktiv) aus, und klicken Sie auf OK, um das Dialogfeld zu schließen.

  5. Stellen Sie sicher, dass im Editor für benutzerdefinierte Aktionen das Element Primäre Ausgabe aus DBCustomAction (Aktiv) ausgewählt ist. Wählen Sie im Eigenschaftenfenster die CustomActionData-Eigenschaft aus, und geben Sie /dbname=[CUSTOMTEXTA1] ein. Diese Daten werden an die benutzerdefinierte Aktion übergeben, die am Ende der Installation ausgeführt wird. Weitere Informationen finden Sie unter CustomActionData-Eigenschaft.

  6. Klicken Sie im Menü Erstellen auf DBCustomAction_Setup erstellen.

So installieren Sie die Anwendung auf dem Entwicklungscomputer

  • Wählen Sie im Projektmappen-Explorer das Projekt DBCustomAction_Setup aus. Klicken Sie im Menü Projekt auf Installieren.

    Dadurch wird das Installationsprogramm auf dem Entwicklungscomputer ausgeführt.

    Tipp

    Zum Ausführen des Installers benötigen Sie entsprechende Installationsberechtigungen für den Computer.

So stellen Sie die Anwendung auf einem weiteren Computer bereit

  1. Navigieren Sie in Windows Explorer zu dem Projektverzeichnis, und suchen Sie das erstellte Installationsprogramm. Der Standardpfad lautet \Dokumente und Einstellungen\Ihr Anmeldename\DBCustomAction_Setup\Projektkonfiguration\DBCustomAction_Setup.msi. Die vorgegebene Projektkonfiguration ist Debug.

  2. Kopieren Sie DBCustomAction_Setup.msi und alle anderen Dateien und Unterverzeichnisse im Verzeichnis auf einen anderen Computer.

    Tipp

    Wenn die Anwendung auf einem Computer installiert werden soll, der sich nicht in einem Netzwerk befindet, kopieren Sie die Dateien auf ein herkömmliches Medium (z. B. eine CD-ROM).

    Doppelklicken Sie auf dem Zielcomputer auf die Datei Setup.exe, um das Installationsprogramm auszuführen.

    Tipp

    Zum Ausführen des Installers benötigen Sie entsprechende Installationsberechtigungen für den Computer.

So deinstallieren Sie die Anwendung

  1. Doppelklicken Sie in der Windows-Systemsteuerung auf das Symbol Software.

  2. Wählen Sie im Dialogfeld Software den Eintrag DBCustomAction_Setup aus, klicken Sie auf Entfernen, und klicken Sie anschließend auf OK, um das Dialogfeld zu schließen.

    Tipp

    Zum Deinstallieren der Anwendung auf Ihrem Entwicklungscomputer klicken Sie im Menü Projekt auf Deinstallieren.

Siehe auch

Referenz

CustomActionData-Eigenschaft

Konzepte

Fehlerbehandlung in benutzerdefinierten Aktionen

Weitere Ressourcen

Verwalten von benutzerdefinierten Aktionen bei der Bereitstellung