.NET TIPS

多言語対応アプリケーションをClickOnceで配布するには?[VS 2005のみ]

デジタルアドバンテージ 一色 政彦
2006/06/30

ClickOnceの真実 第3回 Visual Studio 2005でClickOnceを極めよう

 .NET Framework 2.0では、「ClickOnce」というアプリケーションを配布・更新するための機能が追加された。本稿ではそのClickOnce機能を活用して、多言語対応アプリケーションを配布する方法を紹介する(多言語対応アプリケーションの開発方法については、「TIPS:Windowsフォームを多言語対応にするには?」を参考にしてほしい)。

 なお本稿では、Visual Studio 2005(以降、VS 2005)のIDEを使用することを前提とする。

多言語対応アプリケーションをClickOnceで発行するには?

 .NETでは、多言語対応アプリケーションの各言語のリソースはサテライト・アセンブリ(=言語ごとのリソース・ファイル。詳しくは前掲のTIPSを参照)として作成するので、これをClickOnceで配布する必要がある。

 サテライト・アセンブリは、デフォルト(=ClickOnceオプション設定における言語の設定が「(既定値)」のまま(後述)の場合)では配布されないので、手動で配布されるように設定する必要がある。これを行っているのが次の画面である。

サテライト・アセンブリがClickOnceで配布されるようにする設定
多言語アプリケーションのサテライト・アセンブリをClickOnceで配布されるように設定しているところ。
  プロジェクトのプロパティを開く。
  プロジェクト・プロパティの[発行]タブを開く。
  [発行]ページの[アプリケーション ファイル]ボタンをクリックする。これにより、[アプリケーション ファイル]ダイアログが表示される。
  [アプリケーション ファイル]ダイアログの[すべてのファイルを表示]チェック・ボックスにチェックを入れる。これによりすべてのアプリケーション・ファイルが表示される。[発行の状況]が「除外」のファイルは、これにチェックを入れない限り表示されない。サテライト・アセンブリは、その[発行の状況]が自動的に「除外 (自動)」に設定されるため、ここには表示されないし配布もされない。
  配布したいサテライト・アセンブリ(本稿の例では「ko-KR\WindowsApplication1.resources.dll」と「ja-JP\WindowsApplication1.resources.dll」という2つのファイル)の[発行の状況]を「追加」に変更する。これにより、それらがClickOnceで配布されるようになる。
  あとは[OK]ボタンをクリックして設定を保存する。

 以上の設定により多言語アプリケーションをClickOnceで発行できるようになるわけだが、すべての言語のサテライト・アセンブリが無駄に配布されてしまうという問題がある。特に対応言語数が多い場合には問題となるだろう。これを回避する方法は2つある。

  1. 言語ごとにローカライズ版ClickOnceアプリケーションを作成する
  2. 必要な言語のサテライト・アセンブリだけをオンデマンドで配布する

 2の方法はコーディングが必要となるため、後日あらためて紹介するとしよう。以降では、1の方法について説明する。

言語ごとにローカライズ版ClickOnceアプリケーションを作成する

 ある多言語対応アプリケーションの特定言語のバージョン(=ローカライズ版ClickOnceアプリケーション)をClickOnceで発行するには、VS 2005の発行オプションの[発行の言語]で、配布したい「言語-カルチャ」を設定するだけである。次の画面は、実際にこれを行っている例である。具体的には、[発行の言語]を「日本語 (日本)」(=「ja-JP」)に設定している。

多言語対応アプリケーションの特定言語のバージョンをClickOnceで発行する際の「言語-カルチャ」の設定
発行するClickOnceアプリケーションの「言語-カルチャ」を、「日本語 (日本)」(=ja-JP)に設定しているところ。
  プロジェクトのプロパティを開く。
  プロジェクト・プロパティの[発行]タブを開く。
  [発行]ページの[オプション]ボタンをクリックする。これにより、[発行オプション]ダイアログが表示される。
  [発行オプション]ダイアログの[発行の言語]の一覧から、発行したい「言語-カルチャ」を選択する(この例では「日本語 (日本)」を選択)。
  あとは[OK]ボタンをクリックして設定を保存する。

 以上の設定を行った後、実際にClickOnceの発行を行うと、本稿の例では、次のようなディレクトリ構造でアプリケーションが発行された。

[発行の言語]を指定してClickOnceで発行した場合のディレクトリ構造
[発行の言語]を「日本語 (日本)」(=ja-JP)に指定してClickOnceで発行を行うと、この画面の例のように、「ja-JP」というフォルダの配下にサテライト・アセンブリ(=言語ごとのリソース・ファイル)が配置される。なお、(デフォルトの設定では).EXEや.DLLなどのClickOnceで配布されるアプリケーション・ファイルには「.deploy」という拡張子が付加される。ちなみに、冒頭で紹介した方法で、サテライト・アセンブリを手動で配布されるように設定したときもこれと同じフォルダ構成となる。

ClickOnceの真実 第1回 ClickOnceの基本動作を見てみよう

 このように発行されたClickOnceアプリケーションを実行すると、そのユーザーの実行環境が「日本語 (日本)」という「言語-カルチャ」であれば、正しく「日本語 (日本)」のアプリケーションとして実行できるはずだ。

サテライト・アセンブリの自動選択について

 特定言語のClickOnceアプリケーションを配布する場合、(上記のClickOnceで発行された際のディレクトリ構造を見れば分かるように)その言語に対応するサテライト・アセンブリは自動的に配布される。例えば、上記の例のように[発行の言語]を「日本語 (日本)」(=ja-JP)に指定した場合、本稿の例では「ja-JP\WindowsApplication1.resources.dll」というファイルが自動的に配布される。このようになるのは、その「言語-カルチャ」に対応するサテライト・アセンブリの[発行の状況]が自動的に「追加 (自動)」に設定されるためだ。

 次の画面は、これを実際に確認しているところである。

上記の手順で[発行の言語]を「日本語 (日本)」に設定

自動的に配布されるように設定されたサテライト・アセンブリ
ClickOnceで発行されるサテライト・アセンブリの内容を確認しているところ。
  [発行の言語]を指定した場合(本稿の例では「日本語 (日本)」を指定)、その「言語-カルチャ」に対応するサテライト・アセンブリの[発行の状況]は自動的に「追加 (自動)」に設定される。これにより、サテライト・アセンブリが配布される。

 この画面の説明を見れば分かるように、ClickOnceでは、[発行の言語]の選択に基づきその言語に対応したサテライト・アセンブリが自動的に配布されるわけである。End of Article

カテゴリ:Windowsフォーム 処理対象:ClickOnce
関連TIPS:Windowsフォームを多言語対応にするには?

この記事と関連性の高い別の.NET TIPS
GACコンポーネントをClickOnceで配布するには?
[ASP.NET]リソース・ファイル活用で国際化対応サイトを構築するには?
Windowsフォームを多言語対応にするには?
ClickOnceアプリをコマンドラインから発行するには?
Visual Studio:メニューなどの表示言語を切り替えるには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH