Procedura dettagliata: utilizzo di un'azione personalizzata per la creazione di un database durante l'installazione
Nella procedura dettagliata che segue viene indicato come utilizzare un'azione personalizzata e la proprietà CustomActionData per creare un database e una tabella di database durante l'installazione.
Nota
Per questa procedura dettagliata è necessario che sia installato SQL Server nel computer in cui verrà distribuita l'applicazione.
Nota
Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.
Nota
Di seguito viene illustrato come creare un progetto di distribuzione utilizzando un progetto di Visual Basic. I principi generali sono validi per tutti i progetti di Visual Studio che supportano la distribuzione di applicazioni per Windows.
Per creare una classe del programma di installazione
Scegliere Nuovo progetto dal menu File.
Nel riquadro Tipo progetto della finestra di dialogo Nuovo progetto scegliere Visual Basic, quindi selezionare Libreria di classi nel riquadro Modelli. Nella casella Nome digitare DBCustomAction.
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Nella finestra di dialogo Aggiungi nuovo elemento, selezionare Classe Installer. Nella casella Nome digitare VbDeployInstaller.vb.
Per creare un oggetto connessione dati
In Esplora server selezionare Connessioni dati. Fare clic con il pulsante destro del mouse e scegliere Aggiungi connessione.
Nella finestra di dialogo Scegli origine dati selezionare Microsoft SQL Server.
Nella finestra di dialogo Aggiungi connessione, effettuare le seguenti operazioni:
Nell'elenco Nome server digitare o selezionare un nome di server.
Selezionare Usa autenticazione di Windows.
Nella casella relativa al database digitare master.
Scegliere OK per chiudere la finestra di dialogo.
Scegliere Aggiungi nuova origine dati dal menu Dati, quindi utilizzare la procedura guidata per aggiungere la connessione stabilita nei passaggi precedenti. Per controllare che l'origine dati sia inclusa nel progetto, scegliere Mostra origini dati dal menu Dati.
Per creare un file di testo che contenga un'istruzione SQL per la creazione di un database
In Esplora soluzioni selezionare il progetto DBCustomAction. Scegliere Aggiungi nuovo elemento dal menu Progetto.
Nella finestra di dialogo Aggiungi nuovo elemento scegliere File di testo. Nella casella Nome digitare sql.txt (in lettere minuscole).
Inserire quanto segue nel file 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];
In Esplora soluzioni selezionare sql.txt. Nella finestra Proprietà, impostare la proprietà BuildAction su Risorsa incorporata.
Per aggiungere codice per la lettura del file di testo alla classe del programma di installazione
Selezionare VbDeployInstaller.vb in Esplora soluzioni. Scegliere Codice dal menu Visualizza.
Aggiungere la seguente istruzione Imports all'inizio del modulo:
Imports System.IO Imports System.Reflection Imports System.Data.SqlClient
Aggiungere il codice riportato di seguito alla classe VbDeployInstaller, dopo la dichiarazione di 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
Scegliere Compila DBCustomAction dal menu Compila.
Per creare un progetto di distribuzione
Scegliere Aggiungi dal menu File, quindi Nuovo progetto.
Nella finestra di dialogo Aggiungi nuovo progetto aprire il nodo Altri tipi di progetto e selezionare Progetti di installazione e distribuzione nel riquadro Tipo progetto. Selezionare Progetto di installazione nel riquadro Modelli. Nella casella Nome digitare DBCustomAction_Setup.
Nella finestra Proprietà selezionare la proprietà ProductName e digitare DB Installer.
Nell'Editor del file system selezionare Cartella Applicazione. Scegliere Aggiungi dal menu Azione, quindi Output progetto.
Nella finestra di dialogo Aggiungi gruppo output progetto selezionare Output primario per il progetto DBCustomAction.
Per creare una finestra di dialogo di installazione personalizzata
Selezionare il progetto DBCustomAction_Setup in Esplora soluzioni. Scegliere Editor dal menu Visualizza, quindi Interfaccia utente.
Nell'Editor dell'interfaccia utente selezionare il nodo Avvio nella sezione Installa. Scegliere Aggiungi finestra di dialogo dal menu Azione.
Nella finestra di dialogo Aggiungi finestra di dialogo selezionare Caselle di testo (A), quindi scegliere OK.
Scegliere Sposta su dal menu Azione. Ripetere l'operazione fino a quando la finestra di dialogo Caselle di testo (A) non si trova sopra il nodo Cartella di installazione.
Nella finestra Proprietà selezionare la proprietà BannerText e digitare Specificare il nome del database.
Selezionare la proprietà BodyText e digitare Questa finestra di dialogo consente di specificare il nome del database da creare nel server database.
Selezionare la proprietà Edit1Label e digitare Nome del database:.
Selezionare la proprietà Edit1Property e digitare CUSTOMTEXTA1.
Selezionare le proprietà Edit2Visible, Edit3Visible e Edit4Visible e impostarle su False.
Per creare un'azione personalizzata
Selezionare il progetto DBCustomAction_Setup in Esplora soluzioni. Scegliere Editor dal menu Visualizza, quindi Azioni personalizzate.
Nell'Editor delle azioni personalizzate selezionare il nodo Installa. Scegliere Aggiungi azione personalizzata dal menu Azione.
Nella finestra di dialogo Seleziona elemento nel progetto fare doppio clic su Cartella Applicazione.
Selezionare Output primario da DBCustomAction (Attivo), quindi scegliere OK per chiudere la finestra di dialogo.
Assicurarsi che l'elemento Output primario da DBCustomAction (Attivo) sia selezionato nell'Editor delle azioni personalizzate. Nella finestra Proprietà selezionare la proprietà CustomActionData e digitare /dbname=[CUSTOMTEXTA1]. Questi dati vengono passati all'azione personalizzata in esecuzione alla fine dell'installazione. Per ulteriori informazioni, vedere Proprietà CustomActionData.
Scegliere Compila DBCustomAction_Setup dal menu Compila.
Per installare l'applicazione nel computer di sviluppo
Selezionare il progetto DBCustomAction_Setup in Esplora soluzioni. Scegliere Installa dal menu Progetto.
Il programma di installazione verrà eseguito nel computer di sviluppo.
Nota
Per eseguire il programma di installazione, è necessario disporre delle autorizzazioni di installazione nel computer.
Per distribuire l'applicazione in un altro computer
In Esplora risorse passare alla directory del progetto e trovare il programma di installazione appena compilato. Il percorso predefinito sarà \Documents and Settings\nomeaccesso\DBCustomAction_Setup\configurazione progetto\DBCustomAction_Setup.msi. La configurazione di progetto predefinita è Debug.
Copiare DBCustomAction_Setup.msi e tutti gli altri file e sottodirectory della directory in un altro computer.
Nota
Per effettuare l'installazione in un computer non in rete, copiare i file su un supporto tradizionale, ad esempio un CD-ROM.
Nel computer di destinazione fare doppio clic sul file Setup.exe per eseguire il programma di installazione.
Nota
Per eseguire il programma di installazione, è necessario disporre delle autorizzazioni di installazione nel computer.
Per rimuovere l'applicazione
Nel Pannello di controllo di Windows fare doppio clic su Installazione applicazioni.
Nella finestra di dialogo Installazione applicazioni selezionare DBCustomAction_Setup, fare clic su Rimuovi, quindi scegliere OK per chiudere la finestra di dialogo.
Suggerimento Per eseguire la disinstallazione dal computer di sviluppo, scegliere Disinstalla dal menu Progetto.
Vedere anche
Riferimenti
Concetti
Gestione degli errori nelle azioni personalizzate
Altre risorse
Gestione delle azioni personalizzate durante la distribuzione