1).Buat proyek penerapan
1. Pada menu File, arahkan ke Tambah Proyek, lalu pilih Proyek Baru.
2. Di kotak dialog Tambahkan Proyek Baru, pilih Proyek Instalasi dan Penerapan di panel Jenis Proyek, lalu pilih Proyek Instalasi di panel Templat. Ketik setup1 di kotak Nama.
3. Klik OK untuk menutup kotak dialog.
4. Proyek ditambahkan ke Solution Explorer dan File System Editor terbuka.
5. Di jendela Properties, pilih properti ProductName dan ketik Information Management System.
2). Tambahkan keluaran proyek program utama ke proyek penerapan
1. Di Editor Sistem File, pilih Folder Aplikasi. Pada menu Tindakan, arahkan ke Tambah, lalu pilih Output Proyek.
2. Di kotak dialog Tambahkan Grup Output Proyek, pilih Program Anda di daftar drop-down Proyek.
3. Klik OK untuk menutup kotak dialog.
4. Pilih grup Main Output dan Content Files dari daftar, dan klik OK.
3).Buat kelas penginstal
1. Pada menu File, arahkan ke Baru, lalu pilih Proyek.
2. Di kotak dialog Proyek Baru, pilih Proyek Visual Basic di panel Jenis Proyek, lalu pilih Perpustakaan Kelas di panel Templat. Ketik installDB di kotak Nama.
3. Klik "Buka" untuk menutup kotak dialog.
4. Pilih Tambah Item Baru dari menu Proyek.
5. Pilih Kelas Penginstal di kotak dialog Tambahkan Item Baru. Ketik installDB di kotak Nama.
6. Klik OK untuk menutup kotak dialog.
7. Kode detail terlampir.
4).Buat kotak dialog instalasi khusus
1. Pilih proyek "setup1" di Solution Explorer. Pada menu Tampilan, arahkan ke Editor, lalu pilih Antarmuka Pengguna.
2. Di Editor Antarmuka Pengguna, pilih node Startup di bawah Instalasi. Pada menu Tindakan, pilih Tambahkan Dialog.
3. Di kotak dialog Tambahkan Dialog, pilih kotak dialog Perjanjian Lisensi, lalu klik OK untuk menutup kotak dialog.
4. Di kotak dialog Tambahkan Dialog, pilih kotak dialog Kotak Teks (A), lalu klik OK untuk menutup kotak dialog.
5. Pada menu Tindakan, pilih Pindah ke Atas. Ulangi langkah ini hingga kotak dialog Kotak Teks (A) berada di atas node Folder Instalasi.
6. Di jendela Properties, pilih properti BannerText dan ketik: install database.
7. Pilih properti BodyText dan ketik: Penginstal akan menginstal database pada mesin target
8. Pilih properti Edit1Label dan ketik: nama database:
9. Pilih properti Edit1Property dan ketik CUSTOMTEXTA1
10. Pilih properti Edit1Value dan ketik: dbservers
11. Pilih properti Edit2Label dan ketik: nama server:
12. Pilih properti Edit2Property dan ketik CUSTOMTEXTA2
13. Pilih properti Edit2Value dan ketik: (lokal)
14. Pilih properti Edit3Label dan ketik: nama pengguna:
15. Pilih properti Edit3Value dan ketik: sa
16. Pilih properti Edit3Property dan ketik CUSTOMTEXTA3
17. Pilih properti Edit4Label dan ketik: Kata Sandi:
18. Pilih properti Edit4Property dan ketik CUSTOMTEXTA4
19. Pilih properti Edit2Visible, Edit3Visible dan Edit4Visible dan atur ke true
5).Buat operasi khusus
1. Pilih proyek "setup1" di Solution Explorer. Pada menu Tampilan, arahkan ke Editor, lalu pilih Tindakan Kustom.
2. Pilih node Instal di editor tindakan kustom. Pada menu Tindakan, pilih Tambahkan Tindakan Kustom.
3. Dalam kotak dialog Pilih Item dalam Proyek, klik dua kali Folder Aplikasi.
4. Pilih item "Output utama dari installDB (aktif)" dan klik "OK" untuk menutup kotak dialog.
5. Di jendela Properties, pilih properti CustomActionData dan ketik "/dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]"".
Lampiran: /targetdir="[TARGETDIR]" adalah jalur target setelah instalasi. Untuk mendapatkan jalur setelah instalasi di kelas installDB, kami menetapkan parameter ini.
6). Tambahkan fungsi uninstall saat mengemas:
Metode satu:
1. Tambahkan file msiexec.exe ke proyek yang dikemas (umumnya ditemukan di c:windowssystem32)
2. Pilih folder aplikasi pada tampilan sistem file, klik kanan pada msiexec.exe, pilih Buat pintasan, dan ganti nama pintasan menjadi "Uninstall".
3. Ubah Argumen pintasan ini menjadi "/x {product id}", dan nilai id produk adalah nilai atribut ProductCode dari proyek yang dikemas.
Metode 2: (disarankan)
1. Pertama buat paket instalasi dan tulis Kode Produk (pilih direktori root penjelajah solusi seperti setup1, lalu periksa label properti, bukan properti di klik kanan), yang akan digunakan di bawah ini
2. Gunakan VS.net untuk membuat file uninst.exe program konsol baru
'kekuatan oleh: tuan tanahh
'untuk tahun 2000,xp,2003
Penghapusan modul
Sub Utama()
Redupkan myProcess Sebagai Proses = Proses Baru
Jika System.Environment.OSVersion.ToString.IndexOf("NT 5") Lalu
myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}") 'Ubah ke Kode Produk Anda sendiri
Akhiri Jika
Proses saya.Tutup()
Akhiri Sub
Modul Akhir
3. Tambahkan file exe di direktori BIN program konsol ke file program yang dikemas, dan buat pintasan ke uninst.exe di grup program.
kelas installdb.vb, untuk menambahkan referensi ke system.configuration.install.dll:
using System;
menggunakan Sistem.Koleksi;
menggunakan Sistem.ComponentModel;
menggunakan Sistem.Konfigurasi.Instal;
menggunakan Sistem.Refleksi;
menggunakan Sistem.IO;
menggunakan Sistem.Data;
menggunakan Sistem.Data.SqlClient;
pemasangan ruang nama
{
/// <ringkasan>
/// Deskripsi ringkasan untuk Installer1.
/// </ringkasan>
[JalankanInstaller(benar)]
Penginstal kelas publik1 : Sistem.Konfigurasi.Instal.Installer
{
/// <ringkasan>
/// Variabel desainer yang diperlukan.
/// </ringkasan>
komponen System.ComponentModel.Container pribadi = null;
Penginstal publik1()
{
// Panggilan ini diperlukan oleh desainer.
Inisialisasi Komponen();
// TODO: Tambahkan inisialisasi apa pun setelah panggilan InitializeComponent
}
/// <ringkasan>
/// Bersihkan semua sumber daya yang digunakan.
/// </ringkasan>
dilindungi override void Buang (bool membuang)
{
jika (membuang)
{
jika(komponen != null)
{
komponen.Buang();
}
}
base.Dispose( membuang );
}
#region Kode yang dihasilkan oleh perancang komponen
/// <ringkasan>
/// Desainer mendukung metode yang diperlukan - jangan gunakan editor kode untuk memodifikasi
/// Isi dari metode ini.
/// </ringkasan>
kekosongan pribadi InitializeComponent()
{
komponen = Sistem baru.ComponentModel.Container();
}
#wilayah akhir
string pribadi GetSql (Nama string)
{
// //Panggil osql untuk menjalankan skrip
//
// Sistem.Diagnostik.Proses sqlProcess = Sistem.Diagnostik.Proses baru();
//
// sqlProcess.StartInfo.FileName = "osql.exe";
//
// sqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -d {2} -i {3}db.sql", this.Context.Parameters["pengguna"], ini .Context.Parameters["pwd"],"master", this.Context.Parameters["targetdir"]);
//
// sqlProcess.StartInfo.WindowStyle = Sistem.Diagnostik.ProcessWindowStyle.Hidden;
//
// sqlProses.Mulai();
//
// sqlProcess.WaitForExit() ;//Menunggu eksekusi
//
// sqlProcess.Tutup();
mencoba
{
// Majelis Asm = Majelis.GetExecutingAssembly();
// System.IO.FileInfo FileInfo = Sistem.IO.FileInfo baru(Asm.Location);
// string path=FileInfo.NamaDirektori+@""+Nama ;
string path=ini.Konteks.Parameter["targetdir"]+Nama;
FileStream fs=FileStream baru(jalur,FileMode.Open,FileAccess.Read,FileShare.Read);
Pembaca StreamReader = StreamReader baru(fs,System.Text.Encoding.Default);
//Sistem.Teks.Encoding.ASCII;
kembalikan pembaca.ReadToEnd();
}
menangkap (Pengecualian ex)
{
Console.Write("Di GetSql:"+ex.Message);
membuang mantan;
}
}
kekosongan pribadi ExecuteSql(string DataBaseName,string Sql)
{
SqlConnection sqlConnection1=SqlConnection baru();
sqlConnection1.ConnectionString =string.Format("server={0}; id pengguna={1}; kata sandi={2}; Database=master",ini.Konteks.Parameter["server"],ini.Konteks.Parameter[ "pengguna"],ini.Konteks.Parameter["pwd"]);
Perintah Sistem.Data.SqlClient.SqlCommand = Sistem.Data.SqlClient.SqlCommand(Sql,sqlConnection1) baru;
mencoba
{
Perintah.Koneksi.Buka();
Perintah.Koneksi.UbahDatabase(NamaBaseData);
Perintah.ExecuteNonQuery();
}
menangkap (Pengecualian ex)
{
Console.Write("Dalam pengendali pengecualian :"+ex.Message);
}
Akhirnya
{
Perintah.Koneksi.Tutup();
}
}
dilindungi kekosongan AddDBTable (string strDBName)
{
mencoba
{
ExecuteSql("master","BUAT 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'");
}
menangkap (Pengecualian ex)
{
Console.Write("Dalam pengendali pengecualian :"+ex.Message);
}
}
penggantian publik batal Instal (Sistem.Koleksi.IDictionary stateSaver)
{
base.Instal(stateSaver);
AddDBTable(ini.Konteks.Parameter["namadb"]);
}
}
}
Ada sql.txt di sini yang merupakan skrip sql dari database. Tentu saja, Anda dapat memanggil osql untuk menjalankan skrip sql. Sebenarnya sama saja.
File sql.txt harus ditambahkan saat pengemasan, jika tidak maka tidak akan dieksekusi.
Jika Anda ingin melampirkan file mdf dan file ldf database, gunakan program berikut:
kekosongan pribadi CreateDataBase(string strSql,string Nama Data,string strMdf,string strLdf)
{
Tali str;
SqlConnection myConn = SqlConnection baru (strSql);
//EXEC sp_detach_db @dbname = 'BX_FreightMileage_2'//Anda harus memisahkan database terlebih dahulu
str = "EXEC sp_attach_db @dbname = '"+ NamaData +"', @namafile1 = '"+ strMdf +"',@namafile2='"+strLdf+"'";
SqlCommand myCommand = baru SqlCommand(str, myConn);
myConn.Buka();
myCommand.ExecuteNonQuery();
myConn.Tutup();
}
Tentu saja kedua file database ini juga harus ditambahkan saat pengemasan.