1). สร้างโครงการปรับใช้
1. บนเมนูไฟล์ ชี้ไปที่เพิ่มโครงการ จากนั้นเลือกโครงการใหม่
2. ในกล่องโต้ตอบเพิ่มโปรเจ็กต์ใหม่ เลือกโปรเจ็กต์การติดตั้งและการปรับใช้ในบานหน้าต่างประเภทโปรเจ็กต์ จากนั้นเลือกโปรเจ็กต์การติดตั้งในบานหน้าต่างเทมเพลต พิมพ์ setup1 ในกล่องชื่อ
3 คลิก OK เพื่อปิดกล่องโต้ตอบ
4. เพิ่มโปรเจ็กต์ลงใน Solution Explorer และ File System Editor จะเปิดขึ้น
5. ในหน้าต่าง Properties เลือกคุณสมบัติ ProductName และพิมพ์ Information Management System
2) เพิ่มผลลัพธ์ของโครงการโปรแกรมหลักไปยังโครงการปรับใช้
1. ใน File System Editor เลือก Application Folder บนเมนูการดำเนินการ ชี้ไปที่เพิ่ม จากนั้นเลือกผลลัพธ์ของโครงการ
2. ในกล่องโต้ตอบเพิ่มกลุ่มผลลัพธ์โครงการ เลือกโปรแกรมของคุณในรายการแบบเลื่อนลงโครงการ
3 คลิก OK เพื่อปิดกล่องโต้ตอบ
4. เลือกกลุ่มเอาต์พุตหลักและไฟล์เนื้อหาจากรายการ และคลิก ตกลง
3). สร้างคลาสตัวติดตั้ง
1. บนเมนูไฟล์ ชี้ไปที่สร้าง จากนั้นเลือกโครงการ
2. ในกล่องโต้ตอบโครงการใหม่ เลือกโครงการ Visual Basic ในบานหน้าต่างประเภทโครงการ จากนั้นเลือกไลบรารีของชั้นเรียนในบานหน้าต่างเทมเพลต พิมพ์ installDB ในกล่องชื่อ
3. คลิก "เปิด" เพื่อปิดกล่องโต้ตอบ
4. เลือกเพิ่มรายการใหม่จากเมนูโครงการ
5. เลือกคลาสตัวติดตั้งในกล่องโต้ตอบเพิ่มรายการใหม่ พิมพ์ installDB ในกล่องชื่อ
6. คลิก ตกลง เพื่อปิดกล่องโต้ตอบ
7. แนบรหัสรายละเอียดมาด้วย
4). สร้างกล่องโต้ตอบการติดตั้งแบบกำหนดเอง
1. เลือกโปรเจ็กต์ "setup1" ใน Solution Explorer บนเมนูมุมมอง ชี้ไปที่ตัวแก้ไข จากนั้นเลือกส่วนติดต่อผู้ใช้
2. ใน User Interface Editor เลือกโหนดเริ่มต้นภายใต้การติดตั้ง บนเมนูการดำเนินการ เลือกเพิ่มกล่องโต้ตอบ
3. ในกล่องโต้ตอบเพิ่มกล่องโต้ตอบ เลือกกล่องโต้ตอบข้อตกลงสิทธิ์การใช้งาน จากนั้นคลิกตกลง เพื่อปิดกล่องโต้ตอบ
4. ในกล่องโต้ตอบเพิ่มกล่องโต้ตอบให้เลือกกล่องโต้ตอบกล่องข้อความ (A) จากนั้นคลิกตกลงเพื่อปิดกล่องโต้ตอบ
5. บนเมนูการดำเนินการ เลือก เลื่อนขึ้น ทำซ้ำขั้นตอนนี้จนกระทั่งกล่องโต้ตอบกล่องข้อความ (A) อยู่เหนือโหนดโฟลเดอร์การติดตั้ง
6. ในหน้าต่าง Properties เลือกคุณสมบัติ BannerText และพิมพ์: ติดตั้งฐานข้อมูล
7. เลือกคุณสมบัติ BodyText และประเภท: โปรแกรมติดตั้งจะติดตั้งฐานข้อมูลบนเครื่องเป้าหมาย
8. เลือกคุณสมบัติ Edit1Label และพิมพ์: ชื่อฐานข้อมูล:
9. เลือกคุณสมบัติ Edit1Property และพิมพ์ CUSTOMTEXTA1
10. เลือกคุณสมบัติ Edit1Value และพิมพ์: dbservers
11. เลือกคุณสมบัติ Edit2Label และพิมพ์: ชื่อเซิร์ฟเวอร์:
12. เลือกคุณสมบัติ Edit2Property และพิมพ์ CUSTOMTEXTA2
13. เลือกคุณสมบัติ Edit2Value และพิมพ์: (ท้องถิ่น)
14. เลือกคุณสมบัติ Edit3Label และพิมพ์: ชื่อผู้ใช้:
15. เลือกคุณสมบัติ Edit3Value และพิมพ์: sa
16. เลือกคุณสมบัติ Edit3Property และพิมพ์ CUSTOMTEXTA3
17. เลือกคุณสมบัติ Edit4Label และพิมพ์: รหัสผ่าน:
18. เลือกคุณสมบัติ Edit4Property และพิมพ์ CUSTOMTEXTA4
19. เลือกคุณสมบัติ Edit2Visible, Edit3Visible และ Edit4Visible และตั้งค่าเป็นจริง
5) สร้างการดำเนินการแบบกำหนดเอง
1. เลือกโปรเจ็กต์ "setup1" ใน Solution Explorer บนเมนูมุมมอง ชี้ไปที่ตัวแก้ไข จากนั้นเลือกการดำเนินการแบบกำหนดเอง
2. เลือกโหนดการติดตั้งในตัวแก้ไขการดำเนินการแบบกำหนดเอง บนเมนูการดำเนินการ เลือกเพิ่มการดำเนินการแบบกำหนดเอง
3. ในกล่องโต้ตอบ Select Items in Project ดับเบิลคลิกที่ Application Folder
4. เลือกรายการ "เอาต์พุตหลักจาก installDB (ใช้งานอยู่)" และคลิก "ตกลง" เพื่อปิดกล่องโต้ตอบ
5. ในหน้าต่าง Properties ให้เลือกคุณสมบัติ CustomActionData และพิมพ์ "/dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]""
เอกสารแนบ: /targetdir="[TARGETDIR]" คือพาธเป้าหมายหลังการติดตั้ง เพื่อให้ได้พาธหลังการติดตั้งในคลาส installDB เราจึงตั้งค่าพารามิเตอร์นี้
6) เพิ่มฟังก์ชันถอนการติดตั้งเมื่อทำบรรจุภัณฑ์:
วิธีที่หนึ่ง:
1. เพิ่มไฟล์ msiexec.exe ไปยังโปรเจ็กต์ที่แพ็กเกจไว้ (โดยทั่วไปจะพบได้ใน c:windowssystem32)
2. เลือกโฟลเดอร์แอปพลิเคชันในมุมมองระบบไฟล์ คลิกขวาที่ msiexec.exe เลือกสร้างทางลัด และเปลี่ยนชื่อทางลัดเป็น "ถอนการติดตั้ง"
3. เปลี่ยนอาร์กิวเมนต์ของทางลัดนี้เป็น "/x {product id}" และค่าของรหัสผลิตภัณฑ์คือค่าแอตทริบิวต์ ProductCode ของโครงการที่จัดแพ็คเกจ
วิธีที่ 2: (แนะนำ)
1. ขั้นแรกให้สร้างแพ็คเกจการติดตั้งและจด ProductCode (เลือกไดเร็กทอรีรากของตัวสำรวจโซลูชัน เช่น setup1 จากนั้นตรวจสอบป้ายกำกับคุณสมบัติ ไม่ใช่คุณสมบัติในการคลิกขวา) ซึ่งจะถูกใช้ด้านล่าง
2. ใช้ VS.net เพื่อสร้างไฟล์คอนโซลโปรแกรม uninst.exe ใหม่
'สนับสนุนโดย: landlordh
'สำหรับปี 2000,xp,2003
ถอนการติดตั้งโมดูล
หลักย่อย()
Dim myProcess As Process = กระบวนการใหม่
ถ้า System.Environment.OSVersion.ToString.IndexOf("NT 5") แล้ว
myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}") 'เปลี่ยนเป็น ProductCode ของคุณเอง
สิ้นสุดถ้า
myProcess.ปิด()
จบหมวดย่อย
โมดูลสิ้นสุด
3. เพิ่มไฟล์ exe ในไดเร็กทอรี BIN ของโปรแกรมคอนโซลไปยังไฟล์โปรแกรมที่แพ็กเกจ และสร้างทางลัดไปยัง uninst.exe ในกลุ่มโปรแกรม
คลาส installdb.vb เพื่อเพิ่มการอ้างอิงถึง system.configuration.install.dll:
การใช้ระบบ;
ใช้ System.Collections;
โดยใช้ System.ComponentModel;
โดยใช้ System.Configuration.Install;
โดยใช้ System.Reflection;
ใช้ System.IO;
ใช้ System.Data;
โดยใช้ System.Data.SqlClient;
การติดตั้งเนมสเปซ
-
/// <สรุป>
/// คำอธิบายโดยสรุปสำหรับ Installer1
/// </สรุป>
[RunInstaller(จริง)]
Installer1 ระดับสาธารณะ: System.Configuration.Install.Installer
-
/// <สรุป>
/// ตัวแปรตัวออกแบบที่จำเป็น
/// </สรุป>
ส่วนประกอบ System.ComponentModel.Container ส่วนตัว = null;
โปรแกรมติดตั้งสาธารณะ1()
-
// ผู้ออกแบบต้องการการโทรนี้
เตรียมใช้งานส่วนประกอบ();
// สิ่งที่ต้องทำ: เพิ่มการเริ่มต้นใด ๆ หลังจากการเรียก InitializeComponent
-
/// <สรุป>
/// ทำความสะอาดทรัพยากรทั้งหมดที่ใช้งาน
/// </สรุป>
ป้องกันแทนที่เป็นโมฆะกำจัด (การกำจัดบูล)
-
ถ้า(ทิ้ง)
-
ถ้า (ส่วนประกอบ != null)
-
ส่วนประกอบทิ้ง ();
-
-
ฐาน ทิ้ง ( ทิ้ง );
}
#region รหัสที่สร้างโดยผู้ออกแบบส่วนประกอบ
/// <สรุป>
/// Designer รองรับวิธีการที่จำเป็น - อย่าใช้โปรแกรมแก้ไขโค้ดเพื่อแก้ไข
/// เนื้อหาของวิธีนี้
/// </สรุป>
โมฆะส่วนตัว InitializeComponent()
-
ส่วนประกอบ = System.ComponentModel.Container ใหม่ ();
-
#ภูมิภาคสุดท้าย
สตริงส่วนตัว GetSql (ชื่อสตริง)
-
// //เรียก osql เพื่อรันสคริปต์
-
// 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"] นี้ .Context.Parameters["pwd"],"master", this.Context.Parameters["targetdir"]);
-
// sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
-
// sqlProcess.Start();
-
// sqlProcess.WaitForExit() ;//กำลังรอการดำเนินการ
-
// sqlProcess.Close();
พยายาม
-
// Assembly Asm = Assembly.GetExecutingAssembly();
// System.IO.FileInfo FileInfo = System.IO.FileInfo ใหม่ (Asm.Location);
// string path=FileInfo.DirectoryName+@""+Name ;
เส้นทางสตริง=this.Context.Parameters["targetdir"]+ชื่อ;
FileStream fs=ใหม่ FileStream (เส้นทาง, FileMode.Open, FileAccess.Read, FileShare.Read);
เครื่องอ่าน StreamReader = StreamReader ใหม่ (fs, System.Text.Encoding.Default);
//System.Text.Encoding.ASCII;
กลับมาอ่าน ReadToEnd();
-
catch (ข้อยกเว้น เช่น)
-
Console.Write("ใน GetSql:"+ex.Message);
โยนอดีต;
-
-
โมฆะส่วนตัว ExecuteSql (สตริง DataBaseName, สตริง Sql)
-
SqlConnection sqlConnection1=SqlConnection ใหม่();
sqlConnection1.ConnectionString =string.Format("server={0}; user id={1};password={2}; Database=master",this.Context.Parameters["server"],this.Context.Parameters[ "ผู้ใช้"],this.Context.Parameters["pwd"]);
คำสั่ง System.Data.SqlClient.SqlCommand = System.Data.SqlClient.SqlCommand ใหม่ (Sql, sqlConnection1);
พยายาม
-
Command.Connection.Open();
Command.Connection.ChangeDatabase (ชื่อฐานข้อมูล);
Command.ExecuteNonQuery();
-
จับ (ข้อยกเว้นเช่น)
-
Console.Write("ในตัวจัดการข้อยกเว้น :"+ex.Message);
-
ในที่สุด
-
Command.Connection.Close();
-
}
การป้องกันเป็นโมฆะ AddDBTable (สตริง strDBName)
-
พยายาม
-
ExecuteSql("master", "สร้างฐานข้อมูล" + 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'");
-
จับ (ข้อยกเว้นเช่น)
-
Console.Write("ในตัวจัดการข้อยกเว้น :"+ex.Message);
-
-
การแทนที่สาธารณะเป็นโมฆะการติดตั้ง (System.Collections.IDictionary stateSaver)
-
ฐานติดตั้ง (stateSaver);
AddDBTable(this.Context.Parameters["dbname"]);
-
-
-
มี sql.txt ที่นี่ซึ่งเป็นสคริปต์ sql ของฐานข้อมูล คุณสามารถเรียก osql เพื่อรันสคริปต์ sql ได้
ต้องเพิ่มไฟล์ sql.txt เมื่อทำการบรรจุ ไม่เช่นนั้นจะไม่สามารถดำเนินการได้
หากคุณต้องการแนบไฟล์ mdf และไฟล์ ldf ของฐานข้อมูล ให้ใช้โปรแกรมต่อไปนี้:
โมฆะส่วนตัว CreateDataBase (สตริง strSql, สตริง DataName, สตริง strMdf, สตริง strLdf)
-
สตริง str;
SqlConnection myConn = SqlConnection ใหม่ (strSql);
//EXEC sp_detach_db @dbname = 'BX_FreightMileage_2'//คุณต้องแยกฐานข้อมูลก่อน
str = "EXEC sp_attach_db @dbname = '"+ ชื่อข้อมูล +"', @filename1 = '"+ strMdf +"',@filename2='"+strLdf+"'";
SqlCommand myCommand = SqlCommand ใหม่ (str, myConn);
myConn.Open();
myCommand.ExecuteNonQuery();
myConn.ปิด();
-
แน่นอนว่าต้องเพิ่มไฟล์ฐานข้อมูลทั้งสองนี้เมื่อทำการบรรจุ