1).إنشاء مشروع النشر
1. من القائمة ملف، أشر إلى إضافة مشروع، ثم حدد مشروع جديد.
2. في مربع الحوار إضافة مشروع جديد، حدد مشاريع التثبيت والنشر في جزء أنواع المشاريع، ثم حدد مشاريع التثبيت في جزء القوالب. اكتب setup1 في مربع الاسم.
3. انقر فوق "موافق" لإغلاق مربع الحوار.
4. تتم إضافة المشروع إلى Solution Explorer ويتم فتح محرر نظام الملفات.
5. في نافذة الخصائص، حدد خاصية اسم المنتج واكتب نظام إدارة المعلومات.
2). إضافة مخرجات مشروع البرنامج الرئيسي إلى مشروع النشر
1. في محرر نظام الملفات، حدد مجلد التطبيق. في القائمة إجراءات، أشر إلى إضافة، ثم حدد إخراج المشروع.
2. في مربع الحوار إضافة مجموعة مخرجات المشروع، حدد برنامجك في القائمة المنسدلة المشروع.
3. انقر فوق "موافق" لإغلاق مربع الحوار.
4. حدد مجموعتي المخرجات الرئيسية وملفات المحتوى من القائمة، ثم انقر فوق موافق.
3).إنشاء فئة المثبت
1. من القائمة ملف، أشر إلى جديد، ثم حدد المشروع.
2. في مربع الحوار مشروع جديد، حدد مشروع Visual Basic في جزء أنواع المشاريع، ثم حدد مكتبة الفئات في جزء القوالب. اكتب installDB في مربع الاسم.
3. انقر فوق "فتح" لإغلاق مربع الحوار.
4. حدد إضافة عنصر جديد من قائمة المشروع.
5. حدد فئة المثبت في مربع الحوار إضافة عنصر جديد. اكتب installDB في مربع الاسم.
6. انقر فوق "موافق" لإغلاق مربع الحوار.
7. تم إرفاق الكود التفصيلي.
4). إنشاء مربع حوار التثبيت المخصص
1. حدد مشروع "setup1" في Solution Explorer. في القائمة عرض، أشر إلى المحرر، ثم حدد واجهة المستخدم.
2. في محرر واجهة المستخدم، حدد عقدة بدء التشغيل ضمن التثبيت. في قائمة الإجراء، حدد إضافة مربع حوار.
3. في مربع الحوار إضافة حوار، حدد مربع الحوار اتفاقية الترخيص، ثم انقر فوق موافق لإغلاق مربع الحوار.
4. في مربع الحوار إضافة حوار، حدد مربع الحوار مربع النص (A)، ثم انقر فوق موافق لإغلاق مربع الحوار.
5. في قائمة الإجراء، حدد تحريك لأعلى. كرر هذه الخطوة حتى يصبح مربع الحوار مربع النص (A) أعلى عقدة مجلد التثبيت.
6. في نافذة الخصائص، حدد خاصية 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 واضبطها على true
5).إنشاء عمليات مخصصة
1. حدد مشروع "setup1" في Solution Explorer. في القائمة عرض، أشر إلى المحرر، ثم حدد الإجراءات المخصصة.
2. حدد عقدة التثبيت في محرر الإجراء المخصص. في قائمة الإجراءات، حدد إضافة إجراء مخصص.
3. في مربع الحوار تحديد العناصر في المشروع، انقر نقرًا مزدوجًا فوق مجلد التطبيق.
4. حدد العنصر "الإخراج الرئيسي من installDB (نشط)" وانقر فوق "موافق" لإغلاق مربع الحوار.
5. في نافذة الخصائص، حدد خاصية 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 للمشروع المعبأ.
الطريقة الثانية: (مستحسن)
1. قم أولاً بإنشاء حزمة التثبيت وكتابة رمز المنتج (حدد الدليل الجذر لمستكشف الحلول مثل setup1، ثم تحقق من تسمية الخصائص، وليس الخصائص عند النقر بزر الماوس الأيمن)، والذي سيتم استخدامه أدناه
2. استخدم VS.net لإنشاء ملف uninst.exe لبرنامج وحدة التحكم الجديد
'القوة بواسطة: المالك
'لعام 2000، إكس بي، 2003
إلغاء تثبيت الوحدة النمطية
فرعي رئيسي()
خافت myProcess كعملية = عملية جديدة
إذا System.Environment.OSVersion.ToString.IndexOf("NT 5") ثم
myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}") 'قم بالتغيير إلى رمز المنتج الخاص بك
نهاية إذا
myProcess.Close()
نهاية الفرعية
وحدة النهاية
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.
/// </الملخص>
[تشغيل المثبت (صحيح)]
مثبت الفئة العامة 1: System.Configuration.Install.Installer
{
/// <الملخص>
/// متغيرات المصمم المطلوبة.
/// </الملخص>
مكونات System.ComponentModel.Container الخاصة = فارغة؛
publicInstaller1()
{
// هذه المكالمة مطلوبة من قبل المصمم.
InitializeComponent();
// TODO: أضف أي تهيئة بعد استدعاءInitializeComponent
}
/// <الملخص>
/// تنظيف جميع الموارد المستخدمة.
/// </الملخص>
التخلص من الفراغ المحمي (التخلص المنطقي)
{
إذا (التخلص)
{
إذا (المكونات! = فارغة)
{
المكونات. التخلص();
}
}
base.Dispose( Disposition);
}
# رمز المنطقة الذي تم إنشاؤه بواسطة مصمم المكون
/// <الملخص>
/// يدعم المصمم الطرق المطلوبة - لا تستخدم محرر التعليمات البرمجية للتعديل
/// محتوى هذه الطريقة.
/// </الملخص>
الفراغ الخاص ()InitializeComponent
{
المكونات = new System.ComponentModel.Container();
}
#endregion
سلسلة خاصة 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 = new System.IO.FileInfo(Asm.Location);
// string path=FileInfo.DirectoryName+@""+Name ;
مسار السلسلة = this.Context.Parameters["targetdir"]+Name;
FileStream fs=new FileStream(path,FileMode.Open,FileAccess.Read,FileShare.Read);
قارئ StreamReader = جديد StreamReader(fs,System.Text.Encoding.Default);
//System.Text.Encoding.ASCII;
إرجاع القارئ.ReadToEnd();
}
قبض (استثناء على سبيل المثال)
{
Console.Write("في GetSql:"+ex.Message);
رمي السابقين؛
}
}
ExecuteSql باطلة خاصة (سلسلة DataBaseName، سلسلة Sql)
{
SqlConnection sqlConnection1=new SqlConnection();
sqlConnection1.ConnectionString =string.Format("server={0}; معرف المستخدم={1}; كلمة المرور={2}; قاعدة البيانات=master",this.Context.Parameters["server"],this.Context.Parameters[ "user"],this.Context.Parameters["pwd"]);
System.Data.SqlClient.SqlCommand Command = new System.Data.SqlClient.SqlCommand(Sql,sqlConnection1);
يحاول
{
Command.Connection.Open();
Command.Connection.ChangeDatabase(DataBaseName);
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)
{
base.Install(stateSaver);
AddDBTable(this.Context.Parameters["dbname"]);
}
}
}
يوجد هنا sql.txt وهو البرنامج النصي SQL لقاعدة البيانات. بالطبع، يمكنك الاتصال بـ osql لتنفيذ البرنامج النصي SQL.
يجب إضافة ملف sql.txt عند التعبئة، وإلا فلن يتم تنفيذه.
إذا كنت تريد إرفاق ملف mdf وملف ldf الخاص بقاعدة البيانات، استخدم البرنامج التالي:
الفراغ الخاص CreateDataBase (سلسلة strSql، سلسلة DataName، سلسلة strMdf، سلسلة strLdf)
{
سلسلة سلسلة؛
SqlConnection myConn = new SqlConnection (strSql);
// EXEC sp_detach_db @dbname = 'BX_FreightMileage_2'// تحتاج إلى فصل قاعدة البيانات أولاً
str = "EXEC sp_attach_db @dbname = '"+ DataName +"', @filename1 = '"+ strMdf +"',@filename2='"+strLdf+"'";
SqlCommand myCommand = new SqlCommand(str, myConn);
myConn.Open();
myCommand.ExecuteNonQuery();
myConn.Close();
}
بالطبع، يجب أيضًا إضافة ملفي قاعدة البيانات هذين عند التعبئة.