Aracılığıyla paylaş


İzlenecek yol: Uydu derlemelerinin ClickOnce dağıtımı API'si ile isteğe bağlı yükleme

Windows Forms uygulamaları uydu derlemelerini kullanarak birden çok kültür için yapılandırılabilir.Uydu derlemesi uygulamanın varsayılan kültürü dışında bir kültür için uygulama kaynaklarını içeren bir derlemedir.

ClickOnce Uygulamalarını Yerelleştirme bağlantısında bahsedildiği gibi, aynı ClickOnce dağıtımı içinde birden fazla kültür için birden fazla uydu derlemesini dahil edebilirsiniz.Varsayılan olarak, tek bir kullanıcı için sadece bir uydu derlemesi gerekmesine rağmen ClickOnce dağıtımda yer alan tüm uydu derlemelerini istemci makinaya indirecektir.

Bu yöntem uydu derlemelerinizi nasıl 'isteğe bağlı' olarak işaretleyeceğinizi ve nasıl istemci bilgisayarın geçerli kültür ayarları için ihtiyaç duyduğu derlemeyi indireceğini gösterir. Aşağıdaki yordam, Windows Software Development Kit (SDK) içinde bulunan araçları kullanır.Bu görevi Visual Studio kullanarak da gerçekleştirebilirsiniz.Daha fazla bilgi için bkz. İzlenecek Yol: Tasarımcıyı Kullanarak ClickOnce Dağıtımı API'si ile İstek Üzerine Uydu Derlemeleri (Satellite Assemblies) İndirme ve İzlenecek yol: Uydu derlemelerinin ClickOnce dağıtımı Designer'ı kullanarak API ile isteğe bağlı yükleme.

[!NOT]

Sınama amacıyla, aşağıdaki kod örneği program aracılığıyla kültürü ja-JP olarak ayarlar.Bu kodu bir üretim ortamı üzerine ayarlama hakkında bilgi için bu konudan sonraki "Sonraki Adımlar" bölümüne bakın.

Önkoşullar

Bu konu Visual Studio kullanarak, uygulamanıza yerelleştirilmiş kaynaklarının nasıl ekleneceğini bildiğinizi varsayar.Ayrıntılı yönergeler için, bkz. İzlenecek yol: Windows Forms yerelleştirme

İsteğe bağlı olarak uydu derlemelerini indirmek için

  1. Uydu derlemelerinin isteğe bağlı indirmesini sağlamak için aşağıdaki kodu uygulamanıza ekleyin.

    Imports System.Deployment.Application
    Imports System.Globalization
    Imports System.Threading
    
    Public Class Form1
        Shared Sub Main(ByVal args As String())
            Application.EnableVisualStyles()
    
            Thread.CurrentThread.CurrentUICulture = New CultureInfo("ja-JP")
            GetSatelliteAssemblies(Thread.CurrentThread.CurrentUICulture.ToString())
    
            Application.Run(New Form1())
        End Sub
    
        Private Shared Sub GetSatelliteAssemblies(ByVal groupName As String)
            If (ApplicationDeployment.IsNetworkDeployed) Then
    
                Dim deploy As ApplicationDeployment = ApplicationDeployment.CurrentDeployment
    
                If (deploy.IsFirstRun) Then
                    Try
                        deploy.DownloadFileGroup(groupName)
                    Catch de As DeploymentException
                        ' 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.
    
                    End Try
                End If
            End If
        End Sub
    End Class
    
    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.
                        }
                    }
                }
            }
    
        }
    }
    
  2. Uygulamanız için, ResGen.exe (kaynak dosya Oluşturucu) veya Visual Studio kullanarak uydu derlemeleri oluşturun.

  3. Bir uygulama bildirimi oluşturun veya MageUI.exe'yi kullanarak varolan uygulama bildiriminizi açın.Bu araç hakkında daha fazla bilgi için, bkz. MageUI.exe (bildirim oluşturma ve düzenleme aracı, grafiksel istemci).

  4. Dosyalar sekmesini tıklayın.

  5. ellipsis'i (üç nokta) (...) tıklayın ve Resgen.exe kullanarak oluşturduğunuz uydu derlemeleri de dahil uygulamanıza ait tüm derlemeleri ve dosyaları bulunduran dizini seçin.(Bir uydu derlemesi, isoCode\ApplicationName.resources.dll şeklinde bir ada sahip olacaktır. Burda isoCode, RFC 1766 biçiminde bir dil tanımlayıcısıdır.)

  6. Dağıtımınıza dosyaları eklemek için Populate'i (Doldur) tıklayın.

  7. Her uydu derlemesi için İsteğe bağlı onay kutusunu seçin.

  8. Her uydu derlemesi için grup alanını ISO dil tanımlayıcısına ayarlayın.Örneğin, Japonca uydu derlemesi için indirme grup adını ja-JP olarak belirtmelisiniz.Bu, birinci adımda uygun uydu dosyasını indirmek için eklediğiniz kodu kullanıcının CurrentUICulture özelliği ayarına bağlı olarak etkinleştirir.

Sonraki Adımlar

Bir üretim ortamında, büyük olasılıkla istemci makinelere doğru değer varsayılan olarak ayarlanmış olduğundan, kod örneğindeki CurrentUICulture'ı belirli bir değere ayarlayan satırı kaldırmanız gerekecek.Örneğin, uygulamanız Japonca istemci makine üzerinde çalıştığında, CurrentUICulture varsayılan olarak ja-JP olacaktır.Uygulamanızı dağıtmadan önce, bu değeri program aracılığıyla ayarlamak uydu derlemelerinizi test etmek için iyi bir yoldur.

Ayrıca bkz.

Kavramlar

ClickOnce Uygulamalarını Yerelleştirme