السلام عليكم ورحمة الله وبركاتة
لقد عملت مثال تجريبي ...
1- التحقق من وجود نسخة حديثة .... تم التطبيق بنجاح
المطلوب :
2- تحميل البرنامج عند وجود نسخة حديثة .... بحيث يكون بنفس مسار البرنامج السابق واستبدالة بالنسخة الحديث على حسب جميع الانظمة [b]Windows 7 - Windows Vista - XP
ملاحظة : فريم ورك 3.5[/b]
[COLOR="#800000"]السلام عليكم ورحمة الله وبركاته
ما هي طريقة التحقق التي تستخدمها هل عن طريق صفحة نصية؟[/COLOR]
الطريقة الي استعلمتها في احد برامجي كانت بالستعمال التحقق من رقم النسخة الجديدة الموجودة في ملف نصي على هوست ftp
ويقارنها برقم النسخة الحالية الي هو عبارة عن ثابت في البرنامج باسم version
اذا الرقم الي في الهوست اكبر من version
نزل الملف المحدد(ألابديت)
طبعا كل مرة تبي تسوي ابديت لازم تحدث الرقم الموجود في الملف النصي الى رقم اكبر
وتستبدل ملف الابديت
الكود مكتوب باسي شارب
كود :
internal void FindUpdate()
{
try
{
WebClient client = new WebClient {
Credentials = new NetworkCredential("USER", "PASS")
// اذا الرقم الي في الملف اكبر من رقم النسخة الحالية قم بتنزيل الابديت
if (Convert.ToDouble(client.DownloadString("ftp://FTPHOST/UpdateFileVersion.txt")) > this.version)
{
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(this.wc_DownloadProgressChanged);
client.DownloadFileCompleted += new AsyncCompletedEventHandler(this.wc_DownloadFileCompleted);
client.DownloadFileAsync(new Uri("ftp://FTPHOST.com/Update.exe"), Application.StartupPath + @"\Update.exe");
}
}
catch
{
}
}
حولته لك vb.net
كود :
Friend Sub FindUpdate()
Try
Dim client As New WebClient
client.(Credentials = New NetworkCredential("USER", PASS
If (Convert.ToDouble(client.DownloadString("ftp://FTPHOST/UpdateFile.txt")) > Me.version) Then
AddHandler client.DownloadProgressChanged, New DownloadProgressChangedEventHandler(AddressOf Me.wc_DownloadProgressChanged)
AddHandler client.DownloadFileCompleted, New AsyncCompletedEventHandler(AddressOf Me.wc_DownloadFileCompleted)
client.DownloadFileAsync(New Uri("ftp://FTPHOST.com/Update.exe"), (Application.StartupPath & "\Update.exe"))
End If
Catch obj1 As Object
End Try
End Sub
[COLOR="#800000"]اخي الشاكي لله تحويلك للكود خاطأ في كثير منه
وشي ثاني لاتوجد الخاصية Me.version وانما Application.ProductVersion
انا فكرتي عن تحميل البيانات من صفحة نصية ووضع رابط احدث نسخه + اصدارها ,ثم المقارنه بين الاصدارين اذا كانت النسخه احدث يتم تحميل بيانات الرابط من الصفحه ثم تبديلها بالنسخه السابقه[/COLOR]
[COLOR="#800000"]
بالنسبه لمثالي لنفترض عندك صفحة نصية محتوياتها
السطر الاول الذي تضع فيه احدث نسخه لديك
والسطر الثاني تضع فيه رابط احدث نسخه
نجي على المقارنه[/COLOR]
كود :
Dim WithEvents web As New Net.WebClient
Private Sub Chek()
Try
Dim txt As String = web.DownloadString("رابط الصفحه النصية")
If CInt(txt.Split(vbNewLine)(0)) > CInt(Application.ProductVersion.Replace(".", "")) Then
If MsgBox("هناك نسخه احدث " & txt.Split(vbNewLine)(0) & " تحميل", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "تحميل النسخه المحدثه") = MsgBoxResult.Yes Then
Download(txt.Split(vbNewLine)(1), "D:\")
End If
End If
Catch ex As Exception
End Try
End Sub
Private Sub Download(ByVal url As String, ByVal path As String)
web.DownloadFile(url, path)
End Sub
وللتحقق ضع الكود التالي في زر بوتون مثلآ
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call Chek()
End Sub
وبالنسبه لتبديل النسخه اعتقد يجب ارفاق ملف يتكفل بها وطريقة استدعاه تكون في الحدث DownloadFileCompleted التابع للأداة WebClient
3booody كتب :[COLOR="#800000"]
[SIZE=4]وبالنسبه لتبديل النسخه اعتقد يجب ارفاق ملف يتكفل بها وطريقة استدعاه تكون في الحدث DownloadFileCompleted التابع للأداة WebClient
انا سويت برنامج ثاني يتم تشغيله بعد تفجير الحدث DownloadFileCompleted ووظيفته استبدال ملف البرنامج بملف الابديت
--
بالنسبة ل this.update فهو ثابت عرفته انا
وكل نسخة جديدة ازيد الرقم
ماكنت اعرف ان هناك خاصية مثلApplication.ProductVersion
شكرا على المعلومة

مشكور على مروركم العطر
هذا هو الكود المستخدم :
PHP كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
checkforupdates()
End Sub
Public Sub checkforupdates()
Try
Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("http://www/Updater/Updater.txt")
Dim response As System.Net.HttpWebResponse = request.GetResponse()
Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
Dim newestversion As String = sr.ReadToEnd()
Dim currentversion As String = Application.ProductVersion
If newestversion.Contains(currentversion) Then
MessageBox.Show(" ")
Else
MessageBox.Show(" ")
System.Diagnostics.Process.Start("http://www/Updater/Updater.exe")
End If
Catch ex As Exception
End Try
End Sub
وهذا رقم الاصدار الموجود للنسخة الحديثة في مستند نصي txt
2.0.0.0
اللحين كل شي تماام .... لاكن عند تحميل النسخة الحديثة
اريد ان تذهب النسخة تلقائي لمجلد البرنامج واستبدالة بنسختة الجديدة
طيب اخي ليش ما تستخدم طريقتي لايوجد اختلاف لكن طريقتي اسهل وافضل ,,
وبالنسبه لمجلد البرنامج تستطيع معرفته
Application.StartupPath المجلد الذي يحوي البرنامج
Application.ExecutablePath مسار البرنامج بالكامل + الامتداد