Auto Check Update sẽ có nhiệm vụ check phiên bản mới, nếu phiên bản hiện tại của chương trình cũ hơn thì thông báo người dùng.
📕 KIẾN THỨC CẦN NẮM
Các kiến thức cơ bản về AutoIT cùng kiến thức Internet. Ở tutorial này chúng ta sẽ sử dụng các kiến thức có liên quan đến:- INI File, InetGet, cơ bản về biến, hàm trong AutoIT
- Cách upload 1 file lên Google Drive dưới dạng public (hoặc có thể sử dụng host khác)
💡 CƠ CHẾ AUTO CHECK UPDATE
Hầu hết các tính năng Auto Check Update đều có chung 1 cơ chế, đó là nhận dữ liệu từ máy chủ (dữ liệu có thể bao gồm phiên bản mới nhất cùng các thông tin khác về nó) và tiến hành so sánh với phiên bản hiện tại của chương trình rồi đưa ra thông báo xin ý kiến người dùng có hay không update.Các bạn có thể hình dung 1 Auto Check Update đơn giản qua cơ chế sau:
Cơ chế Auto Check Update đơn giản |
🚀 LET'S DO IT
Trước tiên, chúng ta cần xác định 2 đối tượng cần xử lý.- Thứ nhất là máy chủ để chương trình tải thông tin về, ở đây tôi sẽ ví dụ sử dụng Google Drive làm host.
- Thứ hai là chương trình auto check update từ thông tin máy chủ đó.
Bước 1: Máy chủ. Đầu tiên, tôi sẽ tạo 1 file INI tên Setting.ini có dạng như sau:
[MyProgram]
Version=1.0
Date=20/3/2016
LinkUpdate=http://opdo.top
Trong đó là những thông tin mới nhất về chương trình như key Version là phiên bản mới nhất, cùng ngày cập nhật và link tải.Tiếp theo, nhiệm vụ của chúng là đưa nó lên một host cố định để chương trình có thể tải về lấy thông tin. Tại sao lại phải cố định host? Vì chương trình của bạn sẽ không thể nào tự hiểu bạn đã đổi 1 host mới, vì vậy hãy cân nhắc chọn 1 host cố định cho chương trình.
Chúng ta chọn Google Drive và vì vậy tôi Upload file INI này vào một foder Drive của tôi (ở đây ví dụ file Setting.ini của tôi nằm ở MySoft/Setting.ini). Chọn chế độ Share Public cho folder đó.
Chuyển file về chế độ public để chương trình có thể truy cập |
Cách lấy Direct Link. Đầu tiên ở Liên kết chia sẻ, bạn lấy phần ID của folder.
Lấy phần ID của Folder mà bạn set public |
https://googledrive.com/host/<ID>/<Tên file>Ví dụ, folder MySoft (folder chứa file Setting.ini) của tôi có ID là: 0B7ji-w0T3os-OE1XX2VCTl9uUkU
Thì link tải Setting.ini sẽ là:
https://googledrive.com/host/0B7ji-w0T3os-OE1XX2VCTl9uUkU/Setting.iniVậy là chúng ta đã hoàn tất xong phần host. Chúng ta chỉ cần cho chương trình tải file INI này về và so sánh mà thôi.
Bước 2: Tải thông tin. Chúng ta dùng InetGet để tải file về và lưu tại thư mục chứa mã nguồn với tên Update.ini
InetGet("https://googledrive.com/host/0B7ji-w0T3os-OE1XX2VCTl9uUkU/Setting.ini",@ScriptDir&"\Update.ini",1)
Bước 3: So sánh phiên bản. Sau khi đã có file INI rồi, ta chỉ việc lấy thông tin phiên bản mới nhất của nó ra để so sánh với phiên bản hiện tại của chương trình. Ta dùng IniRead và _VersionCompare để so sánh hai phiên bản.
#include <Misc.au3>
$Version = '1.0'
$new_Version = IniRead(@ScriptDir&"\Update.ini","MyProgram","Version",-1) ; trả về giá trị -1 nếu không tìm thấy key Version
if _VersionCompare ( $new_Version, $Version ) = 1 Then
; code khi có phiên bản mới
EndIf
Trong đó, $Version = '1.0' chính là phiên bản của chương trình đang check update, $new_Version là biến mà Iniread trả về dữ liệu phiên bản mới nhất đọc được từ file INI lấy từ host.
Bước 4: Thông báo cập nhật. Chúng ta sẽ thông báo hỏi người dùng bằng Msgbox có cập nhật hay không (hoặc không có cập nhật mới). Nếu người dùng đồng ý cập nhật, ta sẽ chuyển người dùng đến trang tải.
Bước 4: Thông báo cập nhật. Chúng ta sẽ thông báo hỏi người dùng bằng Msgbox có cập nhật hay không (hoặc không có cập nhật mới). Nếu người dùng đồng ý cập nhật, ta sẽ chuyển người dùng đến trang tải.
if _VersionCompare ( $new_Version, $Version ) = 1 Then
; code khi có phiên bản mới
Local $link_update = IniRead(@ScriptDir&"\Update.ini","MyProgram","LinkUpdate",'www.opdo.top') ; trả về giá trị www.opdo.top nếu không tìm thấy
Local $date_update = IniRead(@ScriptDir&"\Update.ini","MyProgram","Date",'')
If MsgBox(4+64,"Thông báo","Có phiên bản mới "&$new_Version&' cập nhật ngày '&$date_update&'. Bạn có muốn cập nhật?') = 6 Then ShellExecute($link_update) ; mở link update nếu người dùng chọn Yes
Else
MsgBox(64,'Thông báo','Không có phiên bản mới')
EndIf
Vậy chúng ta cơ bản đã hoàn tất một Auto Check Update cho chương trình. Bạn có thể tham khảo code mẫu tại đây.
8 nhận xét
nhận xétVery helpful. Thanks
Replytks for reading my blog ^^
Replycám ơn bạn đã quan tâm ^^
ReplyAnh ơi ko có Func _VersionCompare
Reply_VersionCompare của thư viện Misc.au3
ReplyEm thêm dòng này ở đầu script nha
#include
cái này được đó.
Replytks b :3
ReplyLấy code ở đâu vậy bạn?
Reply