GitHub にホストしている Windows デスクトップアプリを ClickOnce で配布する

執筆日時:

せっかく作ったツールだけど、アップデートのたびに毎回 ZIP ファイルをダウンロードして展開してユーティリティフォルダーにコピーして……という作業が面倒だったので、ClickOnce で配布することにした。

自分で ClickOnce の公開用サーバーを用意するのは面倒なので、できれば ClickOnce のセットアップファイルも GitHub に置きたい。やり方がわかんないので StackOverFlow さまにお伺いを立ててみた。

さすがやでぇ。以下はそれを試してみたよっていう話。

1. とりあえずローカルに発行してコミットする

まず、プロジェクトプロパティの[公開]タブで、ClickOnce の発行を行う。発行先は初期設定の publish\ でいいかと。

Visual Studio 向けの .gitignore を利用している場合は、あらかじめ Click-Once 関連の設定をコメントアウトしておくとよい。

# Click-Once directory
# publish/

ついでに .gitattributes も編集しておく。

*.manifest binary
*.application binary
*.deploy binary

これをコミットして GitHub にプッシュしておく。

2. ClickOnce のインストール フォルダーの URL を変更

GitHub に publish フォルダーがちゃんとアップロードされているのを確認。

f:id:daruyanagi:20160830051004p:plain

ここからセットアップファイルの Raw URL を取得しておく。今回は

だった。

次にプロジェクトのプロパティ画面の[公開]タブに戻り、ClickOnce のインストール フォルダーの URL を変更する。

f:id:daruyanagi:20160830050910p:plain

先ほど取得した Raw URL を cdn.rawgit.com に書き換えたり、blob を消したりごにょごにょ。

cdn.rawgit.com だと ClickOnce 関連のファイルの Content-Type が適切に設定されているみたいで、インストールがうまくいく。

f:id:daruyanagi:20160830051329p:plain

これを保存、発行、コミット、プッシュして、GitHub からセットアップファイルをダウンロード・実行すると、ちゃんとインストール処理が始まるはず。

インストール フォルダーの URL を設定すれば、アップデートの自動チェックも利用できるようになる(/・ω・)/

追記(2016/08/31)

cdn.rawgit.com は一度キャッシュした URL を更新しないようなので、実際には branch や tag を使って新しい URL を生成し、それをインストール フォルダーの URL にする必要があるみたい。コツをつかんだら自動化したいな……。


追伸

Aoba の ClickOnce 発行でエラーが出るのでぐぐったら、昔の自分のブログを発見。

メモは大事。