اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر (معدل)

السلام عليكم ورحمة الله وبركاته ، أخواني وأساتذتي ومعلمينا ( دون استثناء )

بالإشارة الى الموضوع الذي أعلنت عنه سابقاً في هذا الرابط هنا ، اسمحوا لي بأن أطرح هذه الفكرة الجديدة والتي تم تجربتها مراراً وتكراراً إلى أن خرجت بهذه النتيجة فيما يتعلق بموضوع التحديث الهوائي أو Online أو OTA Over-The-Air ) .

الموضوع بداية بسيط جداً ولن يحتاج تعقيد في تنفيذ هذه الطريقة . حيث ما يلزمنا أولاً هو حساب على Google Drive ( لماذا ؟ = لأن 95 % من الأشخاص عندهم هذا الحساب :yes:) . و حساب على موقع Dropbox ( لماذا ؟ = لأنه يعطينا امكانية التحميل برابط مباشر خلافاً في جوجل درايف  :yes: ) وهو ما يميزه عن Google Drive .

Dot.pngبناءً على ما سلف ، نبدأ شرح الخطوات والمتطلبات على بركة الله :-

1. سنحتاج جدول واحد مرفق وهو ( Settings ) ، ولا أنصح بالتلاعب به ما لم يكن على أساس صحيح ؛ ويحتوي على الحقول التالية :-

          الحقل Ver = رقمي = لتحديد الإصدار الحالي للنسخة الحالية في قاعدة البيانات الحالية.
          الحقل 
Link = نصي = لتحديد رابط الملف النصي الذي سيتم قراءة الإصدار الجديد منه ومقارنته مع قيمة الحقل Ver لتحديد ما اذا كان هناك نسخة جديدة أم لا .
          الحقل 
URLS = نصي = سيتم ادراج رابط التحميل للإصدار الجديد من خلال الكود تلقائياً.
          الحقل 
DBName = نصي = سيمكانك هنا من تحديد اسم قاعدة البيانات التي سيتم حفظ التحديث الجديد بها . وهنا لتسهيل فكرة اسم القاعدة القديمة واستبدالها  بالنسخة الجديدة سيتم جلب القيمة تلقائياً .
          الحقل 
Auto_Check = نوع Yes/No = لتفعيل ميزة الفحص التلقائي للتحديثات ( فكرة شبيهة بتلك التي في أجهزة الجوال والمحمول عند تفعيلها يصلك إشعارك بوجود نسخة جديدة إن كانت الميزة مفعلة طبعاً )

2. تحميل الإصدار الجديد على موقع Dropbox ونسخ رابط الملف ( مع التأكد أن الملف عند مشاركته قد تمت مشاركته للجميع - الموقع يجعلها قيمة افتراضية - ولكن للتأكيد ) .

3. ملف نصي واحد ( TxT. ) سميه ما شئت وهو ثابت غير قابل للتبديل ، ويكون محتواه ما يلي :-
     
large_Dot1.png.2bfd26d85907114f648748b220636475.png السطر الأول نضع رقم الإصدار الجديد . اي انه في الملف القديم لنفترض ان قيمة الحقل  Ver  =  0.1 . هنا في الملف النصي سنضع الإصدار الأحدث أي مثلاً ( 0.2 ).
     
large_Dot1.png.2bfd26d85907114f648748b220636475.png السطر الثاني نضع رابط النسخة الحديثة التي تم رفعها على Dropbox في النقطة السابقة 2 .

أي انه سيكون لدينا ملف نصي يحتوي سطرين الأول رقم الإصدار الحديث والذي ستتم قراءته و مقارنته مع الحقل Ver في الإصدار الذي لدى العميل ، والسطر الثاني رابط النسخة الأحدث من دروب بوكس .

4. سنقوم برفع هذا الملف النصي على جوجل درايف ( السبب : دروب بوكس لم يدعم فكرة قراءة الملف النصي وجلب قيمة رقم الاصدار في السطر الأول لمقارنتها مع القيمة في النسخة التي لدى العميل في الحقل Ver ) .

