跳過到頁腳內容
Iron Academy Logo
C# 應用程式
C# 應用程式

其他分類

快速使用Velopack部署和更新C#桌面應用

Tim Corey
32m 25s

部署和更新跨平台桌面應用程式傳統上是開發中最令人沮喪的部分之一。 但正如 Tim Corey 在他的视频"利用Velopack快速部署和更新C#桌面應用程式"中所解釋的那樣,這個過程現在可以變得非常簡單。

使用Velopack,一個從構建套件到應用更新的絕佳工具,開發者現在可以使用只需一個命令來創建、部署和維護他們的應用程式,無需複雜的構建流水線或無窮無盡的配置文件。

在這篇文章中,我們將詳細介紹 Tim 的整個 32 分鐘教學,涵蓋如何使用 Velopack 將標準 C# WPF 應用程式轉換為自動更新的可攜帶包。 我們還將看到它如何支持自動遷移、代碼簽名和多平台的零配置設置——同時保持原生性能。

介紹:為何選擇Velopack?

Tim 開始解釋部署和更新桌面應用程式不必困難——實際上,這可以是"極其簡單的"。他在此視頻中的目標是展示如何通過使用 Velopack 封裝 WPF 應用程式、創建安裝程式並啟用自動更新來簡化這個過程,只需最少的配置。

他強調這不僅限於 WPF——相同的過程適用於 WinForms、控制台應用程式,甚至是非 .NET 軟體如 Java、Rust 或 C++。 Velopack 支持為幾乎所有語言或框架構建套件,使其成為目前最好的跨平台應用可用的安裝程式框架之一。

創建WPF專案

Tim 在 Visual Studio 2022 中開始創建一個簡單的 WPF 專案命名為 DeployDemo。 這個專案目標版本是 .NET 9,但正如他指出的,它在更新版本例如 .NET 10 上也能完美工作。

這個初始構建只是個小應用,用於展示完整的部署和更新過程。 儘管他使用 WPF,他重申 Velopack 同樣適用於跨平台桌面應用,成為所有類型 .NET 甚至非 .NET 專案的一種解決方案。

將 Velopack 安裝為全域工具

接下來,Tim 打開終端並輸入:

dotnet tool install -g vpk

這個單一命令在系統上全域安裝 Velopack,使開發者可以在任何地方運行 Velopack 命令。

Tim 稱之為"秘密配方步驟",因為 Velopack 將專案的編譯輸出轉換為自動更新的可攜帶包。 此步驟為您的應用提供專業的安裝程式和自動更新框架——全部在一起。

他解釋說,指令行不僅簡化設置,還能夠輕鬆整合到 CI/CD 管道中,因此開發者可以自動化包裝、創建版本和部署,而無需額外的腳本。這樣通過一個命令實現自動化意味著開發者可以節省寶貴的時間,同時保持一致的構建。

安裝 Velopack 的 NuGet 套件

在 Visual Studio 中,Tim 打開管理 NuGet 套件並安裝 Velopack 套件。

他解釋說,Velopack 是 Squirrel 的後繼者,一個先前流行的安裝框架。 如果您使用過 Squirrel,Velopack 可以自動遷移您現有的設置——提供更高的可靠性、顯著更快的構建速度和更好的跨平台相容性。

Velopack 可以為 Windows、Linux 和 macOS 生成桌面安裝程式,支持多種編程語言,例如 C#、Rust、C++ 和 JavaScript。 這是一個跨平台應用部署的框架,在各系統間運行得效果非凡。

Tim 強調 Velopack 的使用完全免費——沒有訂閱費或授權費用,但它提供的專業安裝框架可以與商業解決方案媲美。

初始化Velopack在程式碼中

在 App.xaml.cs 文件中,Tim 添加了一個構造函數並用幾行代碼初始化 Velopack:

new VelopackApp()
    .Build()
    .Run();
new VelopackApp()
    .Build()
    .Run();

這個零配置設置立即將應用程式連接到 Velopack 的自動更新框架。 雖然這還沒有檢查更新,但它確保在後續步驟中當它開始管理更新和安裝時的良好性能。

Tim 解釋說,即使這個設置簡單,但足夠強大讓應用自動更新,確保用戶端上運行的總是最新版本。

設計用戶界面

在深入了解更新之前,Tim 構建了一個基本的 WPF 介面。 他創建了一個網格布局,並在右上角放置一個更新按鈕。

最初,一個放置錯誤的元素導致錯誤,但 Tim 利用它提醒觀眾佈局層次在 WPF 中的重要性。 一旦糾正後,安裝應用程式的介面看起來乾淨可調整大小——展示了 Velopack 在像 WPF 這樣流行框架中的卓越工作。

然後,他添加了一個 StackPanel,其中包含一個文本框 (mainTextBox) 和一個提交按鈕 (submitButton)。 當應用運行時,它顯示了一個簡約的工作 UI。 這個小專案稍后將用於展示自動應用更新。

實施更新按鈕

現在 Tim 轉向功能。 他雙擊更新按鈕以生成其點擊事件。 這將成為自動更新框架的核心。

他解釋說,您可以將過程分為三個階段——檢查、下載和應用更新——但在此演示中,他將所有三個階段合併到一個事件中,使其簡單明瞭。

編寫更新邏輯

在 MainWindow.xaml.cs 中,Tim 創建了一個新的 UpdateManager 並將其指向一個將充當更新來源的本地路徑:

var mgr = new UpdateManager(@"C:\temp\DeployDemoServer");
var mgr = new UpdateManager(@"C:\temp\DeployDemoServer");

在實際使用中,這個路徑可能是一個面向外部應用的 HTTPS URL,或用於內部分發的本地文件共享。 Velopack 不需繁重的配置——它在任何環境中無縫運作。

