WinForm、Wpf自動升級 AutoUpdater.NET

Github

AutoUpdater.NET

目錄

一、IIS部署 更新站點

二、創建Winform


一、IIS部署 更新站點

IIS默認站點目錄下創建 目錄?Downloads、Updates

Updates目錄創建文件?UpdateLog.html、AutoUpdaterStarter.xml

UpdateLog.html:

<html><body><h1>UpDate</h1></body></html>

?AutoUpdaterStarter.xml:

url節點 為下載更新的地址?http://127.0.0.1/Downloads/fr.zip

<?xml version='1.0' encoding="UTF-8"?>
<item><!--在版本標記之間提供應用程序的最新版本。版本必須為X.X.X.X格式。--><version>1.0.0.2</version><!--在url標簽之間提供最新版本安裝程序文件或zip文件的url。自動更新。NET下載這里提供的文件,并在用戶按下Update按鈕時安裝它。--><url>http://127.0.0.1/Downloads/fr.zip</url><!--在changelog標記之間提供應用程序更改日志的URL。如果你不提供變更日志的URL,那么更新對話框將不會顯示變更日志。--><changelog>http://127.0.0.1/Updates/UpdateLog.html</changelog><!--如果你不想讓用戶跳過這個版本,可以將其設置為true。這將忽略“稍后提醒”和“跳過”選項,并在更新對話框中隱藏“稍后提醒”和“跳過”按鈕。--><!--mandatory mode="2">true</mandatory --><!--可以在強制元素上提供minVersion屬性。當您提供該選項時,只有當安裝的應用程序版本小于您在這里指定的最小版本時才會觸發強制選項。--><!--mandatory minVersion="1.2.0.0">true</mandatory --><!--args(可選):您可以在這個標記之間為安裝程序提供命令行參數。您可以在命令行參數中包含%path%,它將被當前正在執行的應用程序所在目錄的path所取代。--><!--mandatory args="xxxxx">false</mandatory --><!--提供更新文件的校驗和。如果你做這個autotoupater。NET將在執行更新過程之前比較下載文件的校驗和,以檢查文件的完整性。您可以在校驗和標記中提供algorithm屬性,以指定應該使用哪個算法來生成下載文件的校驗和。目前支持MD5、SHA1、SHA256、SHA384和SHA512。--><!--checksum algorithm="MD5">Update file Checksum</checksum -->
</item>

二、創建Winform

netcore 3.1 + Winform?

nuget安裝包

Autoupdater.NET.Official? ? ? ? --版本1.8.0

?2.1創建MainForm

http://127.0.0.1/Updates/AutoUpdaterStarter.xml?為IIS站點更新配置文件

