https://www.hung.pro.vn/2023/09/csharp-visual-basic-auto-updater.html
Sau một hồi tìm kiếm thì mình phát hiện ra bài viết này, cũng khá hay về vấn đề trên nên mình viết lại chia sẽ cho người dùng được hiểu rỏ hơn về việc update.
Khi các bạn phát triển và thiết kế phần mềm, thì công việc cập nhật phần mềm rất cần thiết cho người dùng cuối, đối với những ứng dụng của bạn cung cấp ra ngoài mạng internet hoặc mạng LAN.
Khi các bạn phát triển và thiết kế phần mềm, thì công việc cập nhật phần mềm rất cần thiết cho người dùng cuối, đối với những ứng dụng của bạn cung cấp ra ngoài mạng internet hoặc mạng LAN.
[C#] Tự động cập nhật phần mềm khi có phiên bản mới trong lập trình Winform
Nếu phần mềm của bạn bị lỗi, hay bạn muốn cập nhật tính năng nào mới, bạn chỉ cần copy những file cập nhật mới lên một web server hoặc ftp server.Khi người dùng, mở ứng dụng lên, sẽ báo cho người dùng biết có phiên bản mới, nếu người dùng bấm OK, phần mềm sẽ tự động tải về và cập nhật.
Demo ứng dụng tự động cập nhật phần mềm C# Winform:
Trong bài viết này mình sẽ giới thiệu đến các bạn thư viện
AutoUpdater.NET
.Với thư viện này, các bạn sẽ dễ dàng tích hợp module cập nhật ứng dụng cho App của mình.
Đầu tiên, các bạn cần
import
thư viện AutoUpdater.NET
vào project bằng Nuget Console
, phiên bản hiện tại là 1.6.3
PM> Install-Package Autoupdater.NET.Official -Version 1.6.3
Để xây dựng module này các bạn tạo cho mình 1 file
update.xml
với nội dung như sau và sau đó copy lên Server Web của mình nhé.<?xml version="1.0" encoding="UTF-8"?> <item> <version>2.0.0.0</version> <url>https://laptrinhvb.net/TestAutoUpdate.zip</url> <changelog>https://laptrinhvb.net</changelog> <mandatory>false</mandatory> </item>
- Version: 2.0.0.0 là để cho máy client đọc phiên bản mới nhất để so sánh với phiên bản hiện tại.
- url: là đường dẫn để cho thư viện tải phiên bản cập nhật về và tự động giải nén.
- Các bạn nhớ nén thành file .ZIP nhé
- Changelog: đường dẫn đến website hoặc file html để thông báo cho người dùng phiên bản mới có những tính năng nào mới hoặc fix bug gì.
- Mandatory: nếu bạn set = true, thì bắt buộc người dùng phải cập nhật phần mềm, bỏ qua skip update
Và dưới đây là source code ứng dụng tự động cập nhật phần mềm C#, Winform:
using AutoUpdaterDotNET; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace TestAutoUpdate { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); System.Diagnostics.FileVersionInfo fvi = System.Diagnostics.FileVersionInfo.GetVersionInfo(assembly.Location); AutoUpdater.CheckForUpdateEvent += AutoUpdaterOnCheckForUpdateEvent; string version = fvi.FileVersion; label1.Text = "Phiên bản: " + version; AutoUpdater.DownloadPath = "update"; System.Timers.Timer timer = new System.Timers.Timer { Interval = 15 * 60 * 1000, SynchronizingObject = this }; timer.Elapsed += delegate { AutoUpdater.Start("https://laptrinhvb.net/update.xml"); }; timer.Start(); } private void AutoUpdaterOnCheckForUpdateEvent(UpdateInfoEventArgs args) { if (args.IsUpdateAvailable) { DialogResult dialogResult; dialogResult = MessageBox.Show( $@"Bạn ơi, phần mềm của bạn có phiên bản mới {args.CurrentVersion}. Phiên bản bạn đang sử dụng hiện tại {args.InstalledVersion}. Bạn có muốn cập nhật phần mềm không?", @"Cập nhật phần mềm", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (dialogResult.Equals(DialogResult.Yes) || dialogResult.Equals(DialogResult.OK)) { try { if (AutoUpdater.DownloadUpdate(args)) { Application.Exit(); } } catch (Exception exception) { MessageBox.Show(exception.Message, exception.GetType().ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error); } } } else { MessageBox.Show(@"Phiên bản bạn đang sử dụng đã được cập nhật mới nhất.", @"Cập nhật phần mềm", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void button1_Click(object sender, EventArgs e) { AutoUpdater.Start("https://laptrinhvb.net/update.xml"); } } }
Chi tiết và cách sử dụng thêm các bạn có thể vào trang
AutoUpdater.NET
để tham khảo tài liệu của nó nhé.Chúc mọi người thành công với thủ thuật update cho chương trình của bản thân nhé.
Nếu copy từ blog này vui lòng để lại nguồn để tôn trọng tác giả hung.pro.vn
Comments
chưa áp dụng nhưng thấy demo chất lượng đó e
ReplyDeleteáp dụng để có 1 một chương trình tốt a nhé <3
Deletea đang có dự đình viết chương gì sao ?
ReplyDeleteđúng rồi e, a đang có dự định viết chương trình tự động tải và cập nhật phần mềm hữu ích cho window, nhưng bị vướng ở phần máy chủ, a phải tìm kiếm và có khi phải chạy nhiều máy chủ cùng lúc để máy chủ hoạt động tốt, vì 3 4 ng dùng và tải về thì sợ máy chủ k chịu đc đó e.
Deletenếu áp dụng đoạn code này vào thì e chỉ cần một con hosting chất lượng và ít sữ dụng chỉ lưu trữ dữ liệu thôi chứ có tốn bằng thông gì nhiều như e nói trên đâu, nếu e cần máy chủ thì e phát triển chương trình chat onl thì mới cần máy chủ nhiều e nhé, để tránh bị xung đột hay máy chủ die vì ng dùng nhiều e nhé.
ReplyDeleteDạ a, e đang có một số khúc mắc trong chương trình tăng lượt truy cập ng dùng thật trên chương trinh a ạh, và e cần máy chủ tốt để phù hợp và ổn định. Nên cần một máy chủ gọi là ok, ở thời buổi này nhiều hacker nhí quá, nên việc này cũng khó cho e để phát triển a ạh, và việc tấn công host hay chiếm quyền điều khiển thì đơn giản nếu hacker kiểm tra đc hosting m dùng ở đâu, nó có thể mua một cái và gắn shell và tấn công lên sever để tấn công hosting ng dùng chung trên sever đó. Nên e đang do dự đó a
Deletenếu e ngại vấn đề trên thì e có thể viết một chương trình dự phòng và host dự phòng nếu host e bị die mà, và nó sẽ thay thế tự động và do e quản lý, k thì e có thể viết một chương trình tự động thay đổi host nếu e thấy ng dùng tăng vọt hay host bị lỗi cũng đc mà. Nhiều thủ thuật cho chương trình lắm e.
DeleteHi e cảm ơn a đã góp ý, nhưng a biết khả năng của e chưa đạt đến mức đó a ạh :D
Deletea góp ý để e hoàn thiện và sớm ra mắt chương trình tốt để phục vụ ng dùng thôi, chứ a cũng như e, chỉ biết và vọc vạch một số thứ để giúp bản thân làm tốt công việc thôi e nhé. :)
Delete