Bagikan melalui


Panduan: Mengunduh assembly satelit sesuai permintaan dengan API penyebaran ClickOnce

Formulir Windows aplikasi dapat dikonfigurasi untuk beberapa kultur melalui penggunaan assembly satelit. Assembly satelit adalah assembly yang berisi sumber daya aplikasi untuk kultur selain kultur default aplikasi.

Seperti yang dibahas dalam Melokalkan aplikasi ClickOnce, Anda dapat menyertakan beberapa assembly satelit untuk beberapa kultur dalam penyebaran ClickOnce yang sama. Secara default, ClickOnce akan mengunduh semua assembly satelit dalam penyebaran Anda ke komputer klien, meskipun satu klien mungkin hanya akan memerlukan satu assembly satelit.

Panduan ini menunjukkan cara menandai assembly satelit Anda sebagai opsional, dan hanya mengunduh assembly yang dibutuhkan mesin klien untuk pengaturan kulturnya saat ini. Prosedur berikut menggunakan alat yang tersedia di Windows Software Development Kit (SDK). Anda juga dapat melakukan tugas ini di Visual Studio. Lihat juga Panduan: Mengunduh assembly satelit sesuai permintaan dengan API penyebaran ClickOnce menggunakan Perancang atau Panduan: Mengunduh assembly satelit sesuai permintaan dengan API penyebaran ClickOnce menggunakan Perancang.

Catatan

Kelas ApplicationDeployment dan API di System.Deployment.Application namespace tidak didukung dalam .NET Core dan .NET 5 dan versi yang lebih baru. Di .NET 7, metode baru untuk mengakses properti penyebaran aplikasi didukung. Untuk informasi selengkapnya, lihat Properti penyebaran Access ClickOnce di .NET. .NET 7 tidak mendukung metode ApplicationDeployment yang setara.

Catatan

Untuk tujuan pengujian, contoh kode berikut secara terprogram mengatur kultur ke ja-JP. Lihat bagian "Langkah Berikutnya" nanti dalam topik ini untuk informasi tentang cara menyesuaikan kode ini untuk lingkungan produksi.

Prasyarat

Topik ini mengasumsikan bahwa Anda tahu cara menambahkan sumber daya yang dilokalkan ke aplikasi Anda menggunakan Visual Studio. Untuk petunjuk terperinci, lihat Panduan: Melokalkan formulir Windows.

Untuk mengunduh assembly satelit sesuai permintaan

  1. Tambahkan kode berikut ke aplikasi Anda untuk mengaktifkan pengunduhan assembly satelit sesuai permintaan.

    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. Buat assembly satelit untuk aplikasi Anda dengan menggunakan Resgen.exe (Resource File Generator) atau Visual Studio.

  3. Buat manifes aplikasi, atau membuka manifes aplikasi yang ada, dengan menggunakan MageUI.exe. Untuk informasi selengkapnya mengenai alat ini, lihat MageUI.exe (Pembuatan Manifes dan Alat Pengeditan, Klien Grafis).

  4. Klik tab File.

  5. Klik tombol elipsis (...) dan pilih direktori yang berisi semua assembly dan file aplikasi Anda, termasuk assembly satelit yang Anda buat menggunakan Resgen.exe. (Assembly satelit akan memiliki nama dalam bentuk <isoCode>\ApplicationName.resources.dll, di mana <isoCode> adalah pengidentifikasi bahasa dalam format RFC 1766.)

  6. Klik Isi untuk menambahkan file ke penyebaran Anda.

  7. Pilih kotak centang Opsional untuk setiap assembly satelit.

  8. Atur bidang grup untuk setiap assembly satelit ke pengidentifikasi bahasa ISO-nya. Misalnya, untuk assembly satelit Jepang, Anda akan menentukan nama grup unduhan ja-JP. Ini akan memungkinkan kode yang Anda tambahkan di langkah 1 untuk mengunduh assembly satelit yang sesuai, tergantung pada pengaturan properti pengguna CurrentUICulture.

Langkah berikutnya

Di lingkungan produksi, Anda mungkin perlu menghapus baris dalam contoh kode yang diatur CurrentUICulture ke nilai tertentu, karena komputer klien akan memiliki nilai yang benar yang ditetapkan secara default. Ketika aplikasi Anda berjalan pada komputer klien Jepang, misalnya, CurrentUICulture akan menjadi ja-JP secara default. Menetapkan nilai ini secara terprogram adalah cara yang baik untuk menguji assembly satelit Anda sebelum Anda menyebarkan aplikasi Anda.