تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
استفسار في عمل تحديث للبرنامج
#1
السلام عليكم ورحمة الله وبركاتة

لقد عملت مثال تجريبي ...
1- التحقق من وجود نسخة حديثة .... تم التطبيق بنجاح


المطلوب :
2- تحميل البرنامج عند وجود نسخة حديثة .... بحيث يكون بنفس مسار البرنامج السابق واستبدالة بالنسخة الحديث على حسب جميع الانظمة [b]Windows 7 - Windows Vista - XP



ملاحظة : فريم ورك 3.5
[/b]
الرد }}}
تم الشكر بواسطة:
#2
[COLOR="#800000"]السلام عليكم ورحمة الله وبركاته
ما هي طريقة التحقق التي تستخدمها هل عن طريق صفحة نصية؟
[/COLOR]
الرد }}}
تم الشكر بواسطة:
#3
الطريقة الي استعلمتها في احد برامجي كانت بالستعمال التحقق من رقم النسخة الجديدة الموجودة في ملف نصي على هوست 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
الرد }}}
تم الشكر بواسطة:
#4
[COLOR="#800000"]اخي الشاكي لله تحويلك للكود خاطأ في كثير منه
وشي ثاني لاتوجد الخاصية Me.version وانما Application.ProductVersion
انا فكرتي عن تحميل البيانات من صفحة نصية ووضع رابط احدث نسخه + اصدارها ,ثم المقارنه بين الاصدارين اذا كانت النسخه احدث يتم تحميل بيانات الرابط من الصفحه ثم تبديلها بالنسخه السابقه
[/COLOR]
الرد }}}
تم الشكر بواسطة:
#5
[COLOR="#800000"]بالنسبه لمثالي لنفترض عندك صفحة نصية محتوياتها
كود :
1001
www.new.com
السطر الاول الذي تضع فيه احدث نسخه لديك
والسطر الثاني تضع فيه رابط احدث نسخه
نجي على المقارنه
[/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
الرد }}}
تم الشكر بواسطة:
#6
3booody كتب :[COLOR="#800000"]
[SIZE=4]وبالنسبه لتبديل النسخه اعتقد يجب ارفاق ملف يتكفل بها وطريقة استدعاه تكون في الحدث DownloadFileCompleted التابع للأداة WebClient


انا سويت برنامج ثاني يتم تشغيله بعد تفجير الحدث DownloadFileCompleted ووظيفته استبدال ملف البرنامج بملف الابديت

--

بالنسبة ل this.update فهو ثابت عرفته انا

وكل نسخة جديدة ازيد الرقم

ماكنت اعرف ان هناك خاصية مثلApplication.ProductVersion

شكرا على المعلومةBig Grin
الرد }}}
تم الشكر بواسطة:
#7
مشكور على مروركم العطر

هذا هو الكود المستخدم :
PHP كود :
Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles 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(currentversionThen
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


اللحين كل شي تماام .... لاكن عند تحميل النسخة الحديثة
اريد ان تذهب النسخة تلقائي لمجلد البرنامج واستبدالة بنسختة الجديدة
الرد }}}
تم الشكر بواسطة:
#8
طيب اخي ليش ما تستخدم طريقتي لايوجد اختلاف لكن طريقتي اسهل وافضل ,,
وبالنسبه لمجلد البرنامج تستطيع معرفته
Application.StartupPath المجلد الذي يحوي البرنامج
Application.ExecutablePath مسار البرنامج بالكامل + الامتداد
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم