ClickOnce その2

スタートメニューの登録名を変更する

デフォルトの状態でClickOnceを使うと、インストール時にスタートメニューにはプロジェクト名/プロジェクト名のように登録されます。前回の例ではSuperCatsというプロジェクトを作ったので、SuperCats/SuperCatsのようになります。

この設定の変更はプロジェクトプロパティの発行タブで行います。

005

発行タブページは上図のようになっていて、この中のオプションボタンを押すと、以下の発行オプションダイアログが開きます。

003 

このダイアログ内の発行者名製品名を変更することで、スタートメニューには発行者名/製品名のように登録されます。ここでは、発行者名を「ひげねこ」、製品名を「超猫」とします。

004

この状態で発行されたパッケージをインストールすると、上図のようになります。

配置マニフェストにマシン名とユーザー名が記載されるのを防ぐ

ここでは、デフォルトの状態で配布するパッケージにはパッケージを作ったマシン名と、ユーザー名が含まれている問題を解決する方法を紹介します。これでも構わないと言う人は読み飛ばして下さい。

アプリケーションを発行すると、発行先のフォルダにはアプリケーション名.applicationという配置マニフェストファイルが生成されます。このファイルはXMLファイルで中には発行者の情報が書かれおり、デフォルトの状態では発行者の情報はマシン名/ユーザー名のようになります。

なぜこうなっているかを簡単に説明すると、ClickOnceは発行者が発行したアプリケーションが第三者によって発行者の意図しない変更がされるのを防ぐために電子署名をするようになっていて、配置マニフェストには署名に使われた証明書の発行者名が記載されるようになっているからです。

002

デフォルトでは自動的に電子署名が作られ、上図のようにプロジェクトにテンポラリ証明書が追加されます。

001 

この証明書の詳細は、プロジェクトプロパティの署名タブで見ることができます。上図では、私がテストに使っているノートブックのマシン名とユーザー名が発行者情報になってしまっています。

殆どの場合は問題ないのですが、個人的な情報、例えば彼女やお嫁さん(現実、非現実含む)の名前とかをマシン名やユーザー名に使ってい場合には、その情報をネットに流出するといろいろと問題があるという人も居ると思うのでここでは電子証明書の生成のしかたを紹介します。

個人でゲーム制作をしている場合、電子証明書を取得するには以下の二種類が考えられます。

  1. VeriSignなどの電子証明書発行サービスを利用する(有料)
  2. 自己署名証明書を作る

作ったゲームを商品として販売するには1にするべきですが、ここでは自己署名証明書の作り方を紹介します。ただし、この証明書は誰にでも作ることができるので信頼できる証明書では無いことに注意して下さい。

証明書を作るにはmakecert.exeを使います。このツールは.Net Framework SDKやWindows SDKに付属しています。SDKのコマンドプロンプトを開いて、以下のコマンドを実行します。

makecert -r -n "CN=John Smith" -b 01/01/2008 -e 12/31/2008 -sky exchange -ss my

それぞれのオプションの意味は以下のようになっています。

-r 自己署名証明書を作成
-n X.500 標準に準拠した証書名、ここでは発行者名を"John Smith"としている。
-b 証明書の有効期間開始日 月/日/西暦で表される
-e 証明書の有効期間終了日 月/日/西暦で表される
-sky サブジェクトのキーの種類
-ss 作成した証明書を格納するストア名

ここでは、発行者名を"John Smith"としましたが、自分の好きな名前に変更することができます。また、Windows OSには電子証明書を入れておくストアと呼ばれる金庫のようなものがあり、ここでは生成した証明書をこのストアに格納しています。

証明書を作ったら、プロジェクトプロパティの証明タブにあるストアから選択ボタンを押して以下の証明書選択ダイアログを表示します。

006

  ここに、先ほど作った証明書が表示されるので、使いたい証明書を選びます。署名タブに選択した証明書が表示されているのを確認したら、発行タブを開いて、今すぐ発行ボタンで発行すると配置マニフェストには新しい発行者が記載されることになります。

まとめ

二回に渡って、ClickOnceの使い方を簡単に紹介してきました。ClickOnceはもともと.Net 2.0から導入された.Netベースのアプリケーションを簡単に配布する為の仕組みです。より細かい仕組みについて興味がある人は以下のURLが参考になると思います。

ClickOnceの真実
http://www.atmarkit.co.jp/fdotnet/clickonce/index/index.html

ClickOnceを使うことで手軽にXNA Game Studio 3.0で作られたゲームを配布することができ、配布先でも必須コンポーネントを自動的にインストールしてくれるので、ゲームを遊ぶ側の負担が大幅に減っています。

また、ClickOnceのサポートに伴ってXNA Framework 3.0のランタイムを必須コンポーネントとしてインストーラープロジェクトから参照できるようになったのでClickOnceではサポートされていない細かいカスタマイズを含むインストーラーも作りやすくなっています。