檢查版本

    public partial class MainForm : Form{public MainForm(){InitializeComponent();Assembly assembly = Assembly.GetEntryAssembly();label1.Text = $"{assembly.GetName().Version}";//顯示版本號AutoUpdatorHelper.Start("http://127.0.0.1/Updates/AutoUpdaterStarter.xml", this);}private void button1_Click(object sender, EventArgs e){AutoUpdater.Start("http://127.0.0.1/Updates/AutoUpdaterStarter.xml");//手動更新}public class AutoUpdatorHelper{/// <summary>/// 自動更新/// </summary>/// <param name="serverPath"></param>/// <param name="synchronizeInvoke"></param>public static void Start(string serverPath, ISynchronizeInvoke synchronizeInvoke){#region 每隔60秒檢查一次更新(判斷依據是AssemblyInfo中的版本和xml文件的版本是否一致,如果服務器xml文件的版本大于AssemblyInfo中的版本則觸發CheckForUpdateEvent)System.Timers.Timer timer = new System.Timers.Timer{Interval = 60 * 1000,//毫秒SynchronizingObject = synchronizeInvoke};timer.Elapsed += (object sender, ElapsedEventArgs e) =>{AutoUpdater.Start(serverPath, Assembly.GetExecutingAssembly());};timer.Start();#endregionAutoUpdater.LetUserSelectRemindLater = true;AutoUpdater.RemindLaterTimeSpan = RemindLaterFormat.Minutes;AutoUpdater.RemindLaterAt = 1;//若您不想在更新表單上顯示“跳過”按鈕,那個么只需在上面的代碼中添加以下行即可。AutoUpdater.ShowSkipButton = false;//如果要同步檢查更新,請在啟動更新之前將Synchronous設置為true,如下所示。AutoUpdater.Synchronous = true;//若你們不想在更新表單上顯示“以后提醒”按鈕,那個么只需在上面的代碼中添加以下一行即可。AutoUpdater.ShowRemindLaterButton = false;//如果要忽略先前設置的“以后提醒”和“跳過”設置,則可以將“強制”屬性設置為true。它還將隱藏“跳過”和“稍后提醒”按鈕。如果在代碼中將強制設置為true,那么XML文件中的強制值將被忽略。AutoUpdater.Mandatory = false;//您可以通過添加以下代碼來打開錯誤報告。如果執行此自動更新程序。NET將顯示錯誤消息,如果沒有可用的更新或無法從web服務器獲取XML文件。AutoUpdater.ReportErrors = true;//如果服務器xml文件的版本大于AssemblyInfo中的版本則觸發CheckForUpdateEventAutoUpdater.CheckForUpdateEvent += (args) =>{if (args.Error == null){//檢測到有可用的更新if (args.IsUpdateAvailable){DialogResult dialogResult;if (args.Mandatory.Value){dialogResult =MessageBox.Show($@"當前有一個新版本{args.CurrentVersion}可用.你正在使用版本{args.InstalledVersion}.點擊確認開始更新", @"更新可用",MessageBoxButtons.OK,MessageBoxIcon.Information);}else{dialogResult =MessageBox.Show($@"當前有一個新版本{args.CurrentVersion}可用.你正在使用版本{args.InstalledVersion}.確認要更新嗎?", @"更新可用",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($@"當前為最新新版本", @"更新可用",MessageBoxButtons.OK,MessageBoxIcon.Information);}}else{if (args.Error is WebException){MessageBox.Show(@"連接更新服務器失敗,請檢查網絡連接.",@"更新檢查失敗", MessageBoxButtons.OK, MessageBoxIcon.Error);}else{MessageBox.Show(args.Error.Message,args.Error.GetType().ToString(), MessageBoxButtons.OK,MessageBoxIcon.Error);}}};}}}

?2.2打包

winfrom生成文件添加到壓縮文件 fr.zip,復制到IIS站點Downloads目錄下

?

2.3更新

?手動更新

?自動更新從版本1.0.0.1 更新到1.0.0.2?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713763.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713763.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713763.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從零開始手寫RPC框架(2)——Netty入門

學習前需要掌握基本的java網絡編程&#xff0c;可參考這篇博客 目錄 Netty 簡介Netty 使用 kryo 序列化傳輸對象案例客戶端代碼服務端代碼編碼器 Netty 簡介 是什么&#xff1f; Netty 是一個基于 NIO (Non-blocking I/O&#xff0c;非阻塞I/O)的 client-server(客戶端服務器…

mysql學習--binlog與gtid主從同步

基礎環境 基于centOS7-MySQL8.0.35版本 我們先準備一臺主服務器兩臺從服務器來實現我們主從同步的訴求 Master&#xff1a;192.168.75.142 slave1:192.168.75.143 slave&#xff1a;192.168.75.145 binlog主從同步 主庫配置 #我們需要在主從庫中都需要添加server_id&am…

大龍談智能內容開通視頻號啦

大家好&#xff0c;大龍談只能內容開通視頻號了&#xff0c;歡迎大家掃碼關注&#xff1a;

RISC-V特權架構 - 中斷與異常概述

RISC-V特權架構 - 中斷與異常概述 1 中斷概述2 異常概述3 廣義上的異常3.1 同步異常3.2 異步異常3.3 常見同步異常和異步異常 本文屬于《 RISC-V指令集基礎系列教程》之一&#xff0c;歡迎查看其它文章。 1 中斷概述 中斷&#xff08;Interrupt&#xff09;機制&#xff0c;即…

RocketMQ安裝

mq服務端安裝配置啟動把windows做成服務 mq管理界面安裝配置啟動 mq服務端 安裝 RocketMQ下載地址 配置 ROCKETMQ_HOME D:\google-d\rocketmq-all-5.2.0-bin-release啟動 # bin目錄cmd輸入 start mqnamesrv.cmd把windows做成服務 http://t.csdnimg.cn/qd2RD mq管理界面 …

ubuntu22.04安裝mysql8.0

官網下載mysql&#xff1a;MySQL :: Download MySQL Community Server 將mysql-server_8.0.20-2ubuntu20.04_amd64.deb-bundle.tar上傳到/usr/local/src #解壓壓縮文件 tar -xvf mysql-server_8.0.20-2ubuntu20.04_amd64.deb-bundle.tar解壓依賴包依次輸入命令 sudo dpkg -i m…

編程筆記 Golang基礎 045 math包

編程筆記 Golang基礎 045 math包 一、math包主要功能常量&#xff1a;函數&#xff1a;數值運算&#xff1a;三角函數&#xff1a;對數函數&#xff1a;隨機數相關&#xff1a; 二、示例代碼一三、示例代碼二小結 Go 語言的標準庫 math 提供了一系列基礎數學函數和常量&#xf…

EasyRecovery數據恢復軟件2024最新版包括Windows和Mac

EasyRecovery數據恢復軟件適用于多種環境和使用場景。首先&#xff0c;它適用于各種操作系統&#xff0c;包括Windows和Mac。無論用戶使用的是哪種操作系統&#xff0c;都可以使用該軟件進行數據恢復。 其次&#xff0c;EasyRecovery支持從各種存儲設備和媒介中恢復數據&#…

自定義BeanNameGenerator生成規則

通過點進ComponentScan注解進入源碼可以看到 追隨BeanNameGenerator進入源碼可以看到該類是個借口且只有一個方法 點擊上面黑色箭頭出現兩個實現方法 點擊第一個方法 進入determineBeanNameFromAnnotation方法中 通過上訴自定義一個生成beanName方法 先創建一個CustomeBeanN…

使用結構體和類在Unity中管理IMU數據

使用結構體和類在Unity中管理IMU數據 IMU數據簡介使用結構體管理IMU數據結構體的優點結構體的使用場景 使用類管理IMU數據類的優點類的使用場景 結構體(struct) vs 類(class)為什么考慮使用結構體 結論 在Unity開發中&#xff0c;合理地選擇數據結構對于確保游戲和應用的性能和…

60 個 CSS 選擇器,一網打盡!

CSS 選擇器用于選擇 HTML 元素并將樣式應用于它們。使用這些選擇器&#xff0c;可以定義特定條件下應用哪些樣式。除了普通的選擇器外&#xff0c;還有偽類和偽元素&#xff0c;用于選擇具有特定狀態或特定部分的元素&#xff0c;并將樣式應用于它們。本文將通過圖文并茂的方式…

Windows11家庭版安裝Docker

文章目錄 安裝Docker安裝hyper-v繼續解決報錯完成效果圖進一步測試是否完成安裝 安裝Docker windows如何安裝docker 裝好之后&#xff0c;我打開報錯。 安裝hyper-v 按這個視頻操作&#xff1a;Windows 11 家庭版安裝 Hyper-V bat文件里的代碼是&#xff1a; pushd "…

【Educoder數據挖掘實訓】異常值檢測-3σ法

【Educoder數據挖掘實訓】異常值檢測-3σ法 開挖&#xff01; 這個異常值檢測基于的是兩點&#xff1a; 數據往往遵循正態分布在正態分布中&#xff0c; [ μ ? 3 σ , μ 3 σ ] [\mu - 3\sigma, \mu 3\sigma] [μ?3σ,μ3σ]包含了正態分布中 99.74 % 99.74\% 99.74%的數…

【投稿優惠|快速見刊】2024年圖像,機器學習和人工智能國際會議(ICIMLAI 2024)

【投稿優惠|快速見刊】2024年圖像&#xff0c;機器學習和人工智能國際會議&#xff08;ICIMLAI 2024&#xff09; 重要信息 會議官網&#xff1a;http://www.icimlai.com會議地址&#xff1a;深圳召開日期&#xff1a;2024.03.30截稿日期&#xff1a;2024.03.20 &#xff08;先…

2024全國水科技大會暨高氨氮廢水厭氧氨氧化處理技術論壇(四)

一、會議背景 為積極應對“十四五”期間我國生態環境治理面臨的挑戰&#xff0c;加快生態環境科技創新&#xff0c;構建綠色技術創新體系&#xff0c;全面落實科學技術部、生態環境部等部委編制的《“十四五”生態環境領域科技創新專項規劃》&#xff0c;積極落實省校合作&…

pip下載paddle、sklearn、cv2問題

ModuleNotFoundError: No module named ‘paddle‘ ModuleNotFoundError: No module named sklearn No matching distribution found for cv2 Could not build wheels for opencv-python, which is required to install pyproj

什么是BGP網絡 (邊界網關協議)

BGP&#xff08;邊界網關協議&#xff09;是一種用于在互聯網中交換路由信息的協議。作為網關或路由器之間的協議&#xff0c;BGP主要用于幫助確定數據包在網絡中的路徑。它通過在不同自治系統&#xff08;AS&#xff09;之間交換路徑信息&#xff0c;實現了全球互聯網網絡的連…

MySQL進階之(三)InnoDB數據存儲結構之數據頁結構

三、InnoDB數據存儲結構之數據頁結構 3.1 數據庫的存儲結構3.1.1 MySQL 數據存儲目錄3.1.2 頁的引入3.1.3 頁的概述3.1.4 頁的上層結構 3.2 數據頁結構3.2.1 文件頭和文件尾01、File Header&#xff08;文件頭部&#xff09;02、File Trailer&#xff08;文件尾部&#xff09; …

【JavaEE】_Spring Web MVC簡介

目錄 1. Spring Web MVC簡介 2. MVC簡介 3. Spring MVC 1. Spring Web MVC簡介 官網對于Spring Web MVC的介紹如下&#xff1a; 鏈接如下&#xff1a; https://docs.spring.io/spring-framework/reference/web/webmvc.html#https://docs.spring.io/spring-framework/refer…

將SU模型導入ARCGIS,并獲取高度信息,多面體轉SHP文件(ARCMAP)

問題:將Sketchup中導出的su模型,導入arcgis并得到面shp文件,進而獲取各建筑的高度、面積等信息。 思路: (1)導入arcgis得到多面體 (2)轉為面shp文件 (3)計算高度/面積等 1、【3D Analyst工具】【轉換】【由文件轉出】【導入3D文件】(在此步驟之間,建議先建立一個…