◆ 簡単に使えて自動アップデート機能も使える
◆ VisualStudio Express エディションでも使える
◆ インストールが必須になるので zip で配るような使い方はできない

ClickOnce

VisualStudio でプロジェクトのプロパティを見ると「発行」というタブがあります
このタブは ClickOnce でインストールするアプリケーションを作るためのものです

昔自分でアップデートする仕組みとか作ってたのですが こっちのほうが楽そうだったので使ってみました
これまで使ってなかったのは 昔 Office か何かで ClickOnce が使われていて そのへんで使いづらかったり複雑そうだったり調べてよくわからなかったりとあって ClickOnce 自体にあんまりいいイメージがなかったからです
しかし 自分でアプリケーションを作る側として使ってみると すごくシンプルですしインストールも特に困りませんでした
ただ インストールになるので zip で配布みたいなインストール不要としたいなら向かないです

使い方

まずは新プロジェクトを作ります
とりあえずコンソールアプリケーションで testproj という名前にしました

ClickOnce はあくまでビルド方法やインストール方法の違いになって C# のプログラム自体は特に特別なことをしなくても大丈夫です
発行タブにあるとおりバージョンを設定できるのでそれを表示してみます

[Program.cs]
using System;
using System.Deployment.Application;
using System.Reflection;

namespace testproj
{
internal class Program
{
private static void Main(string[] args)
{
var asm_ver = Assembly.GetExecutingAssembly().GetName().Version.ToString();
var co_ver = ApplicationDeployment.IsNetworkDeployed
? ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString()
: "----";
Console.WriteLine($"assembly version: {asm_ver}");
Console.WriteLine($"clickonce version: {co_ver}");
Console.WriteLine("press any key to continue...");
Console.ReadKey();
}
}
}

System.Deployment が参照に必要です

プロジェクトのプロパティの「発行」タブを開いて 「発行場所」に出力するフォルダを設定します

C:\dev\cs\cotest\

「今すぐ発行」 をクリックするとビルドして設定した場所に出力されます

vsco

設定を変えたいならオプションや発行ウィザードなどを使えばいいです

発行場所に指定したフォルダに

  • Application Files
  • setup.exe
  • testproj.application

が作られます

Application Files はフォルダでバージョンごとのデータが入ります
testproj.application を開くとインストールされて実行されます

アップデート

起動時に自動でアップデートがチェックされるので アップデートは再発行するだけです

初回起動時の結果はこれでした

assembly version: 1.0.0.0
clickonce version: 1.0.0.0

再度発行すると 起動時にアップデートされてこうなりました

assembly version: 1.0.0.0
clickonce version: 1.0.0.1

assembly version は ClickOnce のバージョンとは別で自動では変わらず手動で設定が必要です

インストール先

インストールしたものはスタートメニューに登録されます

C:\Users\USER\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\testproj

このファイルにインストール場所が保存されてます
発行時にローカルパスを指定してインストールフォルダの URL は未指定でしたが 実際にインストールした場所が保存されてました
別の PC の \\win-note にアクセスしてインストールしたら こういう URL が設定されました

file://win-note/public/cotest/testproj.application#testproj.application

発行場所に指定したパスとは全然関係ないところです
たぶん初回インストールの場所がデフォルトの場所になるので それを変えたい場合に指定するものだと思います

ClickOnce でインストールしたデータの実体は

C:\Users\USER\AppData\Local\Apps\2.0

の中に保存されます
アプリケーションごとにランダムぽい名前のフォルダが作られます
今回のアプリケーションだとフォルダの中には

  • testproj.exe.manifest
  • testproj.manifest
  • testproj.cdf-ms
  • testproj.exe
  • testproj.exe.cdf-ms
  • testproj.exe.config

が入ってました