然後,Tim 添加異步代碼來處理版本檢查和更新:

var newVersion = await mgr.CheckForUpdatesAsync();

if (newVersion == null)
{
    MessageBox.Show("You are on the latest version.");
    return;
}

await mgr.DownloadUpdatesAsync(newVersion);
await mgr.ApplyUpdatesAndRestartAsync(newVersion);
var newVersion = await mgr.CheckForUpdatesAsync();

if (newVersion == null)
{
    MessageBox.Show("You are on the latest version.");
    return;
}

await mgr.DownloadUpdatesAsync(newVersion);
await mgr.ApplyUpdatesAndRestartAsync(newVersion);

這段代碼檢查更新版本,下載增量包,並立即應用它們。 Velopack 會處理所有事情——應用在更新完成後自動重啟。

他解釋說,雖然此演示使用按鈕點擊,但開發者也可以在啟動時靜默或自動觸發這些更新,就像專業軟體一樣。

發布應用程式

接下來,Tim 展示如何發布第一個版本。 在專案文件夾中的終端中,他運行:

dotnet publish --self-contained -r win-x64 -o ./publish

這會生成一個包含 .NET 執行時的自包含構建。這意味著應用程式在任何終端使用者的機器上運行,而無需單獨安裝 .NET。

Tim 展示了編譯輸出 — publish 目錄中的 DeployDemo.exe 文件,確認其運行正常。 此時,它只是編譯器輸出 — 尚未封裝為可安裝版本。

創建安裝包

為了將發布的文件變成可部署安裝程式,Tim 使用 Velopack 的 pack 命令:

vpk pack --pack-id DeployDemo --pack-version 1.0.0 --pack-directory ./publish

這會創建一個 Releases 文件夾,包含所有必要文件,包括安裝程式可執行文件。

Tim 將發布文件複製到本地"伺服器"文件夾。 運行生成的安裝文件完全安裝應用程式 - 它創建快捷方式、在程序和功能列表中添加一個條目,並提供本地安裝體驗,而無需額外的權限或 UAC 提示。

現在,應用程式是一個由 Velopack 驅動的正式可安裝應用。

更新應用程式

為模擬更新,Tim 修改了提交按鈕的代碼:

MessageBox.Show($"Hello {mainTextBox.Text}");
MessageBox.Show($"Hello {mainTextBox.Text}");

然後,他通過重複相同的發布和打包命令但使用更新的版本號來重新打包應用程式:

vpk pack --pack-id DeployDemo --pack-version 1.0.1 --pack-directory ./publish

Velopack 自動創建增量包(針對現有用戶的微小差異文件)和新安裝的完整包。 Tim 指出,雖然完整包約 63 MB,但增量包只有 132 KB - 證明 Velopack 比其他工具或安裝程式框架顯著更快和更高效。

他將新版本複製到伺服器文件夾中,有效地創建 1.0.1 的版本。

應用更新

Tim 重新打開安裝的應用程式並點擊更新按鈕。 在幾秒鐘內,Velopack 下載並應用 1.0.1 更新——自動重新啟動應用程式。

當他輸入他的名字並點擊提交時,現在顯示"Hello Tim." 更新框架工作得很快,證明 Velopack 輕鬆集成,並完美地處理整個更新循環。

他指出,開發人員可以將這些發布託管在 Azure、文件存儲或 web 存儲庫上,並且相同的自動更新邏輯仍然適用於 Windows、Linux 或 macOS。

簡化的維護和靈活性

Tim 強調這一過程如何使桌面應用維護變得極其簡單。 開發人員可以使用最低限度的配置和無需外部依賴項的全自動更新功能部署內部工具或公共軟體。

Velopack 為 .NET 開發者提供了熟悉的 API,並處理每個步驟:

  • 發布構建

  • 助建套件

  • 創建版本

  • 應用更新

  • 清潔卸載

所有這些都在不需要複雜構建管道或深度配置文件的情況下發生。

Tim 稱 Velopack 是一個了不起的工具,幫助開發者節省寶貴時間,同時提供完美的專業軟體。 這是一個跨平台更新的框架,"簡單就行。"

卸載和版本追踪

Tim 演示已安裝的應用程式出現在 Windows 的"卸載或更改程序"列表中,顯示版本 1.0.1。移除它是無縫的 — Velopack 只是刪除文件夾,不留任何殘餘。

他補充說,Velopack 不僅對 WPF 適用,還適用於 WinForms、UNO Platform,甚至較舊的 .NET Framework 4.6.2 專案。 它還與其他流行框架和語言如 Rust 或 JavaScript 相容,成為跨平台安裝程式的通用解決方案。

結束語

結束時,Tim 表達了他對 Velopack 性能的極大印象。 只需幾步 — 安裝工具,添加一行代碼,運行兩個命令 — 開發者就可以從一個普通的 .NET 專案到一個完整可安裝的、自動更新的跨平台應用程式。

他極力感謝 Velopack 開發者所建造的如此偉大的工程,稱其可能是目前市場上跨平台桌面應用最佳的安裝和更新框架。

Tim 最後提醒觀眾,所有細節、命令和源代碼都在視頻描述中提供。 他鼓勵開發者討論想法、請求功能,並通過公共存儲庫為專案的未來做出貢獻。

Hero Worlddot related to 快速使用Velopack部署和更新C#桌面應用
Hero Affiliate related to 快速使用Velopack部署和更新C#桌面應用

通過分享您所愛的東西賺得更多

您是否在為使用.NET、C#、Java、Python或Node.js的開發者創建內容?將您的專業知識轉化為額外收入!

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我