5. ثم سنقوم بنسخ الرابط لهذا الملف النصي ومشاركته للجميع - أو بمعنى آخر لمن يملك الرابط - ولصقه في الجدول الثابت Settings في الحقل Link وهو هنا سيكون أيضاً قيمة ثابتة لن تتغير . أي أنك ستقوم بتغيير فقط رقم الإصدار في النسخة الجديدة في الحقل Ver . وإعادة رفع الملف النصي بعد تحديث قيمة رقم الاصدار الجديد فقط .

طبعاً هنا بالإفتراض جدلاً وبعد تجربة متكررة أنه عندما تقوم برفع ملف موجود مسبقاً على أي موقع من ( جوجل درايف أو دروب بوكس ) فأن العنوان لهذا الملف لن يتغير لأنه سيتم استبدال الملف القديم بالجديد . ( وهي نقطة جيدة استفدنا منها لصالحنا ).

6. الآن الفكرة بشكل عام واضحة ولا تحتاج لتعقيد في الشرح ( وأي فكرة أو طريقة في البداية ستحتاج مرات معدودة لتصبح سهلة في تطبيقها عن ظهر قلب )

 

Dot.pngالآن وما هو مهم للجميع ، الكود التالي للمديول :-

'**********************************************
'***                                        ***
'***   FFFFFF   OOO   KK KK    SSSS  HH  HH ***
'***   FF      O   O  KK KK   SS     HH  HH ***
'***   FFFFF   O   O  KKK      SS    HHHHHH ***
'***   FF      O   O  KK KK     SS   HH  HH ***
'***   FF       OOO   KK  KK  SSSSS  HH  HH ***
'***                                        ***
'*************** ( 28/12/2024 ) ***************

Option Compare Database
Option Explicit

Public Function IsInternetConnected() As Boolean
    On Error GoTo ErrorHandler
    Dim xhr As Object
    Set xhr = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    xhr.SetOption 2, 13056
    xhr.Open "GET", "https://www.google.com", False
    xhr.send
    IsInternetConnected = (xhr.Status = 200)
    Set xhr = Nothing
    Exit Function
    
ErrorHandler:
    IsInternetConnected = False
    If Not xhr Is Nothing Then Set xhr = Nothing
End Function

Public Function ConvertGoogleDriveLink(ByVal originalLink As String) As String
    On Error GoTo ErrorHandler
    Dim FileID As String
    If InStr(1, originalLink, "/d/") > 0 Then
        FileID = Mid(originalLink, InStr(1, originalLink, "/d/") + 3)
        FileID = Left(FileID, InStr(1, FileID, "/") - 1)
    ElseIf InStr(1, originalLink, "id=") > 0 Then
        FileID = Mid(originalLink, InStr(1, originalLink, "id=") + 3)
        If InStr(1, FileID, "&") > 0 Then
            FileID = Left(FileID, InStr(1, FileID, "&") - 1)
        End If
    End If
    If Len(FileID) > 0 Then
        ConvertGoogleDriveLink = "https://drive.google.com/uc?id=" & FileID
    Else
        ConvertGoogleDriveLink = originalLink
    End If
    Exit Function
    
ErrorHandler:
    ConvertGoogleDriveLink = originalLink
End Function

