IRONSOFTWAREHOME

Velopackを使用してC#デスクトップアプリを迅速にデプロイおよび更新する

Velopack を使用した C# デスクトップ アプリの迅速なデプロイと更新

Tim Corey

32 分 25 秒

クロスプラットフォームデスクトップアプリケーションのデプロイと更新は、従来の開発の最も厄介な部分の 1 つでした。 しかし、ティム・コーリー氏がビデオ"Deploy and Update C# Desktop Apps Fast with Velopack"で説明しているように、このプロセスは非常に簡単になりました。

Velopack は、パッケージのビルドからアップデートの適用まですべてを処理するように設計された素晴らしいツールで、開発者は、複雑なビルドパイプラインや無限の設定ファイルなしで、1 つのコマンドを使用してアプリケーションを作成、デプロイ、保守できるようになりました。

この記事では、Velopackを使用して標準的なC# WPFアプリを自己更新可能なポータブル・パッケージに変換する方法について、Timの32分のチュートリアル全体を詳細にウォークスルーします。 また、ネイティブのパフォーマンスを維持しながら、自動移行、コード署名、複数のプラットフォーム用のゼロコンフィグセットアップをどのようにサポートするかについても見ていきます。

はじめに:なぜVelopackなのか?

ティムはまず、デスクトップ・アプリケーションのデプロイとアップデートは難しいことではなく、むしろ "とても簡単 "なのだと説明する。このビデオでの彼の目標は、WPFアプリケーションをパッケージ化し、インストーラを作成し、最小限の設定で自動アップデートを可能にすることで、Velopackがどのようにプロセスを簡素化できるかを示すことです。

これはWPFに限ったことではなく、WinForms、コンソールアプリ、あるいはJava、Rust、C#のような.NET以外のソフトウェアにも同じプロセスが有効であると彼は強調する。 Velopack はほぼすべての言語またはフレームワーク用のパッケージを構築することをサポートし、今日クロスプラットフォームアプリケーション向けに利用可能な最良のインストーラーフレームワークの 1 つです。

WPFプロジェクトの作成

Timは、Visual Studio 2022で、DeployDemoという名前のシンプルなWPFプロジェクトを作成します。 このプロジェクトは.NET 9をターゲットにしていますが、彼が指摘するように、.NET 10などの新しいバージョンでも完璧に動作します。

この最初のビルドは、デプロイとアップデートの完全なプロセスを示すための小さなアプリケーションです。 彼が WPF を使用しますが、Velopack はクロスプラットフォームデスクトップアプリケーションにも同様に適しているため、すべての種類の .NET および非 .NET プロジェクトへの一体型アプローチになります。

グローバル ツールとして Velopack をインストールする

次に、ティムは端末を開き、こう入力する:

.NETツールインストール -g vpk
Text

このコマンド1つでVelopackがシステム上にグローバルにインストールされ、開発者はどこからでもVelopackコマンドを実行できるようになります。

Tim はこれを"秘密のソースステップ"と呼び、Velopack がプロジェクトのコンパイラ出力を取り込み、自己更新可能なポータブルパッケージに変換するためです。 このステップはアプリにプロフェッショナルなインストーラーと自動更新フレームワークを提供します。

コマンドラインはセットアップを簡素化するだけでなく、CI/CDパイプラインに簡単に統合できるため、開発者はスクリプトを追加することなく、パッケージング、リリース作成、デプロイを自動化できると説明する。たった1つのコマンドで自動化できることは、開発者が一貫したビルドを維持しながら貴重な時間を節約できることを意味する。

VelopackのNuGetパッケージをインストールする

Visual Studioで、TimはManage NuGet Packagesを開き、Velopackパッケージをインストールします。

彼は、Velopackは以前人気があったインストーラフレームワークであるSquirrelの後継であると説明しています。 Squirrel を使用していた場合、Velopack は既存の設定を自動で移行し、信頼性が向上し、ビルドが大幅に早くなり、クロスプラットフォーム互換性が強化されます。

