17
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.NET9のWPFアプリを爆速で作る アップデート編

Last updated at Posted at 2025-03-01

概要

Windowsアプリを作成するにあたり、アップデート機能は煩わしいポイントの1つです。
そんなアップデート機能を、手間なく実装する方法を紹介します。

サンプルコード

方法

アプリ側

AutoUpdater.NETを使用します。

AutoUpdater.NETは、NuGetパッケージから追加できます。

スクリーンショット 2025-02-27 102946.png

パッケージ追加後、UIスレッドからAutoUpdater.Start()を呼び出します。
以下のように記述すると、メインウィンドウがロードされた後に、バージョンアップがあればバージョンアップの通知ダイアログが表示されるようになります。

MainWindow.xaml.cs
using System.Windows;
using AutoUpdaterDotNET;

namespace WpfApp1.Views
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            Loaded += MainWindow_Loaded;
        }

        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            // FIXME: AutoUpdater.NETのサンプルなので、アップデートサーバーに配置したXMLを指定してください
            AutoUpdater.Start("https://rbsoft.org/updates/AutoUpdaterTest.xml");
        }
    }
}

基本的なアプリ側の設定としては、これだけです。

スキップボタンを非表示にしたり、後でボタンを非表示にしたり、強制的にアップデートさせる設定があります。
各種設定については、AutoUpdater.NETのREADMEに詳しく記載されています。

あとは、アップデートサーバーにXMLファイル、リリースノート、インストーラーを配置するだけで完了します。

アップデートサーバー側

XMLファイル

アップデートの情報が記述されたファイルです。
このファイルをアプリが読みに行きます。
最低限必要な情報は、バージョンと、インストーラーのURLです。

UpdateInfo.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- AutoUpdater.NETのREADMEから抜粋 -->
<item>
  <version>2.0.0.0</version>
  <url>https://rbsoft.org/downloads/AutoUpdaterTest.zip</url>
  <!-- リリースノートの場所を指定するchangelogは任意らしい -->
  <changelog>https://github.com/ravibpatel/AutoUpdater.NET/releases</changelog>
</item>

インストーラー

XMLファイルのurl要素で指定したURLに、インストーラーを配置します。

リリースノート

XMLファイルのchangelog要素で指定したURLにリリースノートを配置します。

AutoUpdaterの挙動

スクリーンショット 2025-02-27 104225.png

「アップデート」ボタンを押した場合

インストーラーがダウンロードされ、実行されます。

「スキップ」ボタンを押した場合

アップデート可能なバージョンがレジストリ
\HKEY_CURRENT_USER\Software\<CompanyName>\<AssemblyName>\AutoUpdater\SkippedVersion
に書き込まれます。

AutoUpdaterの設定で、特定のJSONファイルに書き込むよう変更できます。

このバージョンでは、自動アップデートのダイアログが表示されなくなります。

image.png

「後で」ボタンを押した場合

以下のダイアログが表示され、「OK」を押すとレジストリ
\HKEY_CURRENT_USER\Software\<CompanyName>\<AssemblyName>\AutoUpdater\RemindLaterAt
に書き込まれます。

AutoUpdaterの設定で、特定のJSONファイルに書き込むよう変更できます。

書き込まれた時刻までは、自動アップデートのダイアログが表示されなくなります。
image.png

image.png

つづく

17
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?