Public Function CheckForUpdate() As Boolean
    On Error GoTo ErrorHandler
    Dim currentVer As Double
    Dim onlineVer As Double
    Dim xhr As Object
    Dim onlineContent As String
    Dim driveLink As String
    Dim contentLines() As String
    Dim updateURL As String
    Dim currentDBName As String
    currentDBName = CurrentDb.Name
    currentDBName = Mid(currentDBName, InStrRev(currentDBName, "\") + 1)
    currentDBName = Left(currentDBName, InStrRev(currentDBName, ".") - 1)
    CurrentDb.Execute "UPDATE Settings SET DBName = '" & Replace(currentDBName, "'", "''") & "'"
    currentVer = DLookup("Ver", "Settings")
    If Not IsInternetConnected() Then
        Forms!Frm_Index!Lbl_Load.Caption = "أنت تستخدم الإصدار: " & currentVer
        CheckForUpdate = False
        Exit Function
    End If
    driveLink = ConvertGoogleDriveLink(DLookup("Link", "Settings"))
    Set xhr = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    xhr.SetOption 2, 13056
    xhr.Open "GET", driveLink, False
    xhr.setRequestHeader "User-Agent", "Mozilla/5.0"
    xhr.send
    If xhr.ReadyState = 4 Then
        If xhr.Status = 200 Then
            onlineContent = Trim(xhr.responseText)
            contentLines = Split(onlineContent, vbCrLf)
            If UBound(contentLines) >= 1 Then
                onlineVer = Val(contentLines(0))
                updateURL = Trim(contentLines(1))
                If onlineVer > 0 Then
                    If onlineVer > currentVer Then
                        CurrentDb.Execute "UPDATE Settings SET URLS = '" & updateURL & "'"
                        Forms!Frm_Index!Lbl_Load.Caption = " تحديث جديد متوفر الآن : " & onlineVer & "  Ver - انقر للتحميل  "
                        Forms!Frm_Index!ImgUpdate.Visible = True
                        CheckForUpdate = True
                        Forms!Frm_Index!Tx_User.Enabled = True
                        Forms!Frm_Index!Tx_Pass.Enabled = True
                        Forms!Frm_Index!Tx_User.SetFocus
                    Else
                        Forms!Frm_Index!Lbl_Load.Caption = "أنت تستخدم أحدث إصدار : " & onlineVer & "  Ver "
                        Forms!Frm_Index!Tx_User.Enabled = True
                        Forms!Frm_Index!Tx_Pass.Enabled = True
                        Forms!Frm_Index!Tx_User.SetFocus
                    End If
                End If
            End If
        End If
    End If
    Set xhr = Nothing
    Exit Function

ErrorHandler:
    CheckForUpdate = False
    If Not xhr Is Nothing Then Set xhr = Nothing
End Function

Sub UpdateURLSAndOpenNewDatabase()
    Dim UrlValue As String, NameValue As String
    Dim TargetDb As DAO.Database
    Dim rs As DAO.Recordset
    Dim CurrentDbPath As String
    Dim NewDbPath As String
    CurrentDbPath = CurrentProject.Path & "\" & Dir(CurrentProject.FullName)
    NewDbPath = CurrentProject.Path & "\Data\Update.accdb"
    If Dir(CurrentProject.Path & "\Data\Update.Dll") <> "" Then
        Name CurrentProject.Path & "\Data\Update.Dll" As NewDbPath
    Else
        MsgBox "الملف Update.Dll غير موجود", vbCritical
        Exit Sub
    End If
    On Error GoTo ErrorHandler
    UrlValue = Nz(CurrentDb.OpenRecordset("SELECT URLS FROM Settings").Fields("URLS").Value, "")
    NameValue = Nz(CurrentDb.OpenRecordset("SELECT DBName FROM Settings").Fields("DBName").Value, "")
    If UrlValue = "" Or NameValue = "" Then
        MsgBox "خطأ في تحميل التحديث", vbCritical
        Exit Sub
    End If
    Set TargetDb = DBEngine.OpenDatabase(NewDbPath)
    Set rs = TargetDb.OpenRecordset("Settings", dbOpenDynaset)
    If rs.EOF Then
        rs.AddNew
        rs.Fields("URLS").Value = UrlValue
        rs.Fields("DBName").Value = NameValue
        rs.Update
    Else
        rs.MoveFirst
        rs.Edit
        rs.Fields("URLS").Value = UrlValue
        rs.Fields("DBName").Value = NameValue
        rs.Update
    End If
    rs.Close
    TargetDb.Close
    Shell "msaccess.exe """ & NewDbPath & """", vbNormalFocus
    Application.Quit
    Exit Sub

ErrorHandler:
    MsgBox "حدث خطأ: " & Err.Description, vbCritical
    If Not rs Is Nothing Then rs.Close
    If Not TargetDb Is Nothing Then TargetDb.Close
    Exit Sub
End Sub

Public Function ExtractAttachmentFile() As Boolean
    On Error GoTo ErrorHandler
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim rsAttach As DAO.Recordset2
    Dim fld As DAO.Field2
    Dim dataFolder As String
    dataFolder = CurrentProject.Path
    If Dir(dataFolder, vbDirectory) = "" Then
        MkDir dataFolder
    End If
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Settings")
    If Not rs.EOF Then
        Set fld = rs.Fields("DBFiles")
        If Not IsNull(fld) Then
            Set rsAttach = fld.Value
            If Not rsAttach.EOF Then
                rsAttach.Fields("FileData").SaveToFile dataFolder & "\" & rsAttach.Fields("FileName").Value
                ExtractAttachmentFile = True
            End If
            rsAttach.Close
        End If
    End If
    
CleanUp:
    If Not rs Is Nothing Then rs.Close
    Set rs = Nothing
    Set db = Nothing
    Exit Function
    
ErrorHandler:
    ExtractAttachmentFile = False
    Resume CleanUp
End Function

 

Dot.pngوما يلي كود النموذج لجميع الأجزاء والمكونات داخله :-

'**********************************************
'***                                        ***
'***   FFFFFF   OOO   KK KK    SSSS  HH  HH ***
'***   FF      O   O  KK KK   SS     HH  HH ***
'***   FFFFF   O   O  KKK      SS    HHHHHH ***
'***   FF      O   O  KK KK     SS   HH  HH ***
'***   FF       OOO   KK  KK  SSSSS  HH  HH ***
'***                                        ***
'*************** ( 28/12/2024 ) ***************

Option Compare Database
Option Explicit
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private bMessage20Displayed As Boolean
Private bMessage35Displayed As Boolean
Private bMessage50Displayed As Boolean
Private LoginAttempts As Integer
Dim TimeCount As Long

Private Sub Btn_Quit_Click()
    Dim userResponse As VbMsgBoxResult
        userResponse = MsgBox("إغلاق النظام؟", _
                              vbYesNo + vbInformation + vbMsgBoxRight, "تأكيد عملية الإغلاق")
        If userResponse = vbYes Then
            DoCmd.Quit
        ElseIf userResponse = vbNo Then
            DoCmd.CancelEvent
        End If
End Sub

Private Sub Form_Load()
    ExtractAttachmentFile
    LoginAttempts = 0
    Me.Caption = "Foksh - Officena.Net - 2025"
    DoEvents
    If Check_Auto = -1 Then
    Me.TimerInterval = 1000
    Else
    Me.TimerInterval = 0
    Me.Lbl_Load.Caption = ""
    End If
End Sub

Private Sub Form_Timer()
    Me.TimerInterval = 0
    CheckForUpdate
End Sub

Private Sub ImgUpdate_Click()
    On Error GoTo ErrorHandler
    Dim userResponse As VbMsgBoxResult
        userResponse = MsgBox("التحديث الآن؟", _
                              vbYesNo + vbInformation + vbMsgBoxRight, "تأكيد عملية التحديث")
        If userResponse = vbYes Then
            UpdateURLSAndOpenNewDatabase
        ElseIf userResponse = vbNo Then
            DoCmd.CancelEvent
        End If
ErrorHandler:
    Resume Next
End Sub

 

 

small.Blue-check.png.685b9b4d755a1579b52 ما يتم تنفيذه عند استعمال الفكرة :-

large_Bl1.png.954b1039773b164033a8a0584d أولاً عند الفتح للمشروع سيتم استخراج ملف DLL مرفق داخل قاعدة البيانات .
large_Bl1.png.954b1039773b164033a8a0584d ثانياً عند اكتمال التحديث سيتم استبدال النسخة القديمة بالنسخة الجديدة ، وشأنه شأن أي عملية تحديث ؛ فإنك ستفقد النسخة القديمة كاملةً ( وهنا الحاجة الماسة لاعتماد فكرة تقسيم       قاعدة البيانات ) .

 

small.Blue-check.png.685b9b4d755a1579b52 ملف الواجهة المرفق مفتوح المصدر  👈  [ Main.accdb ]

* عذراً إن كانت طريقتي في العمل مزعجة أو غريبة نوعاً ما ، لكن هو طبعي 😅 . فماذا أفعل ؟؟!!

 

 

Thanks.png

تم تعديل بواسطه Foksh
تعديلات نصية وتصحيح أخطاء إملائية 💡
  • Like 6
  • Thanks 2
قام بنشر (معدل)

اللهم نور له قبره وآنس وحشته ووسع مدخله، اللهمّ افسح له في قبره مدّ بصره، وافرش قبره من فراش الجنّة،اللهمّ احشره مع أصحاب اليمين، واجعل تحيّته سلامٌ لك من أصحاب اليمين

تم تعديل بواسطه Eng Feras Abu Saleh
  • Thanks 1
  • Moosak pinned this topic
قام بنشر

اللهم نور له قبره وآنس وحشته ووسع مدخله، اللهمّ افسح له في قبره مدّ بصره، وافرش قبره من فراش الجنّة،اللهمّ احشره مع أصحاب اليمين، واجعل تحيّته سلامٌ لك من أصحاب اليمين

  • Thanks 1
قام بنشر

بارك الله في جهودك وجميع الأعضاء بلا إستثناء

ثم نسأل الله العلي القدير ان يغفر لوالدينا وجميع موتى المسلمين

الله أغفر لهم وارحمهم وآنس وحشتهم ووسع مدخلهم وأكرم نزلهم وأفرش لهم من فرش الجنة يارب

  • Thanks 1
قام بنشر

 

:excl: سيتم تحديث الملف الذي يتم تنزيله من التحديث بين فترة وأخرى ، لضمان أن الفكرة تعمل بدون مشاكل :excl:

قام بنشر

اللهم يا باسط اليدين بالعطايا يا قريب يا مجيب دعوة الداع إذا دعاه يا حنان يا منّان يا رب يا أرحم الراحمين يا بديع السموات والرض يا أحد يا صمد اعطي كل من توفيته من المسلمين من خير ما أعطيت به نبيك محمد صلى الله عليه وسلم عطاء ماله من نفاد من مالك خزائن السموات والأرض عطاء عظيماً من رب عظيم عطاء ماله من نفاد عطاء أنت له اهل عطاء يليق بجلال وجهك وعظيم سلطانك
اللهم ان كل من توفيته من المسلمين في كفالتك وفي ضيافتك وأنت أهل الجود والكرم فيارب أكرمهم ووسع مدخلهم واغفر لهم يارب كل خطاياهم وبدل سيئاتهم حسنات برحمتك وجودك وعفوك 

اللهم اغفر لكل المسلمين الاحياء منهم والاموات يارب العالمين... امين امين امين 

18 ساعات مضت, Foksh said:

* عذراً إن كانت طريقتي في العمل مزعجة أو غريبة نوعاً ما ، لكن هو طبعي 😅 . فماذا أفعل ؟؟!!

بل السؤال الصحيح ماذا نفعل نحن :biggrin2: 

جزاكم الله خيـــــرا على الافكار النيرة 

  • Thanks 1
قام بنشر
25 دقائق مضت, ابو جودي said:

بل السؤال الصحيح ماذا نفعل نحن :biggrin2: 

 

إحنا نروح الشرطة :biggrin:

  • Haha 1
قام بنشر

غفر الله لك ولوالديك ، وأسكن الله موتاكم وموتانا وموتى المسلمين مساكن الأنبياء والصالحين والصديقين والشهداء وحسن أولئك رفيقا ..
وزادك الله من علمه وهداه وتقواه، وأغناك الله من واسع فضله، وفتح لك فتوح العارفين، وألبسك لباس الصالحين .. يارب العالمين 🙂🤲🏻🌷🌹

 

ما شاء الله .. قطعة فنية نسجها محترف عارف بها 😊
جربتها .. وهي شغالة 10/10  تبارك الرحمن .. 😎👌🏻

  • Like 1
  • Thanks 1
قام بنشر
3 ساعات مضت, Moosak said:

جربتها .. وهي شغالة 10/10

يسعدني نجاح الفكرة بعد تجربتها بأكثر من مستخدم ، أشكرك مهندسنا  :fff:

قام بنشر

ياربي يسلمك من كل مكروه، ربي يبارك فيك يارب، وباربي اغفر له وارحمه واسكنه فسيح جناتك يارب، 

قطعة فنية من المبدع، سلمت يداك 

جاري التجربة 🌹👍♥️

  • Thanks 1
قام بنشر (معدل)

أخي Foksh

لعلك تضيف في حالة عدم وجود تحديث جديد أن يتم ظهور رسالة بعبارة : "النسخة التي لديك هي الأحدث" أو عبارة "لا يوجد تحديث جديد" أو أي عبارة أخرى توصل المعنى .

تم تعديل بواسطه عربي عالمي
  • Like 1
قام بنشر (معدل)
في 28‏/12‏/2024 at 21:46, Foksh said:
"أنت تستخدم أحدث إصدار : "

أخي العزيز @عربي عالمي ، العبارة هذه تدل على انك تستخدم آخر إصدار ، تستطيع تغييرها كيفما تريد :yes: .

سأقوم ان شاء الله غداً بجعل الاصدار في التحديث = الاصدار في الملف المرفق لتتوضح لك الصورة عند عدم وجود تحديث 

تم تعديل بواسطه Foksh
قام بنشر

عمل رائع و مميز جدا جدا..... بارك الله في جهدك وزادك علما

لدي استفسار

لو كانت قاعدة البيانات بصيغة   accde   هل يمكن التحديث اون لاين ؟

  • Like 1
قام بنشر
11 دقائق مضت, abofayez1 said:

لو كانت قاعدة البيانات بصيغة   accde   هل يمكن التحديث اون لاين ؟

سؤال جميل ، العمل جاري لتعديل الملف الوسيط ليقرأ امتداد قاعدة البيانات الأساسية دون تدخل برمجي .. لكن حالياً ولتجربة الفكرة فالإمتداد المتعامل معه هو Accdb .

 

انتظر التحديث القادم ان شاء الله :wub: .

  • Thanks 1
قام بنشر
في 28‏/12‏/2024 at 21:46, Foksh said:

اسمحوا لي بأن أطرح هذه الفكرة الجديدة والتي تم تجربتها مراراً وتكراراً إلى أن خرجت بهذه النتيجة فيما يتعلق بموضوع التحديث الهوائي أو Online أو

بارك الله فيك اخي الكريم على الطرح

لكن هناك فكرة مشابهه لهذه الطريقة في المنتدى .... ما الجديد في موضوعك ... لاني عجزت اعرف الفارق البرمجي فيها

في 26‏/10‏/2018 at 04:25, Elsayed Bn Gemy said:

السلام عليكم ورحمة الله تعالى وبركاته

فى البداية اود ان اعتذر عن قلة مشاركاتى وذلك لقلة تعاملى مع الاكسس نظرا لانشغالى بـــ بيئة بيسك.نت

ببساطة نحن مستخدمى الاكسس نريد ان يكون لدينا هذا الزر فى برامجنا 😂😂😂

ereet.png.133c8ee12e3440c43ca23a0616b4bebe.png

 

اولا كان لدى  محاولة واحدة عن كيفية جعل المستخدم يبحث عن تحديثات جديدة للبرنامج الخاص به عن طريق الانترنت

فكانت نتيجة المحاولة هو ربط قاعدة البيانات اكسس بقاعدة بيانات سيكوال موجودة على استظافة مجانية

قاعدة سيكوال بها حقلين هما رقم النسخة الجديدة ورابط التحميل الخاص بالتحديث الجديدة

وهذا الموضوع يشرح ذلك

 

 

 

 

 

وكانت اكبر المشاكل التى تقابلنى هى الاستضافة المجانية التى بعد شهرين او اكثر تحذف قاعدة بياناتك بدون سابق انذار

ولا يوجد المال الكافى لحجز استضافة ورفع قاعدة البيانات سيكوال الخاصة بك عليها

 

فكان التفكير فى استخدام البرامج السحابية (جوجل درايف - وان درايف - دروبوكس )

واكبر المشاكل التى ستقابلك هى المزامنة

ثم المشكلة الاخرى وهى انك لن تطلب من كل المستخدمين تثبيت اى من البرامج السحابية لديه واعطائة  اسم المستخدم وكلمة السر الخاص بالبرنامج السحابى الذى سترفع عليه التحديث

حتى تتم المزامنة على جهاز العميل اولا باول

 

 

اذا فما هو الحل

انا اريد ان يضغط العميل على زر ( البحث عن تحديث جديد ) ثم يجد رسالة تخبره ان برنامجه محدث  او انه توفر اصدار جديد من البرنامج

 

اليكم فكرتى قد تحتاجونها او لا  ولكن ما كنت لابخل عليكم بشئ فاء الله على به

الفكرة بسيطة جدا تتلخص فى ملف نصى LastVersion.Txt قمت بكتابته

به مجموعة اسطر  الاول هو رقم الاصدار الجديد

الثانى هو رابط تحميل التحديث الجديد

وبعد هذا سطور على حسب الحاجة تقوم بالتعريف فيها بالتحديث الجديد ومميزاته

 

4446.png.66dae64346d1831ae8b374874425a2c5.png

طريقة العمل

 

سيقوم المرفق الذى سادرجه هنا  بتحميل الملف النصى من حسابك الخاص على دروبكس

وتفريغ الاسطر التى بداخله الى مربعات النصوص التى بالنموذج

ثم يقارن رقم التحديث الجديد بالرقم الحالى  ويعلمك اذا كانت نسختك محدثة ام تحتاج تحديث

المشاكل التى واجهتنى

1 - عدم وجود (direct download link  او static download link )  نظرا لتغير رابط تحميل الملف النصى دائما  فماذا سافعل اذ قمت مسبقا بادراج رابط ثابت لتحميل الملف النصى داخل البرنامج

2 - اذا اطلقت نسخة  جديدة من برنامجى  فساحتاج الى تعديل الملف النصى المحمل مسبقا والمدرج رابط التحميل الخاص به فى النموذج

 

فكانت الحلول هو عمل  static download link  للملف النصى  اى رابط تحميل ثابت للملف النصى

 

تابع معى

المتطلبات

----------------------

ان يقوم مصمم البرنامج فقط بالتسجيل على الموقع السحابى  (https://www.dropbox.com/h)   .. المصمم فقط  ان شئت قلت كأنك حجزت استضافة مجانية بها 12 جيجا بايت ومجانية

لانه بعد التسجيل سنحتاج اسم المستخدم وكلمة المرور  لكتابتهم فى دوال التحميل داخل المرفق وهما  دالتان 

مثل هذا الشكل

477.png.5aa9f90bd075b7d15935ed2343e1755c.png

 

الدالة الثانية

1492151997_.png.dbed55aad56bcc281ed539e1659b1a99.png

 

ثم يقوم بانشاء الملف النصى الخاص بالبرنامج الذى صممه

انا كتبته بهذا الشكل

4446.png.66dae64346d1831ae8b374874425a2c5.png

 

 


 

سنستخدم البرنامج السحابى دروبوكس (https://www.dropbox.com/h)

بعد التسجيل  - يمكنك التسجيل بسهوله عليه عن طريق رابط جوجل  دون الحاجة الى ملئ البيانات

بعد التسجيل ستجد نفسك فى الصفحة الرئيسية الخاصة بك

e9605d84-1f37-464d-b222-1b253938561c.png

بعد كتابة الملف النصى نقوم برفعه على الدروبكس

 

00.png.ecde007ed2960445de55bfd8c9632973.png

 

بعد رفعه على الدروبكس نقوم باخذ  اللينك الخاص به كوبى  وذلك لعمل رابط مباشر له لتحميله

1.png.3295acc7a0e7bc68232e9eb6cb022740.png

2.png.87511391ff416738b639fbb782889ac7.png

 

بعد اخذ اللينك كوبى بقى اهم خطوة وهى عمل رابط تحميل مباشر له

تابع معى

ستجد رابط المشاركة  بهذا الشكل الرابط الذى اخذته كوبى  

https://www.dropbox.com/s/n6oa483hwhlpkst/LastVersion.txt?dl=0


فقط استبدل 
https://www.dropbox.com
استبدلها 
https://dl.dropboxusercontent.com

ليصبح شكل الرابط هكذا 

https://dl.dropboxusercontent.com/s/n6oa483hwhlpkst/LastVersion.txt?dl=0
وبذلك اصبح لديك رابط مباشر له 

 

بعذ ذلك خذ الرابط الجديد وادرجه فى البرنامج

فى هذا الكود

445657805_444.png.24c4daff4a8463b3bf1f384d8da93f53.png

644270793_.png.81777797ea85645b7863823f8adbc0d1.png

 

ثم نقوم برفع القاعدة الجديدة المحدثة  على الدروبكس  وعمل رابط مباشر لها  ولكن هذه المرة نقوم بادراج الرابط المباشر هذا فى الملف النصى لا فى البرنامج

مع مراعاة  ان نقوم بتحديث رقم الاصدار فيها قبل رفها ليطابق رقم الاصدار الموجود فى الملف النصى

1328732874_7.png.37d19ea71fcb24e6eee76146b214bd42.png

 

والان فيديو يشرح طريقة العمل

 

 

 

 

تم اضافة اسم للمستخدم وكلمة السر يمكنك الان تجربة البرنامج

 

المرفق

 

 

LinkToUpdate.accdb 540 kB · 234 downloads

 

اتمنى ان اكون عرفت اشرح    وطبعا انا منتظر تشريفكم بتعليق لتجربة مرفقى المتواضع

 

قام بنشر
4 ساعات مضت, kanory said:

لاني عجزت اعرف الفارق البرمجي فيها

أهلا أستاذ @kanory >> يسعدني مرورك العطر أولاً  :wub:

ثانيا لم أتابع الموضوع الذي أشرت إليه لأني فعلاً لم ابحث عن هذه المواضيع في المنتدى ..

وثالثاً وهو المهم ..

  1.  لا يتم استخدام اي ايميل او باسوورد لأي حساب داخل الأكواد ..
  2. يلزم المبرمج رابط الملف النصي فقط لإضافته في جدوله .. والباقي عمل الكود ..
  3. دعمت الفكرة بأن يكون التحميل من ملف خارجي يتم استخراجه من داخل الجدول المرفق في ملفي . ( فكرة جديدة )
  4. في فكرتي لم ولن ولا اعتمد على برامج تلزم المبرمج بتثبيت برامج في جهاز العميل .
  5. لا يوجد روابط داخل الأكواد ، كلها يتم استدراجها وجلبها إل الجدول بشكل خفي
  6. منحت المستخدم فكرة الكشف التلقائي عن التحديثات حال وجودها . ففي الجدول هناك حقل Auto_Check من خلاله يستطيع المبرمج استغلاله بحيث :-
    Private Sub Form_Load()
        DoEvents
        If Check_Auto = -1 Then
        Me.TimerInterval = 1000
        Else
        Me.TimerInterval = 0
        End If
    End Sub
    
    Private Sub Form_Timer()
        Me.TimerInterval = 0
        CheckForUpdate
    End Sub
  7. التعامل مع معلومات التنزيل للتحديث بإحترافية ( بحيث يتم عرض شريط تحميل حقيقي لحجم الملف الذي تم تحميله وعرض سرعة الإنترنت والوقت المتبقي لإكمال عملية التحديث )

والعديد موجود في الملف الذي يتم استخراجه لتنفيذ عملية التحديث الصامت

بالنسبة لفكرتي مختلفة تماماً إلا أنها في الهدف متشابهة :smile: .

  • Like 1
  • Thanks 1
قام بنشر

بارك الله فيك استاذي الفاضل @Foksh اشكرك على الشرح الوافي جزاك الله خير وكتب أجرك على ما تقدمة

رحم الله والدك ووالدينا وجميع المسلمين الاحياء والاموات

  • Like 1
قام بنشر
في 28‏/12‏/2024 at 21:46, Foksh said:

سنقوم برفع هذا الملف النصي على جوجل درايف ( السبب : دروب بوكس لم يدعم فكرة قراءة الملف النصي وجلب قيمة رقم الاصدار في السطر الأول لمقارنتها مع القيمة في النسخة التي لدى العميل في الحقل Ver ) .

استاذي الغالي الدروب بوكس ايضا تستطيع من خلاله قراءة النصوص .... جرب المرفق ووافني بالنتيجة ....

 

KAN_1.accdb

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information