17-06-18, 03:05 AM
(آخر تعديل لهذه المشاركة : 12-04-19, 09:40 AM {2} بواسطة elgokr.
تعديل السبب: تحديث روابط الصور لتعرض بالموضوع
)
السلام عليكم ورحمة الله
اخوتى واحبابى اعضاء وزوار
موقع فيجوال بيسك لكل العرب
التحية الطيبة وخالص التهانى بعيد الفطر
فى البداية اسف لان الشرح صورة + اكواد بدلاً من الشرح فيديو
لكن باذن الله سيكون الشرح بسيط وملخص كل تسائلات
من يريد عمل تحديث للمشروع الخاص به بكل بساطة
نبداء اولاً بذكر الله والصلاه على الحبيب المصطفى صلى الله عليه وسلم
1- قم بانشاء المشروع الاول كما فى الصورة وقم بتسميته كما تشاء
2- قم بعد ذلك بتصميم الفورم بما تريد انا قمت بعل الشكل التالى
لكن قم بالتركيز على عمل خصائص الفور على هذه الاعدادات
كود :
MaximizeBox = False
MinimizeBox = False
MaximumSize = [الارقام التى تتواجد فى Size]
MinimumSize = [الارقام التى تتواجد فى Size]
ShowIcon = False
ShowIn Taskbar = False
StartPosition = CenterScreen
كما فى الصورة التالية...
3- اضافة حقل فى Setting من خلال التالى
الضغط المزدوج بالمؤشر على كلمة (My Project)
من ثم تطبيق كما هو موجود بالصورة....
الى هنا تم الانتهاء من تصميم الهيكل للمشروع
ندخل بعد ذلك فى كتابة الاكواد التى سيتم استخدامها
الكود المستخدم كاملاً:
كود :
Imports System.Net
Public Class Form1
Dim WEB_ As New WebClient
Dim Process_() As Process = Process.GetProcessesByName("File") ' Name file your program
Dim VProject As Integer = WEB_.DownloadString("D:\v.txt") ' You can use link Example: http://www.mysite.com/file.txt (Link Direct...)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Button1.Visible = False
If VProject > My.Settings.VProject Then
Label3.Text = "Download the new version"
Button1.Visible = True
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If VProject > My.Settings.VProject Then
If Process_.Count > 0 Then
For Each MyProject_ In Process_
MyProject_.Kill() ' Close Your Project.
Next
GoTo GoDownlod_
Else
GoDownlod_:
WEB_.DownloadFileAsync(New Uri("D:\File.exe"), Application.StartupPath & "\File.exe", True) ' You can use link Example: http://www.mysite.com/File.exe (Link Direct...)
My.Settings.VProject = VProject
My.Settings.Save()
MsgBox("تم تحديث البرنامج.")
Process.Start(Application.StartupPath & "\File.exe") ' Open Your Project After Finish Update.
Application.Exit()
End If
End If
End Sub
End Class
لحد الان انهينا مشروع التحديث
ليصبح شكل المشروع فى النهاية
لا يوجد تحديث يظهر بهذا الشكل
وعند توفر تحديث من خلال تغيير قيمة ملف V.Txt بزيادة رقم
بمعنى لو كان الملف يحتوى على رقم 1 يصبح الرقم 2 ثم يتم الحفظ
حتى يظهر الشاشة بعد ذلك لهذا الشكل
ناتى للخطوة التالية
وهو عمل المشروع الرئيسي الخاص بك..
لم اقوم باعادة شرح انشاء مشروع جديد راجع الصور 1 و 2
بعد انشاء المشروع الخاص الذى سيعمل عند العميل
سيكون وليكن الشكل كما يلى كمثال
نقوم بعد ذلك بتطبيق الخطوة التالية كما فى المشروع التحديث
اضافة حقل فى Setting ستجد بالاعلى عند البند رقم 3
طبق كل ما اتى بالشرح لاضافة الحقل
ناتى بعد ذلك للكود المستخدم كاملاً
الكود المستخدم كاملاً:
كود :
Imports System.Net
Public Class Form1
Dim WEB_ As New WebClient
Dim VProject As Integer = WEB_.DownloadString("D:\v.txt") ' You can use link Example: http://www.mysite.com/file.txt (Link Direct...)
Private Sub AboutToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AboutToolStripMenuItem.Click
If VProject > My.Settings.VProject Then
Dim MSG_ As Integer = MessageBox.Show("هل تريد اتمام تحديث البرنامج للاصدار الجديد؟", "تنبيه بوجود تحديد", MessageBoxButtons.YesNo)
If MSG_ = DialogResult.Yes Then
Process.Start(Application.StartupPath & "\CheckUpdate.exe")
My.Settings.VProject = VProject
My.Settings.Save()
Application.Exit()
Else
' FormAbout.show()
MsgBox("شكراً لك.")
End If
End If
End Sub
End Class
وبكده تكون انهيت المشروع الخاص بك وقمت
باضافة التحديث مع استبدال التحديث الجديد بالقديم
كل ما عليك نسخ ملف CheckUpdate.exe
بنفس مجلد المشروع الخاص بك ليصبح كلاهما معاً بنفس المجلد
لتجربة التحديث قم بنسخ كل من الملفين الخاص بـ CheckUpdate
والاخر الخاص بالمشروع الخاص بك فى مجلد واحد من ثم
يوجد مثال مرفق بمجلد Pro Test
قم بنسخ المجلد فى اى مكان بالجهاز وليكن على سطح المكتب
ثم قم بعمل اى تعدل على مشروعك الرئيسيى وليكن اضافة زر او كلمة
ومن ثم باستخراج ملف المشروع ونسخه الى درايف D او خلال موقع وجلب رابط مباشر
حسب ما قمت انت به بالتعديل على مسارات التحديث فى الاكواد
ويمكنك ان تجرب الان ....
ناتى الان الى الشرح النظرى وهاااااااااام جداً
فى الاكواد السابقة خاصة مشروع التحديث قمنا باستخدام الاسطر التالية
الشرح الاول لهذا السطر:
كود :
Dim Process_() As Process = Process.GetProcessesByName("File")
المقصود بكلمة File
هو اسم المشروع الرئيسي لك عند استخراجه
يعنى بمعنى اذا كان الملف للمشروع عند استخراجه بهذا الاسم
ahmed.exe
فهنا ناخد اسم ahmed ونضعه بدلاً من File
الشرح الثانى لهذا السطر:
كود :
Dim VProject As Integer = WEB_.DownloadString("D:\v.txt")
انا فقط قمت بعمل مثال حتى يمكنك تجربة التحديث لديك بالجهاز
اذا كنت لا تمتلك موقع يمكنك من رفع عليه الملف والحصول على رابط مباشر له
فيجب اخذ بالاعتبار لهذا
يجب بالنهاية ان يصبح هذا المسار
PHP كود :
D:\v.txt
ان يكون رابط موقع الكتروني برابط مباشر
للوصول الى الملف ليصبح بهذا الشكل
PHP كود :
http://www.mysite.com/namefile.txt
الشرح الثالث لهذا السطر :
كود :
WEB_.DownloadFileAsync(New Uri("D:\File.exe"), Application.StartupPath & "\File.exe", True)
بخصوص
PHP كود :
D:\File.exe
نفس الوضع لما تم شرحه فى الشرح الثانى
لكن ماذا يعنى هذا الملف ؟؟
هذا الملف الخاص بالمشروع الرئيسيى بعد التحديث ورفعه على الموقع
حتى يقوم الطرف الثانى من تمكينه من تحميل التحديث حتى يعمل لديه بدلاً من القديم
وكلمة File يتم تطبيق الاسم كما تم شرحه فى الشرح الاول بالاعلى
وينطبق ذلك ايضاً على هذا السطر
كود :
Process.Start(Application.StartupPath & "\File.exe")
والى هنا يتم الانتهاء من الدرس
ويارب ان ينال الشرح للجميع
وان يكون الشرح مبسط ولا يوجد به اى مشكلة
الاكواد المستخدمة قليلة وبسيطة
ويمكنك الاستفادة من هذا الدرس وتطويره كما تريد
وفى النهاية اسال الله المغفرة والرحمة وان يتوب على من الاخطاء والنسيان
وراحة البال والكرم والرزق من حيث لا اعلم
وشكراً للجميع
اسئلة قد يتم طرحها من بعض الاعضاء ومن زوار الموضوع...
1- لماذا قمت باستخدام For Each لاغلاق البرنامج بدلاً من وضع سطر اغلاق البرنامج مباشراً؟
ج: السبب هو ان البعض يعمل على مشروع وقد يقوم المستخدم فتح البرنامج اكثر من مرة فى وقت واحد لذلك تجنباً لهذا تم عمل ذلك.
2- لماذا قمت باستخدام Button لتحميل المشروع بدلاً من تنفيذ التحديث مباشراً؟
ج: لاسباب عديدة واهم ما خطر فى بالى هم اصحاب مشاريع التى تعتمد على الادخالات مثل الفواتير
فتخيل اذا كان المستخدم يقوم بادخال بيانات فاتورة وله الكثير من الوقت يعمل على ذلك ولكن بالخطاء
قام بعرض شاشة التحديث لك ان تتخيل ردة فعله وقتها عندما يعلم ان كل ما كان يقوم بتسجيله ولم يحفظ بعد
وانه سيقوم باعادة العمل عليه مجدداً واعادة ادخال بيانات الفاتورة من جديد وتخيل ردة فعله بالدعاء لبعض الاشخاص ....
نصيحة لتكون مبرمج يجب عليك اولاً ان تكون مكان المستخدم للبرنامج لذلك ضع نفسك مكان المستخدم اولاً حتى تتمكن من تفادى الاخطاء.
3- هل يمكن تطوير فكرة هذا التحديث واستخدام شخصى ؟
ج: نعم فقمت بعمل هذا الدرس هنا ليس ليكون عليه حقوق بال هو درس عامة ليعم الفائدة للجميع فلك حرية الاستخدام
لكن تذكر ان تستخدمه فقط فى ما يرضي الله فانا غير مسؤل عن غير ذلك.
4- لماذا لم تقم بعمل الدرس من خلال شرح عن طريق الفيديو؟
ج: اولاً انا لست من اصحاب من يريد الربح من خلال الفيديوهات ثانياً والاهم هو الملاحظة الكثير ومنها
قد يكون الاغلب لم يعد يفضل القراءة فاصبحنا فى هذا الزمن يكره الكثير القراءة وفقط يعتمد على ما يراه
للاسف هذا خطأ كبير جداً لان ما تراه وتشاهده ليس دائماً الصح ولا يعتمد الذاكرة لديك على ما تشاهده
عكس ما تعتمد الذاكرة على ما تقوم بقراءته حتى لو مر عليه السنين ستتذكر انك فى يوم كان فى شئ مثل ذلك
لهذا السبب افضل الشرح كتابتاً مع بعض الصور للتوضح الفكرة لان الهدف الاهم لى هو جعلك تكون متطور داخلياً عن
ان تكون اسم مطور او مبرمج وتاتى فى يوم تحت اختبار بدون استخدام الانترنت لتعمل كود ولا تعلم حتى كيف تكتب الكود
تحياتى لكم
وتمنياتى للجميع التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
▼ شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
▼ شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية