Utilitas Sumber Daya

Topik ini menjelaskan dua utilitas yang digunakan untuk membangun aplikasi MUI. Meskipun MUIRCT adalah alat khusus MUI, MUI juga menggunakan utilitas Windows RC Compiler standar. Instruksi untuk menggunakan utilitas ini disediakan di Melokalisasi Sumber Daya dan Membangun Aplikasi.

Utilitas MUIRCT

MUIRCT (Muirct.exe) adalah utilitas baris perintah untuk membagi file standar yang dapat dieksekusi menjadi file LN dan file sumber daya khusus bahasa (yaitu, dapat dilokalkan). Setiap file yang dihasilkan berisi data konfigurasi sumber daya untuk asosiasi file. MUIRCT disertakan dalam Microsoft Windows SDK untuk Windows Vista.

Catatan

Dimulai dengan Windows Vista, pemuat sumber daya Win32 diperbarui untuk memuat sumber daya dari file khusus bahasa serta dari file LN.

 

Penggunaan MUIRCT

  1. Pisahkan biner menjadi file biner utama dan mui berdasarkan file rc_config.

    Muirct -q rc_config [-c checksum_file [-b LangID]] [-x LangID] [-g LangId] [-f] [-m] [-v level] source_file [output_LN_file] [output_MUI_file]

  2. Ekstrak checksum dari checksum_file dan masukkan ke dalam output_file.

    Muirct -c checksum_file [-b LangID] -e output_file

  3. Hitung checksum berdasarkan checksum_file dan sisipkan ke dalam output_file.

    Muirct -c checksum_file [-b LangID] -q rc_config -z output_file

  4. Buang konten data konfigurasi sumber daya dari input_file.

    Muirct -d input_file

Sintaks MUIRCT

MUIRCT dapat mengambil arah dari sakelar baris perintah dan/atau dari file konfigurasi sumber daya, yang ditentukan menggunakan sakelar -q.

