السلام عليكم و رحمة الله و بركاته
أخوانى الكرام كانت هذه المشكله تحول بينى و بين إستخدام السيكوال فى برامجى
إلى أن أصبح من الضرورى إستخدام السيكوال سيرفر حتى أستطيع عمل مشاريع كبيره
و أخيرا وجدت الحل و سوف أعرضه عليكم خطوه بخطوه
أولا أحب أن أنوه عت المرجع و هى مكتبة MSDN
بإسم الله تبدأ
1- قم بإنشاء مشروع جديد من نوع Class Library
2- حدد إسم المشروع و ليكن CreateFatabase مثلا
3- أنقر بالماوس على المشروع بالزر الايمن و أختر Add ثم AddNewItem
4- أختر Installer Class
5- علينا الان إنشاء إتصال مع خادم قواعد البيانات- من Server Explorer أنقر بالماوس على الزر الايمن و أختر Add Connection ثم إكتب إسم الخادم و ليكن localhost و قاعدة البيانات Master و أختر الدخول بالتكامل مع Windows NT
6- سيظهر فى متصفح الخوادم Server Explorer إتصال جديد أسحبه و ضعه على الInstaller Class المضاف
7- مره أخرى أنقر بالزر الايمن على المشروع و أختار Add ثم Add new Item و إختار ملف Text و أجعل إسمه sql.txt ملحوظه يجب أن تكون حالة الاحرف صغيره
8- فى هذا الملف ضع الكود اللازم لإنشاء جداول قاعدة البيانات مثل
CREATE TABLE [dbo].[Students] ( [StdID] [int] NOT NULL , [StdUserName] [nvarchar] (50) COLLATE Arabic_CI_AS NOT NULL , [StdPassword] [nchar] (18) COLLATE Arabic_CI_AS NOT NULL , [StdGroupe] [int] NOT NULL ) ON [PRIMARY]
9- فى خصائص الملف sql.txt غير قيمة الخاصيه Build Action إلى Embeded Resource
10- أضف الكود التالى إلى Installer Class
Imports System.IO Imports System.Reflection
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, sqlConnection1)
Command.Connection.Open()
Command.Connection.ChangeDatabase(DatabaseName)
Try
Command.ExecuteNonQuery()
Finally
' Finally, blocks are a great way to ensure that the connection
' is always closed.
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 Sub11-من فائمة File إختار Add Project و حدد نوعه Setup Project
12- سيظهر لك عدة مجلدات إختار Application Folder و قم بالنقر المزدوج عليه. فى الجهه اليمنى إنقر على الزر الأيمن و إختار Add ثم Project OutPut
13- إختر المشروع الذى أنشأته و الذى هو Class Library
14- أنقر على مشروع التثبيت بالزر اليمين و أختار View ثم User InterFace
15- أنقر بالزر اليمين على Start و إختار Add Dialoge
16- من القائمه التى ستظهر لك إختار textBoxes(A)
17- أختار الDialoge المنشأ و أنقر عليه بالزر اليمين ثم Move Up إلى أن يكون قبل Installation Folder
18- حدد الDialoge المنشأ لتغيير بعض خصائصه كما يلى
BannerText Specify Database Name
BodyText This dialog allows you to specify the name of the database to be created on the database server.
Edit1Label Name of DB:
Edit1Property CUSTOMTEXTA1
Edit2Visible, Edit3Visible,Edit4Visible False
19- أنقر بالزر اليمين على مشروع التثبيت و أختار View ثم Custom Actions
20- أنقر بالزر اليمين على install و إختار Add Custom Action
21- أختار Application Folder ثم الملف الذى أنشأناه سابقا
22- فى خصائص الCustom Action غير الخاصيه CustomActionData إلى /dbname=[CUSTOMTEXTA1
قم ببناء المشروعين و بهذا تكون قد أنتهيت
