快速創(chuàng)建軟件安裝包-ClickOnce
大家好,我是沙漠盡頭的狼。
.NET是免費(fèi),跨平臺(tái),開源,用于構(gòu)建所有應(yīng)用的開發(fā)人員平臺(tái)。
今天介紹使用ClickOnce制作軟件安裝包,首先我們先了解什么是ClickOne。
1. 什么是ClickOnce
以下段落摘自微軟文檔:https://learn.microsoft.com/zh-cn/visualstudio/deployment/clickonce-security-and-deployment?view=vs-2022。
ClickOnce 是一種部署技術(shù),使用該技術(shù)可創(chuàng)建自行更新的基于 Windows 的應(yīng)用程序,這些應(yīng)用程序可以通過最低程度的用戶交互來安裝和運(yùn)行。
ClickOnce 部署克服了部署中所固有的三個(gè)主要問題:
更新應(yīng)用程序的困難
使用 Microsoft Windows Installer 部署,每次應(yīng)用程序更新,用戶都必須重新安裝整個(gè)應(yīng)用程序;使用 ClickOnce 部署,則可以自動(dòng)提供更新。只有更改過的應(yīng)用程序部分才會(huì)被下載,然后從新的并行文件夾重新安裝完整的、更新后的應(yīng)用程序。
對(duì)用戶的計(jì)算機(jī)的影響
使用 Windows Installer 部署時(shí),應(yīng)用程序通常依賴于共享組件,這便有可能發(fā)生版本沖突;而使用 ClickOnce 部署時(shí),每個(gè)應(yīng)用程序都是獨(dú)立的,不會(huì)干擾其他應(yīng)用程序。
安全權(quán)限
Windows Installer 部署要求管理員權(quán)限并且只允許受限制的用戶安裝;而 ClickOnce 部署允許非管理用戶安裝應(yīng)用程序并僅授予應(yīng)用程序所需要的那些代碼訪問安全權(quán)限。
過去,這些問題有時(shí)會(huì)使開發(fā)人員決定創(chuàng)建 Web 應(yīng)用程序而不是基于 Windows 的應(yīng)用程序,為便于安裝而犧牲了 Windows窗體豐富的用戶界面和響應(yīng)性。對(duì)于使用 ClickOnce 部署的應(yīng)用程序,您可以集這兩種技術(shù)的優(yōu)勢(shì)于一身。
2. 使用ClickOnce創(chuàng)建安裝包
2.1 需要服務(wù)器
首先,我們需要一個(gè)線上的網(wǎng)站,用于托管軟件更新文件,比如在Dotnet9網(wǎng)站的根目錄創(chuàng)建一個(gè)WPFBlazorChat
的目錄,那么線上托管地址則是https://dotnet9.com/WPFBlazorChat
,目錄如下:

2.2 開始制作安裝包
記住上面的線上地址,使用前幾天介紹的WPFBlazorChat
做為示例做安裝包,倉(cāng)庫(kù)地址是:https://github.com/dotnet9/WPFBlazorChat,所以上面創(chuàng)建的目錄與項(xiàng)目名同名:WPFBlazorChat
。
選擇
WPFBlazorChat
工程,右鍵發(fā)布

在彈出的界面,選擇ClickOnce,點(diǎn)擊下一步

發(fā)布位置隨意

選擇軟件安裝包獲取地址

設(shè)置
可配置程序運(yùn)行時(shí)自動(dòng)檢測(cè)更新、軟件版本號(hào)等,如下圖:

如上圖,如果勾選【自動(dòng)遞增修訂號(hào)】,那么每次點(diǎn)擊發(fā)布,修訂號(hào)會(huì)遞增(感覺說的是廢話,主要是方便版本號(hào)管理)。
點(diǎn)擊應(yīng)用程序文件,可勾選哪些文件可以不用下載,如下圖:

選擇先決條件,即選擇程序的運(yùn)行時(shí),因?yàn)槌绦蚰J(rèn)支持.NET 6和.NET 7,所以站長(zhǎng)勾選了.NET 7 x64,win7 32位的同學(xué)如有需要,按需選擇:

選項(xiàng)配置
配置軟件安裝包信息,其中比較重要的是發(fā)布者名稱和套件名稱,決定軟件程序釋放位置:


部署文件配置,其中Publish.html配置了安裝包下載頁(yè)面

簽名清單
未設(shè)置,直接下一步:

程序發(fā)布配置
按情況選擇,站長(zhǎng)選擇的.NET 7 64位發(fā)布,注意需要和前面選擇.NET桌面運(yùn)行時(shí)版本一致
:

點(diǎn)擊發(fā)布
最后一個(gè)操作,點(diǎn)擊發(fā)布

發(fā)布完成,點(diǎn)擊【發(fā)布位置】路徑:

2.3 上傳
上面制作了軟件安裝包,還差一個(gè)步驟,就是把安裝包丟網(wǎng)站上去,這個(gè)就比較簡(jiǎn)單了,前提是網(wǎng)站已經(jīng)部署了哈:


2.4 程序安裝、運(yùn)行
地址是:https://dotnet9.com/WPFBlazorChat/Publish.html

如上圖,顯示了我們創(chuàng)建安裝包配置的軟件安裝包名稱、版本號(hào)、發(fā)布者、需要的.NET運(yùn)行時(shí)版本等,點(diǎn)擊【安裝】按鈕,會(huì)下載一個(gè)setup.exe
安裝文件,這個(gè)文件很小,666KB,好吉利的數(shù)字:

運(yùn)行setup.exe
,會(huì)自動(dòng)從上面的服務(wù)器(https://dotnet9.com/WPFBlazorChat/)中檢測(cè)版本號(hào)、文件更新情況,自動(dòng)下載程序文件了:
下圖是服務(wù)器軟件安裝包信息:

下圖是安裝過程截圖:
安裝包下載完成后,程序自動(dòng)運(yùn)行,下面就是測(cè)試程序運(yùn)行界面了,WPF Blazor開發(fā)的喲,點(diǎn)擊戳源碼:
3. Q&A
ClickOnce 部署的工作原理
核心 ClickOnce 部署體系結(jié)構(gòu)基于兩個(gè) XML 清單文件:應(yīng)用程序清單和部署清單。 這些文件用于描述從哪里安裝 ClickOnce 應(yīng)用程序、如何更新這些應(yīng)用程序以及何時(shí)更新它們。
更多請(qǐng)?jiān)L問微軟文檔:https://learn.microsoft.com/zh-cn/visualstudio/deployment/clickonce-security-and-deployment?view=vs-2022
本文完,下篇介紹WPF中如何使用Blazor開發(fā)應(yīng)用。