mamori017.log

歴史的クソブログ

ClickOnceアプリケーションの配布をGitHub Pagesでできないか試したら警告が来た

ClickOnceアプリケーションの配布はHTTPで更新ファイルを参照できさえすれば動作するはず。 それならGitHubリポジトリ上でも実現できるのではないかと思ったのでやってみました。

といっても既にGitHubでの運用を検討されている方はおられるわけで。 どうやらリポジトリにプッシュしたファイルを参照する場合、応答ヘッダが異なるため上手くいかないようです。

devadjust.exblog.jp

GitHub Pages

それなら、(多分大丈夫だろうと思いつつ)GitHub Pages上に配布ファイルを配置した場合の動作はどうなのか。

以前はリポジトリGitHub Pages用のgh-pagesブランチを切ったうえでHTMLファイルなりを配置する必要がありました。 この状態だとコードはmasterブランチ、ClickOnceで配布するファイルはgh-pageブランチへプッシュする必要があるのですが、 現在はmasterブランチ上でGitHub Pagesも管理できるようになっています。

masterブランチでGitHub Pagesを管理する方法

リポジトリのSettings→GitHub Pagesでmaster branchを選択し、リポジトリルートにdocsディレクトリを作成します。 この/docsディレクトリ配下にHTMLファイルなりを配置し、https://(user_name).github.io/(repository_name)にアクセスすると、リポジトリGitHub Pagesが表示されるようになります。

ClickOnceアプリケーションの配置

コードブランチとGitHub Pagesブランチを分ける必要が無いのであれば、ClickOnceの発行先を/docs配下に設定し、 ビルドとClickOnceのアプリケーション発行後にリポジトリにプッシュすれば大した手間もかからずアプリケーションの配布環境が構築できるはずです。

GitHub Pages用ディレクトリ(ClickOnceアプリケーションの配布環境)を含んだmasterブランチの構成を以下の状態にしてmasterブランチへプッシュしてみます。

/ClickOnceApp(master)
┝.git
┝/ClickOnceApp(アプリケーション)
┝/docs(GitHub Pages配置ディレクトリ・ClickOnce配布用)
|┝Application Files
|┝ClickOnceApp.application
|┗setup.exe
┝.gitattributes
┝.gitignore
┝ClickOnceApp.sln
┝LICENSE
┗README.md
GitHubから警告メールが届く

上記の構成でリポジトリにプッシュしたところ、ClickOnceでのアプリケーションアップデートを実施することができました。 ビルドついでに発行するだけなので手間にもならないしこれはこれで良いのではと思ったのですが、 リポジトリへのプッシュ直後にGitHubから警告のメールが届いていました。

GitHub Pagesでバイナリファイル公開しているならRelease機能を使いなさいとのこと。その通りなので何とも言えません。*1 ちなみに、リポジトリ内にバイナリファイルがあるとプッシュするたびに警告メールが届きつづけるみたいです。

The page build completed successfully, but returned the following warning for the master branch:
 
It looks like you're using GitHub Pages to distribute binary files. We strongly suggest that you use releases to ship projects on GitHub. Releases are GitHub's way of packaging and providing software to your users. You can think of it as a replacement to using downloads to provide software. We found the following file(s) which may be a good candidate for releases: package/setup.exe. For more information, see https://help.github.com/articles/about-releases/.
 
For information on troubleshooting Jekyll see:
 
https://help.github.com/articles/troubleshooting-jekyll-builds
 
If you have any questions you can contact us by replying to this email.

結論

ClickOnceのアプリケーション配布自体は可能だったのですが、GitHubが推奨する使用方法ではないのでやるべきではないです。

配布するアプリケーションバージョン管理が必要になったら、CodeCommitからS3にデプロイするのが現実的に考えて楽なのかなと思っています。何となく。

dev.classmethod.jp

警告でアカウントがBANされても困るのでGitHubのサポートにメールで謝っておきました。

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉

*1:rawgitというサービスを使えばReleaseにアップしたデータを参照できるらしい。