Velopackは、C#、Rust、C++、JavaScriptなどのさまざまなプログラミング言語をサポートし、Windows、Linux、macOS用のデスクトップインストーラを作成できます。 システム全体でうまく機能するクロスプラットフォームアプリケーションデプロイメントのフレームワークです。

ティムは、Velopackが完全に無料で使用できることを強調しています。サブスクリプションやライセンス料は不要ですが、商用ソリューションに匹敵するプロフェッショナルなインストーラフレームワークを提供します。

コードで Velopack を初期化する

App.xaml.csファイルでは、ティムはコンストラクタを追加し、わずか数行のコードでVelopackを初期化しています:

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

このゼロコンフィグ設定により、アプリは直ちにVelopackの自動アップデートフレームワークに接続されます。 これはまだアップデートをチェックするものではありませんが、Velopackがアップデートとインストールを管理し始める後のステップで、Velopackのパフォーマンスを可能にするものです。

ティムは、このセットアップがシンプルであっても、アプリを自己更新するのに十分強力であり、ユーザーがエンドユーザーのマシンで常に最新バージョンを実行できるようにすると説明しています。

ユーザーインターフェイスの設計

アップデートについて深く掘り下げる前に、ティムは基本的なWPFインターフェースを構築します。 彼はグリッドレイアウトを作成し、右上に更新ボタンを配置します。

当初、要素の配置ミスでエラーが発生しましたが、ティムはそれを利用して、WPFにおけるレイアウト階層の重要性を視聴者に再認識させています。 修正後、インストール可能なアプリケーションのインターフェイスは、WPFのような一般的なフレームワークでVelopackがどのように機能するかを示す、すっきりとしたリサイズ可能なものになりました。

次に、テキストボックス(mainTextBox)とSubmitボタン(submitButton)を含むStackPanelを追加します。 アプリを実行すると、最小限の動作するUIが表示されます。 この小さなプロジェクトは、後にアップデートが自動的に適用されることを示すために使用されます。

更新ボタンの実装

さて、ティムは機能性に移ります。 彼は、Update ボタンをダブルクリックして、クリックイベントを生成します。 これは自動更新フレームワークの中核となります。

彼は、プロセスを3つの段階(チェック、ダウンロード、アップデートの適用)に分けることができると説明しますが、このデモでは、3つのイベントを1つにまとめてわかりやすくしています。

更新ロジックの記述

MainWindow.xaml.cs で、Tim は新しい UpdateManager を作成し、更新ソースとなるローカル パスを指定しています:

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

実際の使用では、このパスは外部向けアプリケーション用の HTTPS URL または内部配布用のローカルファイル共有になる可能性があります。 Velopackは重い設定を必要とせず、どちらの環境でもシームレスに動作します。

その後、ティムはバージョンチェックとアップデートを処理するための非同期コードを追加します:

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がすべてを引き受けます。アップデートが完了すると、アプリは自動的に再起動します。

彼は、このデモではボタンクリックを使用していますが、開発者は、Professionalなソフトウェアと同様に、これらのアップデートをサイレントまたは起動時に自動的にトリガーすることもできると説明しています。

アプリケーションの公開

次に、Timは最初のバージョンを公開する方法を示します。 プロジェクトフォルダ内のターミナルを使って、彼は実行する:

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

これにより、.NETランタイムを含む自己完結型のビルドが生成されます。つまり、アプリケーションは、.NETを別途インストールすることなく、エンドユーザーのマシン上で実行されます。

Timは、コンパイルされた出力(DeployDemo.exeファイル)をパブリッシュディレクトリに表示し、正しく実行されることを確認しています。 現時点では、コンパイラの出力だけで、パッケージ化されたインストール可能なバージョンではありません。

インストーラー パッケージの作成

公開されたファイルをデプロイ可能なインストーラにするために、TimはVelopackのpackコマンドを使用します:

vpk パック --pack-id DeployDemo --pack-version 1.0.0 --pack-directory ./publish
Text

これにより、セットアップ実行可能ファイルを含む、必要なすべてのファイルを含む Releases フォルダが作成されます。

Timは、リリースファイルをローカルの"サーバー"フォルダにコピーします。 生成されたセットアップファイルを実行すると、アプリが完全にインストールされます。ショートカットが作成され、[プログラムと機能]リストにエントリが追加され、余分な許可やUACプロンプトが表示されないネイティブなインストール体験が提供されます。

