チュートリアル : ClickOnce 配置 API を使用して必要に応じてサテライト アセンブリをダウンロードする
更新 : 2007 年 11 月
サテライト アセンブリを使用すると、複数のカルチャに対して Windows フォーム アプリケーションを構成できます。サテライト アセンブリとは、アプリケーションの既定のカルチャ以外のカルチャ用アプリケーション リソースを含むアセンブリのことです。
「ClickOnce 配置とローカリゼーション」で説明しているように、同じ ClickOnce 配置内に複数のカルチャの複数のサテライト アセンブリを含めることができます。既定では、ClickOnce では配置内のすべてのサテライト アセンブリがクライアント コンピュータにダウンロードされます。ただし、1 つのクライアントに必要なサテライト アセンブリは 1 つだけです。
このチュートリアルでは、サテライト アセンブリをオプションとしてマークする方法の例、および現在のカルチャ設定にクライアント コンピュータが必要とするアセンブリのみをダウンロードする方法の例を示します。次の手順では、Windows Software Development Kit (SDK) で入手できるツールを使用します。このタスクは、Visual Studio で実行することもできます。 詳細についてはチュートリアル : デザイナを使用し、ClickOnce 配置 API で必要に応じてサテライト アセンブリをダウンロードする およびチュートリアル : デザイナを使用し、ClickOnce 配置 API で必要に応じてサテライト アセンブリをダウンロードする およびチュートリアル : デザイナーを使用し、ClickOnce 配置 API で必要に応じてサテライト アセンブリをダウンロードする およびチュートリアル : デザイナーを使用し、ClickOnce 配置 API で必要に応じてサテライト アセンブリをダウンロードする.
メモ : |
---|
テストのために、次のコード例でプログラムによってカルチャを ja-JP に設定します。このコードを運用環境用に調整する方法については、このトピックの「次の手順」セクションを参照してください。 |
前提条件
このトピックでは、ローカライズされたリソースを、Microsoft Visual Studio 2005 を使用してアプリケーションに追加する方法を理解していること想定しています。手順の詳細については、「チュートリアル : Windows フォームのローカリゼーション」を参照してください。
必要に応じてサテライト アセンブリをダウンロードするには
次のコードをアプリケーションに追加して、必要に応じたサテライト アセンブリのダウンロードを有効にします。
using System; using System.Collections.Generic; using System.Windows.Forms; using System.Threading; using System.Globalization; using System.Deployment.Application; using System.Reflection; namespace ClickOnce.SatelliteAssemblies { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja-JP"); // Call this before initializing the main form, which will cause the resource manager // to look for the appropriate satellite assembly. GetSatelliteAssemblies(Thread.CurrentThread.CurrentCulture.ToString()); Application.Run(new Form1()); } static void GetSatelliteAssemblies(string groupName) { if (ApplicationDeployment.IsNetworkDeployed) { ApplicationDeployment deploy = ApplicationDeployment.CurrentDeployment; if (deploy.IsFirstRun) { try { deploy.DownloadFileGroup(groupName); } catch (DeploymentException de) { // Log error. Do not report error to the user, as there may not be a satellite // assembly if the user's culture and the application's default culture match. } } } } } }
リソース ファイル ジェネレータ (Resgen.exe) または Visual Studio を使用して、アプリケーションのサテライト アセンブリを生成します。
MageUI.exe を使用して、アプリケーション マニフェストを生成するか、既存のアプリケーション マニフェストを開きます。このツールの詳細については、「マニフェスト生成および編集ツールのグラフィカル クライアント (MageUI.exe)」を参照してください。
[Files] タブをクリックします。
省略記号ボタン ([...]) をクリックし、Resgen.exe を使用して生成したサテライト アセンブリを含む、アプリケーションのすべてのアセンブリとファイルを格納するディレクトリを選択します (サテライト アセンブリには isoCode\ApplicationName.resources.dll の形式で名前が付けられます。isoCode は RFC 1766 形式による言語識別子です)。
[Populate] をクリックして、配置にファイルを追加します。
サテライト アセンブリごとに [Optional] チェック ボックスをオンにします。
サテライト アセンブリごとに、グループ フィールドをその ISO 言語識別子に設定します。たとえば、日本語のサテライト アセンブリの場合は、ja-JP というダウンロード グループ名を指定します。これにより、手順 1. で追加したコードによって、ユーザーの CurrentUICulture プロパティ設定に応じて、適切なサテライト アセンブリをダウンロードできます。
次の手順
稼働環境では、既定でクライアント コンピュータに適切な値が設定されているため、CurrentUICulture を特定の値に設定するコード例の行を削除しなければならない可能性があります。たとえば、アプリケーションを日本語のクライアント コンピュータで実行する場合、既定では CurrentUICulture が ja-JP になります。この値をプログラムで設定する方法は、アプリケーションを配置する前にサテライト アセンブリをテストする場合に適しています。