1).Créer un projet de déploiement
1. Dans le menu Fichier, pointez sur Ajouter un projet, puis sélectionnez Nouveau projet.
2. Dans la boîte de dialogue Ajouter un nouveau projet, sélectionnez Projets d'installation et de déploiement dans le volet Types de projets, puis sélectionnez Projets d'installation dans le volet Modèles. Tapez setup1 dans la zone Nom.
3. Cliquez sur OK pour fermer la boîte de dialogue.
4. Le projet est ajouté à l'Explorateur de solutions et l'éditeur de système de fichiers s'ouvre.
5. Dans la fenêtre Propriétés, sélectionnez la propriété ProductName et tapez Information Management System.
2). Ajoutez la sortie du projet de programme principal au projet de déploiement.
1. Dans l'éditeur de système de fichiers, sélectionnez Dossier d'application. Dans le menu Actions, pointez sur Ajouter, puis sélectionnez Sortie du projet.
2. Dans la boîte de dialogue Ajouter un groupe de sortie de projet, sélectionnez Votre programme dans la liste déroulante Projet.
3. Cliquez sur OK pour fermer la boîte de dialogue.
4. Sélectionnez les groupes Fichiers de sortie principaux et Fichiers de contenu dans la liste, puis cliquez sur OK.
3).Créez la classe d'installation
1. Dans le menu Fichier, pointez sur Nouveau, puis sélectionnez Projet.
2. Dans la boîte de dialogue Nouveau projet, sélectionnez Projet Visual Basic dans le volet Types de projets, puis sélectionnez Bibliothèque de classes dans le volet Modèles. Tapez installDB dans la zone Nom.
3. Cliquez sur "Ouvrir" pour fermer la boîte de dialogue.
4. Sélectionnez Ajouter un nouvel élément dans le menu Projet.
5. Sélectionnez Classe d'installateur dans la boîte de dialogue Ajouter un nouvel élément. Tapez installDB dans la zone Nom.
6. Cliquez sur OK pour fermer la boîte de dialogue.
7. Le code détaillé est joint.
4).Créez une boîte de dialogue d'installation personnalisée
1. Sélectionnez le projet « setup1 » dans l'Explorateur de solutions. Dans le menu Affichage, pointez sur Éditeur, puis sélectionnez Interface utilisateur.
2. Dans l'éditeur d'interface utilisateur, sélectionnez le nœud Démarrage sous Installation. Dans le menu Action, sélectionnez 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 Contrat de licence, puis cliquez sur OK pour fermer la boîte de dialogue.
4. Dans la boîte de dialogue Ajouter une boîte de dialogue, sélectionnez la boîte de dialogue Zone de texte (A), puis cliquez sur OK pour fermer la boîte de dialogue.
5. Dans le menu Action, sélectionnez Monter. Répétez cette étape jusqu'à ce que la boîte de dialogue Zone de texte (A) se trouve au-dessus du nœud Dossier d'installation.
6. Dans la fenêtre Propriétés, sélectionnez la propriété BannerText et tapez : installer la base de données.
7. Sélectionnez la propriété BodyText et tapez : Le programme d'installation installera la base de données sur la machine cible.
8. Sélectionnez la propriété Edit1Label et tapez : nom de la base de données :
9. Sélectionnez la propriété Edit1Property et tapez CUSTOMTEXTA1.
10. Sélectionnez la propriété Edit1Value et tapez : dbservers
11. Sélectionnez la propriété Edit2Label et tapez : nom du serveur :
12. Sélectionnez la propriété Edit2Property et tapez CUSTOMTEXTA2
13. Sélectionnez la propriété Edit2Value et tapez : (local)
14. Sélectionnez la propriété Edit3Label et tapez : nom d'utilisateur :
15. Sélectionnez la propriété Edit3Value et tapez : sa
16. Sélectionnez la propriété Edit3Property et tapez CUSTOMTEXTA3
17. Sélectionnez la propriété Edit4Label et saisissez : Mot de passe :
18. Sélectionnez la propriété Edit4Property et tapez CUSTOMTEXTA4
19. Sélectionnez les propriétés Edit2Visible, Edit3Visible et Edit4Visible et définissez-les sur true
5).Créer des opérations personnalisées
1. Sélectionnez le projet « setup1 » dans l'Explorateur de solutions. Dans le menu Affichage, pointez sur Éditeur, puis sélectionnez Actions personnalisées.
2. Sélectionnez le nœud Installer dans l'éditeur d'actions personnalisées. Dans le menu Actions, sélectionnez Ajouter une action personnalisée.
3. Dans la boîte de dialogue Sélectionner les éléments dans le projet, double-cliquez sur Dossier d'application.
4. Sélectionnez l'élément "Sortie principale de installDB (active)" et cliquez sur "OK" pour fermer la boîte de dialogue.
5. Dans la fenêtre Propriétés, sélectionnez la propriété CustomActionData et tapez "/dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]"".
Pièce jointe : /targetdir="[TARGETDIR]" est le chemin cible après l'installation Afin d'obtenir le chemin après l'installation dans la classe installDB, nous définissons ce paramètre.
6). Ajoutez une fonction de désinstallation lors de l'emballage :
Première méthode :
1. Ajoutez le fichier msiexec.exe au projet packagé (généralement trouvé sous c:windowssystem32).
2. Sélectionnez le dossier de l'application dans la vue du système de fichiers, cliquez avec le bouton droit sur msiexec.exe, sélectionnez Créer un raccourci et renommez le raccourci en « Désinstaller ».
3. Modifiez les arguments de ce raccourci en "/x {product id}", et la valeur de l'identifiant du produit est la valeur de l'attribut ProductCode du projet packagé.
Méthode 2 : (recommandée)
1. Générez d'abord le package d'installation et notez le ProductCode (sélectionnez le répertoire racine de l'explorateur de solutions tel que setup1, puis vérifiez l'étiquette des propriétés, pas les propriétés dans le clic droit), qui sera utilisé ci-dessous
2. Utilisez VS.net pour créer un nouveau fichier uninst.exe du programme de console
'pouvoir par : propriétaire
'pour 2000,xp,2003
Désinstallation du module
Sous-principal()
Dim myProcess As Process = Nouveau processus
Si System.Environment.OSVersion.ToString.IndexOf("NT 5") Alors
myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}") 'Modifiez votre propre code produit
Fin si
monProcess.Close()
Fin du sous-marin
Module de fin
3. Ajoutez le fichier exe dans le répertoire BIN du programme console au fichier programme packagé et créez un raccourci vers uninst.exe dans le groupe de programmes.
classe installdb.vb, pour ajouter une référence à system.configuration.install.dll :
en utilisant System ;
en utilisant System.Collections ;
en utilisant System.ComponentModel ;
en utilisant System.Configuration.Install ;
en utilisant System.Reflection ;
en utilisant System.IO ;
en utilisant System.Data ;
en utilisant System.Data.SqlClient ;
installation de l'espace de noms
{
/// <résumé>
/// Description récapitulative pour Installer1.
/// </summary>
[Exécuter l'installateur (vrai)]
classe publique Installer1 : System.Configuration.Install.Installer
{
/// <résumé>
/// Variables de concepteur requises.
/// </summary>
composants privés System.ComponentModel.Container = null ;
publicInstaller1()
{
// Cet appel est requis par le concepteur.
InitializeComponent();
// TODO : Ajouter une initialisation après l'appel InitializeComponent
}
/// <résumé>
/// Nettoie toutes les ressources utilisées.
/// </summary>
remplacement protégé void Dispose (bool disposition)
{
si (disposer)
{
si (composants ! = null)
{
composants.Dispose();
}
}
base.Dispose (élimination);
}
#region Code généré par le concepteur du composant
/// <résumé>
/// Designer prend en charge les méthodes requises - n'utilisez pas l'éditeur de code pour modifier
/// Le contenu de cette méthode.
/// </summary>
vide privé InitializeComponent()
{
composants = nouveau System.ComponentModel.Container();
}
#endregion
chaîne privée GetSql (nom de la chaîne)
{
// //Appelle osql pour exécuter le script
//
// System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();
//
// sqlProcess.StartInfo.FileName = "osql.exe" ;
//
// sqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -d {2} -i {3}db.sql", this.Context.Parameters["user"], this .Context.Parameters["pwd"],"master", this.Context.Parameters["targetdir"]);
//
// sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden ;
//
// sqlProcess.Start();
//
// sqlProcess.WaitForExit() ;//En attente d'exécution
//
// sqlProcess.Close();
essayer
{
// Assemblage Asm = Assembly.GetExecutingAssembly();
// System.IO.FileInfo FileInfo = new System.IO.FileInfo(Asm.Location);
// chemin de chaîne=FileInfo.DirectoryName+@""+Name ;
string path=this.Context.Parameters["targetdir"]+Name;
FileStream fs=new FileStream(chemin,FileMode.Open,FileAccess.Read,FileShare.Read);
Lecteur StreamReader = new StreamReader(fs,System.Text.Encoding.Default);
//Système.Text.Encoding.ASCII;
return reader.ReadToEnd();
}
attraper (Exception ex)
{
Console.Write("Dans GetSql:"+ex.Message);
jeter ex;
}
}
private void ExecuteSql (chaîne DataBaseName, chaîne SQL)
{
SqlConnection sqlConnection1=nouveau SqlConnection();
sqlConnection1.ConnectionString =string.Format("server={0}; user id={1}; password={2}; Database=master",this.Context.Parameters["server"],this.Context.Parameters[ "utilisateur"],this.Context.Parameters["pwd"]);
Commande System.Data.SqlClient.SqlCommand = new System.Data.SqlClient.SqlCommand(Sql,sqlConnection1);
essayer
{
Command.Connection.Open();
Command.Connection.ChangeDatabase(DataBaseName);
Command.ExecuteNonQuery();
}
attraper(Exception ex)
{
Console.Write("Dans le gestionnaire d'exceptions :"+ex.Message);
}
enfin
{
Command.Connection.Close();
}
}
protected void AddDBTable (string strDBName)
{
essayer
{
ExecuteSql("master","CREATE DATABASE "+ strDBName);
ExecuteSql(strDBName,GetSql("sql.txt"));
ExecuteSql("master","exec sp_addlogin 'myoamaster','myoamaster','"+strDBName+"',Null,Null");
ExecuteSql(strDBName,"EXEC sp_grantdbaccess 'myoamaster', 'myoamaster'");
ExecuteSql(strDBName,"exec sp_addrolemember 'db_owner','myoamaster'");
}
attraper(Exception ex)
{
Console.Write("Dans le gestionnaire d'exceptions :"+ex.Message);
}
}
public override void Install (System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
AddDBTable(this.Context.Parameters["nomdb"]);
}
}
}
Il y a ici sql.txt qui est le script sql de la base de données. Bien sûr, vous pouvez appeler osql pour exécuter le script sql. En fait, c'est pareil.
Le fichier sql.txt doit être ajouté lors du packaging, sinon il ne sera pas exécuté.
Si vous souhaitez joindre le fichier mdf et le fichier ldf de la base de données, utilisez le programme suivant :
private void CreateDataBase (chaîne strSql, chaîne DataName, chaîne strMdf, chaîne strLdf)
{
Chaîne chaîne ;
SqlConnection myConn = nouveau SqlConnection (strSql);
//EXEC sp_detach_db @dbname = 'BX_FreightMileage_2'//Vous devez d'abord séparer la base de données
str = "EXEC sp_attach_db @dbname = '"+ DataName +"', @filename1 = '"+ strMdf +"',@filename2='"+strLdf+"'";
SqlCommand myCommand = new SqlCommand(str, myConn);
maConn.Open();
maCommand.ExecuteNonQuery();
maConn.Close();
}
Bien entendu, ces deux fichiers de base de données doivent également être ajoutés lors du packaging.