【Visual Studio (2022)】初級者向 デスクトップアプリをClickOnceで発行する

Visual Studio 2022で作成したアプリケーションを発行(Publish)する方法は何種類かありますが、本ブログではClickOnceを使ってインストーラー形式で配布する方法を紹介します。

ClickOnce(クリックワンス)とは

アプリ配布方法のひとつで、以下のメリットがあります。

  1. ワンクリックでインストール可能(setup.exe
  2. 自動アップデート対応
  3. スタートメニューに登録される

インストーラー形式にすると、エンドユーザーが簡単にインストール・更新できるようになり、業務用アプリではとても利便性が高い方法です。

ClickOnce(クリックワンス)発行手順

発行メニューを開く

Visual Studio 2022を起動し、ClickOnceで配布したいプロジェクト(サンプルプログラムTest_OnceClick)を開きます。

次に、ソリューションエクスプローラーで、プロジェクトを右クリックし、「発行」を選択します。

発行ターゲットフォルダを指定する

「発行プロファイル」の画面が表示されるので、「発行プロフィルの追加」をクリックします。

以前に発行プロファイルを構成した場合は、[発行] ページが表示されます。
フォルダーを選択して「次へ」をクリック。

「ClickOnce」を選択して「次へ」。

ここで「発行するターゲットフォルダ(共有フォルダ/Web)」を指定して「次へ」進みます。

アプリケーションインストール方法の指定

ここでは、下図の「UNCパスまたはファイル共有から」を指定し、UNCパスには「発行場所の共有フォルダ名」を入力します。

Webサイトに上げた場合は、WebサイトのURLを指定します。

発行の設定とオプション

発行するターゲットフォルダを変更しない限り、インストールフォルダ(ターゲットフォルダ)から更新プログラム(バージョンアップや不具合修正プログラム)を入手できます。

更新プログラムに別の場所を使用したい場合は、[設定の更新] リンクを使用して、他のインストール場所を指定します。

「リビジョンを自動的にインクリメントする」に✔をいれましたが、用途に応じて設定下さい。

ClickOnce マニフェストへの署名

マニフェストとは?

ClickOnceでは、アプリの信頼性や改ざん防止のために「マニフェスト」にデジタル署名を付けることができます。
これは、アプリが 改ざんされていないことを証明する仕組みです。

具体的にデジタル署名とはアプリケーションの「構成情報」「信頼情報」を記述したXML形式のファイルの事をいい、具体的には下記の2種類の内容となっています。

  1. アプリケーションマニフェスト
    • 実行ファイルの名前・バージョン
    • 依存するDLLやファイル一覧
    • 必須コンポーネントの情報
  2. デプロイメントマニフェスト
    • アプリケーションの発行URL
    • アップデートポリシー(自動更新など)
    • オフライン利用可否設定

マニフェストに署名するとどうなるのか?

マニフェストに「デジタル署名」を付けると、そのアプリケーションが改ざんされていない事を証明できます。

署名するとマニュフェスト内に「署名ブロック(デジタル署名)」 が埋め込まれ、アプリ実行時にその署名が有効かどうかが検証されます。

マニフェストに署名しない場合

署名しない場合の典型的な現象を以下に示します。

  1. インストール時
    • 「発行元を確認できません」「危険な可能性があります」などの警告が表示される
  2. Windows SmartScreenにブロックされることもある
  3. ユーザーが「続行」を選ばない限りインストールできない

デジタル証明書の作成

デジタル証明書には「自己署名証明書」や「コード署名証明書」等、いくつか種類がありますが、ここでは主にテスト用で使用する「自己署名証明書」の作成方法を紹介します。

  • 「ClickOnce マニフェストに署名する」にチェックを入れ、「テスト証明書の作成」をクリックします。
  • 「テスト証明書の作成」画面で、パスワードを入力し「OK」をクリックします。デジタル証明書は自動的に「Test_OnceClick_TemporaryKey.pfx」という名称でプロジェクトフォルダ内に生成されます。

自分の環境下では下記エラーが表示されましたが、「ファイルから選択」をクリックすると「自己署名証明書」が作成されていました。

作成した「自己署名証明書」を署名として使用する

作成した「自己署名証明書」を、「Test_OnceClick」アプリの証明書として設定します。

「ファイルから選択」をクリックして「Test_OnceClick_TemporaryKey.pfx」を開きます。

パスワードを聞いてくるので、パスワードを入力して「OK」をクリックします。

取り込んだ証明書の内容が下記のように表示されます。

「自己署名証明書」を信頼済みにする

取り込んだ証明書を「信頼済」の証明書にします。このままで「発行」しても、インストール時「発行元を信頼できません」というメッセージが表示されます。

  • 上図赤枠下の「詳細…」をクリックして「証明書」の内容と状態を表示します。
    • 「このCAルート証明書は信頼されていません。…」と表示されているので、証明書を「信頼されたルート証明機関のストアにインストール」します。
  • 「証明書のインストール」ボタンをクリックします。
  • 「ローカルコンピュータ」を選択し「次へ」をクリック
  • 「証明書を全て次のストアに配置する」を選択し、「参照ボタン」で、「信頼されたルート証明機関」を指定して「次へ」をクリック
  • 「証明書のインポートウィザードの完了」画面が表示されるので、「完了」をクリックしてインストールを完了させます。
  • 「OK」をクリック

このままでは「自身のローカルPC」にしか信頼済みにならない為、配布先PCにも信頼させる(社内や限定公開向け)ようにします。

  • 「証明書のインストール」ボタンをクリックします。
  • 「ローカルコンピュータ」を選択し「次へ」をクリック
  • 「証明書を全て次のストアに配置する」を選択し、「参照ボタン」で、「信頼された発行元」を指定して「次へ」をクリック
  • 「証明書のインポートウィザードの完了」画面が表示されるので、「完了」をクリックしてインストールを完了させます。
  • 「OK」をクリック

以上で、「自己署名証明書」を信頼済みにする作業は終了です。

「自己署名証明書」の内容を確認

「マニフェストの署名」画面の「ファイルから選択」をクリックして「自己署名証明書」を表示します。下図のように認証されていればOKです。

「構成」の設定

「マニフェストの署名」が終了したら「構成」設定します。Windows 限定ならば下記設定で大丈夫でしょう。

  • 「配置モード」=「自己完結型」
    • .NET ランタイムを含めて配布するためどのWindowsでも動作可能。

設定したら「完了」クリックします。

デスクトップアプリを発行する

「発行」準備が完了すると下記のように、「発行プロファイルが作成されました」とメッセージが表示されます。

「閉じる」をクリックします。

以上で「発行」の準備が完了したので、
「発行」ボタンをクリックしてデスクトップアプリを発行します。

「発行」が成功すると「公開が成功しました」とメッセージが表示され、「ターゲットフォルダ」には図に示すように2個のファイルと1個のフォルダが作成されます。

デスクトップアプリのインストールと実行

インストールは、「ターゲットフォルダ」内の「setup.exe」を実行して行います。インスト―ル中のダイアログが表示され、インストールが完了するとプログラムが起動します。

起動したプログラムを操作して正常に動作すれば成功です。

インストールしたプログラムは「メニュー」に登録されます。

バージョンアップ時のインストール

  • プログラムを修正したら、バージョンアップを確認して再発行します。
  • ユーザーはバージョンアップを意識する事なく通常どうりプログラムを起動します。
  • 起動すると下記のメッセージが表示されるので、「OK」をクリックする事で新バージョンの使用が可能となります。

タイトルとURLをコピーしました