現在、このアプリはVelopackによって公式にインストール可能なアプリケーションとなっています。

アプリケーションの更新

更新をシミュレートするために、ティムはSubmitボタンのコードを変更します:

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

その後、同じpublishコマンドとpackコマンドを繰り返し、アプリをリパッケージします:

vpk パック --pack-id DeployDemo --pack-version 1.0.1 --pack-directory ./publish
Text

Velopackは、デルタパッケージ(既存ユーザー用の小さな差分ファイル)と新規インストール用のフルパッケージを自動的に作成します。 ティム氏は、フルパッケージが約63MBであるのに対し、デルタパッケージはわずか132KBであることを指摘しています。これは、Velopackが他のツールやインストーラフレームワークよりも大幅に高速で効率的であることの証拠です。

彼は新しいリリースをサーバーフォルダーにコピーし、バージョン1.0.1のリリースを効果的に作成します。

アップデートの適用

ティムはインストールしたアプリケーションを再び開き、更新ボタンをクリックします。 Velopackは数秒で1.0.1アップデートをダウンロード、適用し、アプリを自動的に再起動します。

彼が自分の名前を入力して Submit を押すと、"Hello Tim." と表示されるようになりました。更新フレームワークは軽快に動作し、Velopack が簡単に統合でき、更新サイクル全体を完璧に処理できることが確認できました。

彼は、開発者がこれらのリリースをAzure、ファイルストレージ、またはウェブリポジトリにホストすることができ、同じ自動更新ロジックがWindows、Linux、またはmacOSにまたがって機能することを指摘している。

簡素化されたメンテナンスと柔軟性

ティムは、このプロセスによってデスクトップアプリのメンテナンスが非常に簡単になることを強調しています。 開発者は、最小限の設定と外部依存関係を使用することなく、完全な自動更新機能を備えた内部ツールまたは公開ソフトウェアをデプロイできます。

Velopackは、.NET開発者に使い慣れたAPIを提供し、すべてのステップを処理します:

  • ビルドの公開

  • パッケージの構築

  • リリースの作成

  • アップデートの適用

  • クリーンなアンインストール

複雑なビルドパイプラインや深い設定ファイルを必要とすることなく、これらすべてを実現します。

ティムはVelopackを、開発者が貴重な時間を節約しながら、洗練されたプロフェッショナルなソフトウェアを提供するのに役立つ素晴らしいツールと呼んでいます。 それはクロスプラットフォームアップデートのフレームワークであり、"ただ機能します"。

アンインストールとバージョン追跡

インストールされたアプリがWindowsの"プログラムのアンインストールまたは変更"リストに表示され、バージョン1.0.1が表示されていることをTimが示します。Velopackは単にフォルダを削除するだけで、何も残りません。

また、VelopackはWPFだけでなく、WinForms、UNO Platform、さらに古い.NET Framework 4.6.2プロジェクトでも素晴らしい効果を発揮する、と彼は付け加えている。 また、Rust や JavaScript のような他の人気のあるフレームワークや言語とも互換性があり、クロスプラットフォームインストーラーにとって普遍的なソリューションとなります。

結論

最後に、ティムはVelopackのパフォーマンスに非常に感銘を受けたと述べています。 数ステップ(ツールのインストール、一行のコードの追加、二つのコマンドの実行)で、開発者はプレーンな .NET プロジェクトから完全にインストール可能で自己更新可能なクロスプラットフォームアプリケーションに移行できます。

彼は、このような素晴らしいエンジニアリング作品を作った Velopack の開発者に感謝の意を表し、今日利用可能なクロスプラットフォームデスクトップアプリケーション向けのベストなインストーラーと更新フレームワークである可能性があると述べています。

ティムは最後に、すべての詳細、コマンド、ソースコードは、動画の説明で利用可能であることを視聴者に思い出させます。 彼は、開発者がアイデアを議論し、機能を要求し、公開リポジトリを通じてプロジェクトの将来に貢献することを奨励しています。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。