大家好,我是沙漠盡頭的狼。
.NET 是免費、跨平台、開放原始碼,用於建置所有應用程式的開發人員平台。
今天介紹使用 ClickOnce 製作軟體安裝套件,首先我們先了解什麼是 ClickOnce。
1. 什麼是 ClickOnce
以下段落摘自微軟文件:https://learn.microsoft.com/zh-tw/visualstudio/deployment/clickonce-security-and-deployment?view=vs-2022。
ClickOnce 是一種部署技術,使用該技術可建立會自動更新的 Windows 應用程式,這些應用程式可以透過最低程度的使用者互動來安裝和執行。
ClickOnce 部署克服了部署中固有的三個主要問題:
- 更新應用程式的困難
使用 Microsoft Windows Installer 部署,每次應用程式更新時,使用者都必須重新安裝整個應用程式;使用 ClickOnce 部署,則可以自動提供更新。只有變更過的應用程式部分才會被下載,然後從新的平行資料夾重新安裝完整、更新後的應用程式。
- 對使用者電腦的影響
使用 Windows Installer 部署時,應用程式通常依賴於共用元件,這便可能發生版本衝突;而使用 ClickOnce 部署時,每個應用程式都是獨立的,不會干擾其他應用程式。
- 安全性權限
Windows Installer 部署需要系統管理員權限且只允許受限的使用者安裝;而 ClickOnce 部署允許非系統管理使用者安裝應用程式,並僅授與應用程式所需要的那些程式碼存取安全性權限。
過去,這些問題有時會使開發人員決定建立 Web 應用程式而不是 Windows 應用程式,為了便於安裝而犧牲了 Windows Forms 豐富的使用者介面和回應性。對於使用 ClickOnce 部署的應用程式,您可以同時擁有這兩種技術的優勢。
2. 使用 ClickOnce 建立安裝套件
2.1 需要伺服器
首先,我們需要一個線上的網站,用來託管軟體更新檔案,例如在 Dotnet9 網站的根目錄建立一個 WPFBlazorChat 目錄,那麼線上託管位址就是 https://dotnet9.com/WPFBlazorChat,目錄如下:

2.2 開始製作安裝套件
記住上面的線上位址,使用前幾天介紹的 WPFBlazorChat 作為範例製作安裝套件,倉庫位址是:https://github.com/dotnet9/WPFBlazorChat,所以上面建立的目錄與專案名稱相同:WPFBlazorChat。
- 選取
WPFBlazorChat專案,按右鍵發行

- 在彈出的介面中,選擇 ClickOnce,點選下一步

- 發行位置隨意

- 選擇軟體安裝套件取得位址

- 設定
- 可設定程式執行時自動偵測更新、軟體版本號等,如下圖:

如上圖,如果勾選【自動遞增修訂編號】,那麼每次點選發行時,修訂編號會遞增(感覺說的是廢話,主要是方便版本號管理)。
- 點選應用程式檔案,可勾選哪些檔案可以不用下載,如下圖:

- 選擇必要條件,即選擇程式的執行階段,因為程式預設支援 .NET 6 和 .NET 7,所以站長勾選了 .NET 7 x64,使用 Win7 32 位元的使用者如有需要,請依需求選擇:

- 選項設定
設定軟體安裝套件資訊,其中比較重要的是發行者名稱和套件名稱,這會決定軟體程式的釋放位置:


部署檔案設定,其中 Publish.html 設定了安裝套件下載頁面

- 簽章清單
未設定,直接下一步:

- 程式發行設定
依情況選擇,站長選擇 .NET 7 64 位元發行,注意需與前面選擇的 .NET 桌面執行階段版本一致:

- 點選發行
最後一個操作,點選發行

發行完成,點選【發行位置】路徑:

2.3 上傳
上面製作了軟體安裝套件,還差一個步驟,就是把安裝套件丟到網站上去,這個就比較簡單了,前提是網站已經部署好了:


2.4 程式安裝、執行
位址是:https://dotnet9.com/WPFBlazorChat/Publish.html

如上圖,顯示了我們建立安裝套件時設定的軟體安裝套件名稱、版本號、發行者、需要的 .NET 執行階段版本等,點選【安裝】按鈕,會下載一個 setup.exe 安裝檔案,這個檔案很小,666KB,好吉祥的數字:

執行 setup.exe,會自動從上面的伺服器 (https://dotnet9.com/WPFBlazorChat/) 中偵測版本號、檔案更新情況,自動下載程式檔案了:
下圖是伺服器軟體安裝套件資訊:

下圖是安裝過程截圖:

安裝套件下載完成後,程式自動執行,下面就是測試程式執行介面了,WPF Blazor 開發的喔,點擊戳原始碼:

3. Q&A
- ClickOnce 部署的運作原理
核心 ClickOnce 部署架構是基於兩個 XML 資訊清單檔案:應用程式資訊清單和部署資訊清單。這些檔案用來描述從哪裡安裝 ClickOnce 應用程式、如何更新這些應用程式以及何時更新它們。
更多請造訪微軟文件:https://learn.microsoft.com/zh-tw/visualstudio/deployment/clickonce-security-and-deployment?view=vs-2022
本文完,下篇介紹 WPF 中如何使用 Blazor 開發應用程式。