アプリケーションを ClickOnce で発行する

// この投稿は Windows & Microsoft技術 基礎 Advent Calendar 2015 の 12 日目の記事です。

ClickOnce とは、Windows 上のデスクトップ アプリケーションをネットワーク経由でインストールするための配置テクノロジです。
(ファイル システムからオフラインでインストールすることもできます。USB や DVD 経由なども含みます。)
正確には、ネットワークの有無を吸収して統一的にインストールするための仕組みと言ったほうがよいでしょう。
配置できるアプリケーションには WPF のほか、Windows フォームやコンソール アプリケーションなども含まれます。
ユーザーからすれば、インストーラーをいったんダウンロードする手間が省けます。
また、アプリケーションをアップデートするための仕組みも備わっています。

では、新規で WPF アプリケーション プロジェクトを作成しましょう。
これを最も簡単に ClickOnce で発行するには、[ソリューション構成] を Release に変更して、
プロジェクトのプロパティを開いて [公開] タブの [今すぐ発行] をクリックします。

image

これでアプリケーションが publish フォルダーに発行されました。

image

.application ファイルがエントリ ポイントとなっているので、
これをダブルクリックすればアプリケーションをインストールできます。

image

インストールが完了すれば、スタート メニューからアプリを起動できるようになります。

image

上記ではローカルのファイル システムからインストールしましたが、
ネットワーク経由にする場合も同じフォルダー構成で Web サーバーやファイル サーバーに配置しておき、
ブラウザーやエクスプローラーで .application の URL にアクセスすれば同じようにインストールできます。

 

証明書による署名

さて、上記の手順ですぐに発行すると、証明書に関する手順が省略されます。
実はこのプロセスの中で自動的に、有効期間が 1 年でパスワードの設定されていない自己署名の PFX ファイルが作成され、
さらにそれが証明書ストアの [個人] にインストールされています。

image

image

この PFX ファイルを [信頼されたルート証明機関] にもインストールしておくと、発行元が表示されるようになります。
(実際にクライアント PC に証明書をインストールするときは CER ファイルを使うほうがよいでしょう。)

image

さらに、これを [信頼された発行元] にもインストールすると、このダイアログが現れずにアプリケーションがインストールされます。

なお、PFX ファイルを含めたソース一式を他のコンピューター上でビルドすると、
PFX にパスワードが設定されていなければ、自動的に証明書ストアにインストールされます。
パスワードが設定されている場合は、[署名] タブなどからあらかじめインストールしておかないとビルドに失敗します。

 

コマンドからの発行

次のように、MSBuild.exe で発行することもできます。

msbuild WpfApplication1.csproj /p:Configuration=Release /t:Publish

.NET ビルド小技集 (4) で書いた方法と組み合わせれば、バージョン番号のインクリメントも含めて自動化できそうです。
なお、発行のバージョンとアセンブリのバージョンには関連がありません。

 

オプション

(1) アップデートについて

アプリケーションのアップデートを有効にするには、[公開] タブの [更新] をクリックして、各項目を設定します。
また、[公開] タブにある [インストール フォルダーの URL] も設定します。

image

なお、更新を有効にしなくても、手動での更新はできます (.application にアクセスするだけ)。
また、[プログラムと機能] から、1 世代前までロールバックができます。

 

(2) 表示名について

[公開] タブの [オプション] をクリックして、各項目を設定します。

  • 発行者名 インストール時のルート フォルダーの名前となります。
  • スイート名 ルート フォルダーとアプリケーションの間のフォルダーの名前となります。省略可能です。
  • 製品名 アプリケーションの名前となります。

image

Windows 8 以降、スイート名のフォルダーは表示されなくなりました。

ClickOnce-StartMenu-10

 

Git の設定

発行されたファイルを Git 経由で共有する場合 (GitHub Pages でホストするときなど) は注意が必要です。

Git は既定で、コミット時にテキスト ファイルの改行コードを LF に変換します。
しかし、ClickOnce はインストール時にダウンロードしたすべてのファイルのハッシュを検証するため、
ファイルが変更されてしまうとインストール時にエラーが発生します。
この場合、.manifest や .application などの XML ベースのファイルが該当します。

そこで、以下のように設定を変更します。

(1) config

config で core.autoCRLF を false に設定します。

$ git config --global core.autocrlf false

次のコマンドで設定を確認できます。

$ git config --list

(2) .gitattributes

config よりも、各リポジトリの .gitattributes が優先されます (Visual Studio などにより生成されます)。
.gitattributes ファイル内で text=auto となっている部分を次のように編集します。

text=false

 

さて、今回は自動生成された証明書を使いましたが、次回は既存の証明書を使って ClickOnce で発行する方法についてです。
前回: 証明書を作成する
次回: 既存の証明書を使って ClickOnce で発行する

バージョン情報
.NET Framework 4.5
Visual Studio 2013, 2015

参照
ClickOnce のセキュリティと配置
連載 ClickOnceの真実:第7回 ClickOnceが持つセキュリティ機構とは?

Windowsでgitを使う場合の改行コード自動変換がうざい
git での改行コード
Gitのcore.autocrlfについて
WindowsのGitクライアントSourceTreeのインストールと初期設定

カテゴリー: .NET Framework, ツール. タグ: . 2 Comments »

コメント / トラックバック2件 to “アプリケーションを ClickOnce で発行する”

  1. 既存の証明書を使って ClickOnce で発行する | Do Design Space Says:

    […] 前回のアプリケーションを ClickOnce で発行するでは、ClickOnce を使うための基本的な方法を紹介しました。 […]

  2. 証明書を作成する | Do Design Space Says:

    […] アプリケーションを ClickOnce で発行する 次々回: 既存の証明書を使って ClickOnce […]


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。