23-10-14, 01:52 PM
(04-08-14, 12:50 PM)vbnet كتب : .....
في قولك "...المهم ان ما يقدر يستخدم البرنامج ا بعد الابديت..."
لا أشجعك على هذا.. واترك الخيار للمستخدم إن شاء حدث وإن شاء استمر على النسخة التي لديه
منقول
هذا مثال بسيط باستخدام قراءة ملف صغير على النت يحتوي رقم التحديث الأخير
كود :
Public Class Form1
' إنشاء معالج خلفي
Private WithEvents BackgroundWorker1 As New System.ComponentModel.BackgroundWorker
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' تعطيل تضارب المعالجات في حالة محاولة مثلا تغيير خصائص بعض الأدوات من داخل عملية المعالجة
CheckForIllegalCrossThreadCalls = False
' تشغيل المعالج الخلفي
BackgroundWorker1.RunWorkerAsync()
' بعد تشغيل البرنامج ستظهر النافذة بشكل طبيعي
' ولكن في الخلفية هناك معالج يقول بفحص ملف على النت
' ومن ثم مقارنه برقم التحديث الحالي
' واظهار رسالة تبين ذلك
' ** ملاحظة
' قد تستغرق العملية بعض الوقت حتى يتم الاتصال بالنت لجلب ملف بيانات التحديث ومن ثم مقارنة بياناته
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
' إستدعاء دالة والتي تعتبر في حال مناداتها من هنا ضمن المعالجة
If IsUpdateAvailable() Then
' إفعل شيئاً
' مثلاً تشغيل برنامج تحديث خاص والذي بدوره يقوم
' بتنزيل ملف البرنامج في تحديثه الأخير
' ثم غلق هذا البرنامج من أجل تبديل ملفه
' ثم إعادة تشغيل البرنامج من جديد
End If
End Sub
' دالة التأكد من وجود تحديث من خلال ملف صغير على النت
Public Function IsUpdateAvailable() As Boolean
Try
' تعيين ملف نصي مؤقت لحفظ بيانات ملف النت فيه
Dim tmpFile As String = IO.Path.GetTempPath & Guid.NewGuid.ToString & ".tmp"
' تحميل بيانات ملف من النت وحفظ بياناته في الملف المؤقت
My.Computer.Network.DownloadFile("http://vbnet.byethost11.com/examples/update/update.txt", tmpFile)
' على افتراض رقم التحديث الحالي
Dim CurrentUpdate As String = "1000000"
' قراءة بيانات الملف النصي المؤقت
Dim NewUpdate As String = IO.File.ReadAllText(tmpFile)
' هل يحتوي الملف النصي المؤقت على بيانات
If NewUpdate <> "" AndAlso (NewUpdate <> CurrentUpdate) Then
MsgBox("رقم التحديث الحالي" & vbNewLine & _
CurrentUpdate & vbNewLine & _
vbNewLine & _
"يوجد تحديث جديد برقم" & vbNewLine & _
NewUpdate)
Return True
End If
Catch ex As Exception
End Try
End Function
End Class
.....
مثال رائع جداً وينفع حتى مع WPF
جزاك الله ووالديك الفردوس الأعلى
جزاك الله ووالديك الفردوس الأعلى
فاعلم أنه لا إله إلا الله