muirct [-h|-?] [ -c checksum_file] [-b langid]  ]
     [-g langid] [-q resource configuration file<RCF>] [-v level] [-x langid]
     [-e output_file]  [-z output_file] [-f] [-d MUI'ized file] [-m file_version]

source_filename [language_neutral_filename] [mui_filename]

Sakelar dan Argumen

Opsi Tujuan
-h atau -? Menampilkan layar bantuan.
-c Menentukan checksum_file input untuk mengekstrak atau menghitung checksum sumber daya. Checksum_file harus berupa file biner Win32 yang berisi sumber daya yang dapat dilokalkan. Jika checksum_file berisi sumber daya untuk lebih dari satu bahasa, sakelar -b harus digunakan untuk menentukan mana dari ini yang harus digunakan jika tidak MUIRCT gagal.
-B Menentukan bahasa yang akan digunakan ketika checksum_file yang ditentukan dengan -c berisi sumber daya dalam beberapa bahasa. Sakelar ini hanya dapat digunakan bersama dengan sakelar -c. Pengidentifikasi bahasa dapat dalam format desimal atau heksadesimal. MUIRCT gagal jika checksum_file berisi sumber daya dalam beberapa bahasa dan -b tidak ditentukan atau jika bahasa yang ditentukan oleh sakelar -b tidak dapat ditemukan di checksum_file.
-G Menentukan ID bahasa yang akan disertakan sebagai bahasa fallback utama di bagian data konfigurasi sumber daya dari file LN. Jika pemuat sumber daya gagal memuat file .mui yang diminta dari bahasa UI pilihan utas, ia menggunakan bahasa fallback utama sebagai upaya terakhirnya. Nilai LangID dapat ditentukan dalam format desimal atau heksadesimal. Misalnya bahasa Inggris (Amerika Serikat) dapat ditentukan oleh -g 0x409 atau -g 1033.
-q Menentukan bahwa source_file akan dibagi menjadi output_LN_file dan output_MUI_file sesuai dengan tata letak file rc_config. File rc_config adalah file berformat XML yang menentukan sumber daya mana yang akan diekstrak ke file .mui dan yang akan ditinggalkan dalam file LN. rc_config dapat menentukan distribusi jenis sumber daya dan item bernama individual antara output_LN_file dan output_MUI_file. Source_file harus berupa biner Win32 yang berisi sumber daya dalam satu bahasa jika tidak, MUIRCT gagal. MUIRCT tidak membagi file jika merupakan bahasa netral yang ditunjukkan dengan hanya memiliki nilai ID bahasa 0 dalam file. output_LN_file dan output_mui_file adalah nama bahasa netral dan file .mui tempat source_file dipisahkan. Nama file ini bersifat opsional. Jika tidak ditentukan, MUIRCT menambahkan ekstensi .ln dan .mui ke source_file. Biasanya Anda harus menghapus ekstensi ".ln" sebelum menyebarkan file. MUIRCT mengaitkan output_LN_file dan output_MUI_file dengan menghitung checksum berdasarkan nama source_file dan versi file dan menyisipkan hasilnya ke bagian konfigurasi sumber daya dari setiap file output. Ketika digunakan bersama dengan sakelar -c, sakelar -q lebih diutamakan. Jika file rc_config yang disediakan dengan sakelar -q berisi checksum MUIRCT mengabaikan sakelar -c dan menyisipkan nilai checksum dari nilai , rc_config file ke dalam file LN dan.mui. Jika tidak ada nilai checksum yang ditemukan di rc_config, MUIRCT menghitung checksum sumber daya berdasarkan perilaku sakelar -c.
-v Menentukan tingkat verboseness untuk pengelogan. Tentukan 1 untuk mencetak semua pesan kesalahan dasar dan hasil operasi. Tentukan 2 untuk juga menyertakan informasi sumber daya (jenis, nama, pengidentifikasi bahasa) yang disertakan dalam file .mui dan file LN. Defaultnya adalah -v 1
-X Menentukan ID bahasa tempat MUIRCT menandai semua jenis sumber daya yang ditambahkan ke bagian sumber daya file .mui. Nilai LangID dapat ditentukan dalam format desimal atau heksadesimal. Misalnya bahasa Inggris (Amerika Serikat) dapat ditentukan oleh -x 0x409 atau -x 1033.
-E Mengekstrak checksum sumber daya yang terkandung dalam checksum_file yang disediakan dengan sakelar -c dan menyisipkannya ke dalam output_file yang ditentukan. Ketika -e ditentukan, MUIRCT mengabaikan semua sakelar selain sakelar -c. Dalam hal ini checksum_file harus berupa file biner Win32 yang berisi bagian data konfigurasi sumber daya dengan nilai checksum. Output_file harus berupa file LN atau file .mui yang ada.
-Z Menghitung dan menyisipkan data checksum sumber daya dalam file output yang ditentukan. Perhitungan checksum basis MUIRCT pada input yang disediakan dengan sakelar -c, dan sakelar -b opsional. Jika Anda menentukan file output untuk sakelar -z yang tidak ada, MUIRCT keluar dengan kegagalan.
Contoh: Menghitung checksum berdasarkan sumber daya yang dapat dilokalkan dalam Notepad.exe dan menyisipkan checksum ke dalam file output Notepad2.exe.
muirct -c notepad.exe -q myprog.rcconfig -z notepad2.exe
-F Memungkinkan pembuatan file .mui dengan sumber daya versi menjadi satu-satunya sumber daya yang dapat dilokalkan. Secara default, MUIRCT tidak mengizinkan ini.
-d Menemukan dan menampilkan data konfigurasi sumber daya yang disematkan dalam file sumber. Saat Anda menentukan sakelar ini, MUIRCT mengabaikan semua opsi baris perintah lainnya.
-m Menentukan nomor versi yang akan digunakan saat menghitung checksum untuk mengaitkan output_LN_file dan output_MUI_file.
source_filename Nama file sumber biner yang dilokalkan; kartubebas tidak dapat digunakan. File ini hanya dapat memuat sumber daya dalam satu bahasa. Jika ada sumber daya dalam beberapa bahasa dalam file, MUIRCT gagal, kecuali sakelar -b digunakan. Jika file berisi sumber daya dengan pengidentifikasi bahasa yang memiliki nilai 0 saja, MUIRCT tidak membagi file karena pengidentifikasi bahasa 0 menunjukkan bahasa netral.
Untuk sakelar -d, source_filename adalah file LN atau file sumber daya khusus bahasa yang MUIRCT-nya menampilkan data konfigurasi sumber daya.
language_neutral_filename Pilihan. Nama file LN. Jika Anda tidak menentukan nama file ini, MUIRCT menambahkan ekstensi kedua ".ln" ke nama file sumber untuk digunakan sebagai nama file netral bahasa. Biasanya Anda harus menghapus ekstensi ".ln" sebelum menyebarkan file. Catatan: File LN tidak boleh berisi string atau menu. Anda harus menghapusnya secara manual.
mui_filename Pilihan. Nama file sumber daya khusus bahasa. Jika Anda tidak menentukan nama, MUIRCT menambahkan ekstensi kedua ".mui" ke nama file sumber untuk digunakan sebagai nama file. Biasanya, MUIRCT membuat file sumber daya khusus bahasa. Namun, itu tidak membuat file sumber daya jika salah satu kondisi berikut ada:
  • Tidak ada sumber daya yang dapat dilokalkan dalam file biner asli.
  • Satu-satunya bahasa sumber daya yang ditemukan dalam file biner asli adalah bahasa netral.
  • File biner asli memiliki sumber daya untuk lebih dari satu bahasa, tidak menghitung bahasa netral. Jika file biner berisi sumber daya untuk dua bahasa, dan salah satunya adalah bahasa netral, utilitas menganggap file bersifat monolingual dan membuat file sumber daya khusus bahasa jika ada sumber daya yang dapat dilokalkan.

 

Output Bahasa MUIRCT

MUIRCT memilih nilai atribut "UltimateFallbackLanguage" untuk disisipkan dalam data konfigurasi sumber daya file LN berdasarkan urutan berikut, dari prioritas tertinggi hingga terendah:

  1. Atribut "UltimateFallbackLanguage" dalam file konfigurasi sumber daya sumber, jika diteruskan sebagai input.
  2. Bahasa yang ditentukan dengan sakelar -g.
  3. Masukkan bahasa file.

MUIRCT memilih nilai atribut "bahasa" untuk disisipkan dalam data konfigurasi sumber daya file .mui berdasarkan urutan berikut:

  1. Atribut "bahasa" dalam file konfigurasi sumber daya sumber, jika diteruskan sebagai input.
  2. Bahasa yang ditentukan oleh sakelar -x (bahasa paksa).
  3. Masukkan bahasa file.

Penanganan Checksum MUIRCT

Sistem operasi biasanya menghitung checksum atas sumber daya khusus bahasa dalam file kecuali Anda menentukan checksum melalui file konfigurasi sumber daya. Selama checksum sama untuk file LN dan semua file sumber daya khusus bahasa terkait, dan atribut bahasa dalam konfigurasi sumber daya dalam LN dan kecocokan dependen bahasa, pemuat sumber daya dapat berhasil memuat sumber daya.

MUIRCT mendukung beberapa metode untuk menempatkan checksum yang sesuai dalam data konfigurasi sumber daya:

  1. Bangun executable untuk setiap bahasa, yang berisi kode dan sumber daya. Setelah ini, gunakan MUIRCT untuk membagi masing-masing file ini menjadi file LN dan file sumber daya khusus bahasa. MUIRCT berjalan beberapa kali, sekali untuk menghasilkan file sumber daya untuk setiap bahasa. Anda dapat melakukan build dengan cara berikut:
    1. Gunakan sakelar -q untuk menentukan nilai checksum dalam file konfigurasi sumber daya. MUIRCT menempatkan nilai ini di semua file LN dan file sumber daya khusus bahasa yang dihasilkan. Anda perlu mengadopsi strategi untuk memilih nilai ini, seperti yang dijelaskan nanti dalam topik ini.
    2. Gunakan sakelar -c (dan, secara opsional, sakelar -b) untuk memilih satu bahasa yang memiliki sumber daya tempat MUIRCT mengekstrak checksum.
    3. Gunakan sakelar -z untuk memilih satu bahasa yang memiliki sumber daya dari mana MUIRCT selalu mengekstrak checksum. Terapkan checksum ini setelah file dibuat menggunakan metode lain.
  2. Bangun executable yang berisi kode dan sumber daya untuk satu bahasa. Setelah ini, gunakan MUIRCT untuk membagi sumber daya antara file LN dan file sumber daya khusus bahasa. Terakhir, gunakan alat pelokalan biner untuk memodifikasi file sumber daya yang dihasilkan untuk setiap bahasa.

Konvensi yang paling umum untuk penanganan checksum adalah mendasarkan checksum pada sumber daya bahasa Inggris (Amerika Serikat). Anda bebas mengadopsi konvensi yang berbeda, selama konsisten untuk setiap file LN. Misalnya, sangat dapat diterima bagi perusahaan pengembangan perangkat lunak untuk mendasarkan checksum-nya dalam perangkat lunak yang dibangunnya pada sumber daya Prancis (Prancis) alih-alih sumber daya Bahasa Inggris (Amerika Serikat), selama semua aplikasi memiliki sumber daya Prancis (Prancis) untuk mendasarkan checksum. Juga dapat diterima untuk menggunakan file konfigurasi sumber daya untuk menetapkan nilai heksadesimal arbitrer hingga 16 digit heksadesimal sebagai checksum. Strategi terakhir ini menghalangi penggunaan switch MUIRCT -z, -c, dan -b yang efektif. Ini membutuhkan adopsi metode menggunakan GuidGen atau beberapa alat lain untuk menghasilkan nilai checksum. Strategi ini juga mengharuskan Anda menyiapkan kebijakan untuk menentukan kapan harus memodifikasi nilai saat menambahkan sumber daya baru yang dapat dilokalkan.

Untuk menerapkan checksum bahasa Inggris (Amerika Serikat) ke semua file, Anda dapat menggunakan salah satu metode penanganan checksum yang dijelaskan di atas. Misalnya, Anda dapat membuat file LN dan file sumber daya khusus bahasa untuk bahasa Inggris (Amerika Serikat), lalu menggunakan sakelar MUIRCT -d untuk mendapatkan checksum yang dihasilkan. Anda dapat menyalin checksum ini ke dalam file konfigurasi sumber daya Anda dan menggunakan sakelar -q dengan MUIRCT untuk menerapkan checksum ke semua file lainnya.

Penggunaan File Konfigurasi Sumber Daya dengan MUIRCT

Anda dapat menentukan data konfigurasi sumber daya saat menggunakan MUIRCT. Apakah Anda secara eksplisit menyediakan file konfigurasi sumber daya, setiap file sumber daya khusus bahasa memiliki data konfigurasi sumber daya, seperti halnya file LN dengan file sumber daya terkait. Contohnya:

  • Jika Anda menggunakan sakelar -q untuk menentukan file konfigurasi sumber daya, tetapi tidak ada sumber daya yang dapat dilokalkan dalam file sumber input Anda, tidak ada file sumber daya khusus bahasa yang dihasilkan dan file LN yang dihasilkan tidak berisi data konfigurasi sumber daya. Selain itu, jika file sumber input memiliki sumber daya multibahasa, MAKA MUIRCT tidak akan membagi file.

Catatan

Saat ini perilaku MUIRCT tidak konsisten ketika elemen neutralResources dari file konfigurasi sumber daya tidak berisi elemen resourceType dan elemen localizedResources berisi string dan menu, misalnya. Dalam kasus seperti itu, MUIRCT membagi sumber daya sebagai berikut:

  • Semua sumber daya dalam biner asli (termasuk string dan menu), ditambah sumber daya MUI, ditempatkan dalam file LN.
  • String, menu, dan sumber daya MUI ditempatkan dalam file sumber daya khusus bahasa yang sesuai.

 

Contoh untuk Menggunakan MUIRCT

Contoh Penggunaan Standar

muirct -q mui.MMF bar.exe barnew.exe barnew.exe.mui

muirct -d myprog.exe.mui

Contoh Output File LN Menggunakan -d Switch

Berikut adalah contoh output data konfigurasi sumber daya dari file LN, Shell32.dll, menggunakan sakelar -d dengan MUIRCT:

Signature          -    fecdfecd
Length             -    148
RC Config Version  -    10000
FileType           -    11
SystemAttributes   -    100
UltimateFallback location    -  external
Service Checksum   -    14f44a8d86bef14af26d9a885964c935
Checksum           -    f5b3b7ab330439d6fcc07582c3afb613
MainNameTypes      -    AVI FTR ORDERSTREAM TYPELIB UIFILE XML MUI
MainIDTypes        -    1 2 3 12 14 16 24
MuiNameTypes       -    MUI
MuiIDTypes         -    2 3 4 5 6 9 14 16
UltimateFallbackLanguage   -   en-US

Contoh Output File Sumber Daya Language-Specific Menggunakan -d Switch

Berikut adalah contoh output data konfigurasi sumber daya dari file .mui, Shell32.dll.mui, menggunakan sakelar -d untuk MUIRCT:

Signature          -    fecdfecd
Length             -     c8
RC Config Version  -    10000
FileType           -    12
SystemAttributes   -    100
Service Checksum   -    14f44a8d86bef14af26d9a885964c935
Checksum           -    f5b3b7ab330439d6fcc07582c3afb613
MainNameTypes      -    MUI
MainIDTypes        -    2 3 4 5 6 9 14 16
Language           -    en-US

Utilitas Pengkompilasi RC

RC Compiler (Rc.exe) adalah utilitas baris perintah untuk mengkompilasi file skrip definisi sumber daya (ekstensi.rc) ke dalam file sumber daya (ekstensi.res). RC Compiler disertakan dalam Windows SDK. Dokumen ini hanya menjelaskan penggunaan RC Compiler dengan kemampuan terkait MUI dari pemuat sumber daya. Untuk informasi lengkap tentang pengkompilasi, lihat Tentang File Sumber Daya.

RC Compiler memungkinkan Anda membangun, dari satu set sumber, file LN, dan file sumber daya khusus bahasa terpisah. Adapun MUIRCT, file dikaitkan dengan data konfigurasi sumber daya.

Sintaks Pengkompilasi RC seperti yang Digunakan untuk Sumber Daya MUI

Sakelar Kompilator RC didefinisikan secara rinci dalam Menggunakan RC. Bagian ini hanya menentukan sakelar yang digunakan untuk membangun sumber daya MUI. Ingatlah bahwa setiap sakelar tidak peka huruf besar/kecil. Jenis sumber daya diasumsikan netral terhadap bahasa kecuali dinyatakan lain.

rc [-h|-?] -fm mui_res_name [-q rc_config_file_name] [-g langid] [-g1 ] [-g2 version]

Sakelar dan Argumen

Opsi Fungsi
-h atau -? Menampilkan layar bantuan.
-Fm Menggunakan file sumber daya yang ditentukan untuk sumber daya khusus bahasa. Biasanya pengkompilasi sumber daya membuat file sumber daya khusus bahasa. Namun, itu tidak membuat file jika ada salah satu kondisi berikut:
  • Tidak ada sumber daya yang dapat dilokalkan dalam file .rc.
  • Satu-satunya bahasa sumber daya yang ditemukan dalam file .rc adalah bahasa netral.
  • File .rc memiliki sumber daya untuk lebih dari satu bahasa, tidak menghitung bahasa netral. Jika file .rc berisi sumber daya untuk dua bahasa, dan salah satunya adalah bahasa netral, pengkompilasi menganggap file tersebut monolingual. Jika ada sumber daya yang dapat dilokalkan, pengkompilasi membuat file sumber daya khusus bahasa.
-q Menggunakan file konfigurasi sumber daya yang ditentukan untuk mendapatkan jenis sumber daya yang akan ditempatkan dalam file sumber daya khusus bahasa dan file LN. Untuk informasi selengkapnya, lihat Menyiapkan File Konfigurasi Sumber Daya. Sebagai alternatif untuk sakelar ini, Anda dapat menggunakan sakelar -j dan -k, tetapi lebih disukai untuk menggunakan file konfigurasi sumber daya.
Dengan menggunakan sakelar -q dengan file konfigurasi sumber daya, Anda dapat menerapkan pemisahan berbasis item dan menyediakan atribut yang akan berakhir dengan konfigurasi sumber daya biner di LN dan file sumber daya khusus bahasa. Pemisahan ini tidak dimungkinkan menggunakan sakelar -j dan -k. Catatan: Proses pemisahan RC Compiler tidak berfungsi dengan baik jika Anda menyimpan sumber daya dan informasi versi dalam file konfigurasi sumber daya yang berbeda. Dalam hal ini, RC Compiler tidak membagi informasi versi. Oleh karena itu, kesalahan linker terjadi selama penautan file sumber daya khusus bahasa karena file tidak memiliki sumber daya versi.
-G Menentukan pengidentifikasi bahasa fallback utama dalam heksadesimal.
-g1 Membuat file .res MUI meskipun sumber daya VERSION adalah satu-satunya konten yang dapat dilokalkan. Secara default, RC Compiler tidak menghasilkan file .res jika VERSION adalah satu-satunya sumber daya yang dapat dilokalkan.
-g2 Menentukan nomor versi kustom yang akan digunakan saat menghitung checksum.
mui_res_name File sumber daya untuk sumber daya khusus bahasa.
rc_config_file_name File konfigurasi sumber daya.
bahasa langid Pengidentifikasi bahasa.
versi Nomor versi kustom, dalam format seperti "6.2.0.0".

 

Contoh untuk Menggunakan Pengkompilasi RC untuk Membangun Sumber Daya MUI

Untuk mengilustrasikan operasi RC Compiler dengan sumber daya MUI, mari kita periksa baris perintah berikut, untuk file sumber daya Myfile.rc:

rc -fm myfile_res.res -q myfile.rcconfig myfile.rc

Baris perintah ini menyebabkan RC Compiler melakukan hal berikut:

  • Buat file sumber daya khusus bahasa Myfile_res.res dan file sumber daya netral bahasa yang default ke Myfile.res, berdasarkan nama file .rc.
  • Tambahkan 2 (item 5 6 7 8 9 10 11 12), 4, 5, 6, 9, 11, 16, 23, 240, 1024 MY_TYPE jenis sumber daya ke file .res khusus bahasa jika ada dalam file .rc.
  • Tambahkan jenis sumber daya 16, bersama dengan jenis sumber daya lain yang dijelaskan dalam file sumber daya ke file .res yang netral bahasa dan ke file .res khusus bahasa. Perhatikan bahwa, dalam contoh ini, sumber daya jenis 16 sedang ditambahkan di dua tempat.
  • Pilih nilai atribut "UltimateFallbackLanguage" untuk dimasukkan ke dalam data konfigurasi sumber daya file LN berdasarkan kriteria berikut, diurutkan dari prioritas tertinggi ke terendah:
    • Atribut "UltimateFallbackLanguage" dalam file konfigurasi sumber daya jika diteruskan sebagai input.
    • Nilai atribut bahasa untuk disisipkan dalam data konfigurasi sumber daya berdasarkan urutan bahasa pengkompilasi RC (bahasa netral dan bahasa bahasa khusus bahasa file file sumber daya). Pertimbangan termasuk bahasa dalam file .rc, nilai bahasa sakelar -gl, dan pengidentifikasi 0x0409 untuk bahasa Inggris (Amerika Serikat).

Keterangan

Jika Anda menyertakan jenis sumber daya ICON(3), DIALOG(5), STRING(6), atau VERSION(16) dalam elemen neutralResources, maka Anda harus menduplikasi entri tersebut dalam elemen localizedResources dalam file konfigurasi sumber daya.

Referensi Antarmuka Pengguna Multibahasa

Manajemen Sumber Daya MUI

Melokalisasi Sumber Daya dan Membangun Aplikasi