연습: ClickOnce 배포 API에서 요청 시 위성 어셈블리 다운로드
업데이트: 2007년 11월
위성 어셈블리를 사용하면 Windows Forms 응용 프로그램을 여러 culture에 맞게 구성할 수 있습니다. 위성 어셈블리는 응용 프로그램 기본 culture 이외의 culture를 위한 응용 프로그램 리소스가 들어 있는 어셈블리입니다.
ClickOnce 배포 및 지역화에서 설명한 대로 동일한 ClickOnce 배포 내에 여러 culture를 위한 여러 개의 위성 어셈블리를 포함할 수 있습니다. 기본적으로 ClickOnce에서는 한 클라이언트에서 하나의 위성 어셈블리만 필요한 경우라도 배포에 포함된 모든 위성 어셈블리가 클라이언트 컴퓨터에 다운로드됩니다.
이 연습에서는 위성 어셈블리를 선택 항목으로 표시하고 클라이언트 컴퓨터의 현재 culture 설정에 따라 필요한 어셈블리만 다운로드하는 방법을 보여 줍니다. 다음 절차에서는 Windows SDK(소프트웨어 개발 키트)에 포함된 도구를 사용합니다. Visual Studio에서 이 작업을 수행할 수도 있습니다.
참고: |
---|
테스트를 위해 다음 코드 예제에서는 프로그래밍 방식으로 culture를 ja-JP로 설정합니다. 이 코드를 프로덕션 환경에 맞게 조정하는 방법에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 "다음 단계" 단원을 참조하십시오. |
사전 요구 사항
이 항목에서는 사용자가 Microsoft Visual Studio 2005를 사용하여 응용 프로그램에 지역화된 리소스를 추가하는 방법을 알고 있다고 가정합니다. 자세한 내용은 연습: Windows Forms 지역화를 참조하십시오.
요청 시 위성 어셈블리를 다운로드하려면
요청 시 위성 어셈블리를 다운로드할 수 있도록 응용 프로그램에 다음 코드를 추가합니다.
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입니다. 이 값을 프로그래밍 방식으로 설정하면 응용 프로그램을 배포하기 전에 위성 어셈블리를 손쉽게 테스트할 수 있습니다.