İzlenecek Yol: Tasarımcıyı Kullanarak ClickOnce Dağıtımı API'si ile İstek Üzerine Uydu Derlemeleri (Satellite Assemblies) İndirme
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 yükleyecektir.
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 karşıdan yükleyeceğini gösterir.
Not
Sınama amacıyla, aşağıdaki kod örnekleri 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ı nasıl ekleyeceğinizi bildiğinizi varsayar. Ayrıntılı yönergeler için, bkz. Walkthrough: Windows Forms Yerelleştirme
Uydu derlemelerini 'isteğe bağlı' olarak işaretlemek için
Projenizi yapılandırın. Bu, yerelleştirmeyi yaptığınız tüm kültürler için uydu derlemelerini oluşturur.
Çözüm Gezgini'nde proje adına sağ tıklayın ve Özellikler'i tıklayın.
Yayımla sekmesini tıklayın ve sonra Uygulama dosyaları'nı tıklayın.
Uydu derlemelerini görüntülemek için Tüm dosyaları göster onay kutusunu seçin. Varsayılan değer olarak, tüm uydu derlemeleri dağıtımınıza dahil edilir ve bu iletişim kutusunda görülebilir.
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.
Her dil tanımlayıcısı için Download Group (İndirme Grubu) listesinde Yeni...'yi tıklayın. İndirme grubu adı için uyarıldığınızda, dil tanımlayıcısını girin. Örneğin, Japonca uydu derlemesi için indirme grup adını ja-JP olarak belirtmelisiniz.
Uygulama Dosyaları iletişim kutusunu kapatın.
İsteğe bağlı olarak C# üzerinde uydu derlemeleri indirmek için
Program.cs dosyasını açın. Çözüm Gezgini'nde bu dosyayı göremezseniz, projenizi seçin ve Proje menüsünde Tüm Dosyaları Göster'i tıklayın.
Uygun uydu derlemesini karşıdan yüklemek için aşağıdaki kodu kullanın ve uygulamanızı başlatın.
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 this error to the user, because a satellite // assembly may not exist if the user's culture and the application's // default culture match. } } } } } }
Visual Basic'te uydu derlemelerini talep edildiğinde karşıdan yüklemek için
Uygulama için Özellikler penceresinde Uygulama sekmesini tıklayın.
Sekme sayfası altında View Application Events'i (Uygulama Olaylarını Görüntüle) tıklayın.
Aşağıdaki içeri aktarımları ApplicationEvents.VB dosyasının başına ekleyin.
Imports System.Deployment.Application Imports System.Globalization Imports System.Threading
Aşağıdaki kodu MyApplication sınıfına ekleyin.
Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup Thread.CurrentThread.CurrentUICulture = New CultureInfo("ja-JP") GetSatelliteAssemblies(Thread.CurrentThread.CurrentUICulture.ToString()) 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 this error to the user, because a satellite ' assembly may not exist if the user's culture and the application's ' default culture match. End Try End If End If End Sub
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 örneklerindeki 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, bunu program aracılığıyla ayarlama uydu derlemelerinizi test etmek için iyi bir yoldur.
Ayrıca bkz.
Görevler
İzlenecek Yol: ClickOnce Dağıtımı API'si ile İsteğe Bağlı Uydu Derlemelerini İndirme