Mengirim Pesan ke Penginstal Windows Menggunakan MsiProcessMessage
Pesan yang dikirim menggunakan MsiProcessMessage adalah pesan yang sama yang diterima oleh fungsi panggilan balik INSTALLUI_HANDLER jika MsiSetExternalUI dipanggil. Jika tidak, Pemasang Windows menangani pesan. Untuk detailnya, lihat Mengurai Pesan Penginstal Windows.
Misalnya, untuk mengirim pesan INSTALLMESSAGE_ERROR dengan ikon MB_ICONWARNING dan tombol MB_ABORTRETRYCANCEL:
PMSIHANDLE hInstall;
PMSIHANDLE hRec;
MsiProcessMessage(hInstall, INSTALLMESSAGE(INSTALLMESSAGE_ERROR|MB_ABORTRETRYIGNORE|MB_ICONWARNING), hRec);
Di mana hInstall adalah handel untuk penginstalan, disediakan untuk tindakan kustom atau handel hProduct dari MsiOpenProduct atau MsiOpenPackage, dan hRec adalah rekaman yang berisi informasi kesalahan untuk diformat. Untuk informasi tentang cara pemformatan dilakukan, lihat MsiFormatRecord.
Secara default, jika pesan INSTALLMESSAGE_ERROR atau INSTALLMESSAGE_FATALEXIT dikirim tanpa menentukan jenis tombol atau jenis ikon, MB_OK, tidak ada ikon, dan MB_DEFBUTTON1 yang digunakan.
Pemasang Windows tidak melabeli tombol ABORT dengan string "Batalkan" saat menampilkan MessageBox dengan spesifikasi tombol MB_ABORTRETRYIGNORE, sebaliknya memberi label tombol dengan string "Batal". Semua pesan kesalahan menahan diri dari menggunakan kata "Batalkan" dan sebaliknya gunakan kata "Batal".
Parameter hRecord dari fungsi MsiProcessMessage bergantung pada jenis pesan yang dikirim ke MsiProcessMessage. Daftar berikut ini merinci persyaratan rekaman sehubungan dengan jenis pesan:
INSTALLMESSAGE_FATALEXIT
INSTALLMESSAGE_INFO
INSTALLMESSAGE_OUTOFDISKSPACE
Bidang | Deskripsi |
---|---|
0 | Templat untuk pemformatan string yang dihasilkan. Lihat MsiFormatRecord untuk informasi selengkapnya. Bidang rekaman direferensikan menggunakan [1] untuk bidang 1, [2] untuk bidang 2, dll. |
1 sampai n | Semua bidang berikutnya terkait langsung dengan bidang yang direferensikan oleh templat di bidang 0. |
Jika bidang 0 null, string yang diterima oleh handler UI diformat sebagai: 1: [data dari bidang 1] 2: [data dari bidang 2] yang berarti bahwa untuk setiap bidang rekaman, string berisi nomor bidang diikuti oleh data yang disimpan di bidang.
Pesan informasi dari MsiProcessMessage dicatat ketika MsiEnableLog, opsi baris perintah '/l', atau kebijakan pengelogan menentukan 'I' atau INSTALLLOGMODE_INFO.
INSTALLMESSAGE_ERROR
INSTALLMESSAGE_WARNING
INSTALLMESSAGE_USER
Untuk menggunakan pesan dari tabel Kesalahan.
Bidang | Deskripsi |
---|---|
0 | Harus null. |
1 | Nomor pesan dalam tabel Kesalahan. |
2 hingga n | Terkait dengan pesan yang ditentukan dalam tabel Kesalahan. |
Contohnya.
Bidang | Jenis | Data |
---|---|---|
0 | string | null |
1 | int | 1304 |
2 | untai (karakter) | Myfile.txt |
Pesan yang dihasilkan yang diterima dari handler UI adalah:
Kesalahan 1304. Kesalahan menulis ke file: Myfile.txt. Verifikasi bahwa Anda memiliki akses ke direktori tersebut.
Jika bidang 0 tidak null, pesan dari tabel kesalahan akan ditimpa. Sebaliknya, templat bidang 0 menentukan format pesan.
Pesan juga dapat menentukan tombol, termasuk tombol default, dan ikon untuk digunakan dengan pesan seperti yang disebutkan di atas. Tombol dan jenis ikon tercantum dalam INSTALLUI_HANDLER.
INSTALLMESSAGE_COMMONDATA
Pesan ini dikirim untuk mengaktifkan atau menonaktifkan tombol Batal dalam kotak dialog kemajuan.
Bidang | Deskripsi |
---|---|
0 | Tidak digunakan. |
1 | 2 mengacu pada tombol Batalkan . |
2 | Nilai 1 menunjukkan tombol Batalkan harus terlihat. Nilai 0 menunjukkan tombol Batalkan harus tidak terlihat. |
Misalnya, untuk menonaktifkan atau menyembunyikan tombol Batalkan , rekaman akan muncul sebagai berikut.
Bidang | Jenis | Data |
---|---|---|
0 | string | null |
1 | int | 2 |
2 | int | 0 |
INSTALLMESSAGE_ACTIONSTART
INSTALLMESSAGE_ACTIONDATA
Catatan INSTALLMESSAGE_ACTIONSTART menentukan format rekaman ActionData.
Bidang | Deskripsi |
---|---|
0 | null |
1 | Nama tindakan. Nama dalam bidang ini harus non-null. |
2 | Deskripsi tindakan. |
3 | Templat tindakan. Ini digunakan untuk ActionData yang pesannya sedang diformat sesuai dengan templat ini. |
Jangan mereferensikan bidang 0 dalam pesan Templat tindakan.
Catatan INSTALLMESSAGE_ACTIONDATA diformat sebagai berikut.
Bidang | Deskripsi |
---|---|
0 | null |
1 sampai n | Bergantung pada bidang 3 dari pesan atau templat INSTALLMESSAGE_ACTIONSTART terkait yang ditentukan dalam tabel ActionText. |
Misalnya, rekaman INSTALLMESSAGE_ACTIONSTART.
Bidang | Jenis | Data |
---|---|---|
0 | string | null |
1 | untai (karakter) | MyAction |
2 | untai (karakter) | Ini adalah deskripsi "MyAction" |
3 | untai (karakter) | Templat MyAction: data field1 adalah [1]. data bidang 2 adalah [2]. |
Templat untuk INSTALLMESSAGE_ACTIONSTART (bidang 3) mereferensikan bidang 1 dan 2, catatan INSTALLMESSAGE_ACTIONDATA harus memiliki 2 bidang yang berisi data yang dijatuhkan. Bidang dapat berupa bidang string atau bilangan bulat.
INSTALLMESSAGE_ACTIONDATA catatan.
Bidang | Jenis | Data |
---|---|---|
0 | string | null |
1 | int | 2 |
2 | untai (karakter) | ActionData untuk MyAction |
INSTALLMESSAGE_FILESINUSE
Rekaman FILESINUSE adalah rekaman panjang variabel.
Bidang | Deskripsi |
---|---|
0 | Bidang ini bisa null. Untuk penginstalan menggunakan antarmuka pengguna dasar, bidang ini dapat menentukan teks statis untuk ditampilkan dalam kontrol ListBoxdari dialog FilesInUse. Untuk penginstalan menggunakan antarmuka pengguna lengkap, bidang ini tidak berpengaruh karena teks ditentukan oleh penulisan kotak dialog FilesInUse kustom. |
1 | Nama file yang digunakan. |
2 | Bidang ini mengidentifikasi proses yang menyimpan file yang digunakan. Pemasang Windows versi 4.0: Id proses (PID) proses, atau judul jendela untuk proses. Pemasang Windows versi 3.1 dan yang lebih lama: Bidang ini harus berupa id proses (PID) dari proses. |
Misalnya, untuk mengirim pesan FilesInUse yang memperlihatkan dua file yang digunakan, red.exe dan blue.exe, rekaman memiliki empat bidang ditambah bidang 0. Format rekaman akan seperti yang diperlihatkan dalam tabel berikut ini. Contoh ini memerlukan Penginstal Windows versi 4.0.
Pemasang Windows versi 3.1 dan yang lebih lama: Bidang 2 dan 4 dalam contoh berikut harus berisi PID proses yang menyimpan red.exe dan blue.exe yang digunakan.
Bidang | Deskripsi |
---|---|
0 | null |
1 | Red.exe |
2 | Judul Jendela Merah |
3 | Blue.exe |
4 | Judul Jendela Biru |
Catatan
Pada Pemasang Windows versi 4.0, jika PID yang diteruskan dari layanan tidak memiliki judul jendela, seperti aplikasi baki sistem, file tidak ditampilkan dan log verbose berisi pesan berikut.
File In Use: -<FileName>- Window could not be found. Process ID: <PID>
No window with title could be found for FilesInUse
INSTALLMESSAGE_RESOLVESOURCE
Catatan INSTALLMESSAGE_RESOLVESOURCE memiliki tujuh bidang. Agar INSTALLMESSAGE_RESOLVESOURCE berfungsi dengan benar, handler UI eksternal mungkin tidak menangani pesan INSTALLMESSAGE_RESOLVESOURCE. Pemasang Windows harus menangani pesan INSTALLMESSAGE_RESOLVESOURCE. Artinya, handler UI eksternal mengembalikan 0 untuk menunjukkan "tidak ada tindakan yang diambil" saat memfilter pesan INSTALLMESSAGE_RESOLVESOURCE. Praktik terbaik adalah menghindari pengiriman pesan RESOLVESOURCE.
Bidang | Deskripsi |
---|---|
0 | null |
1 | null |
2 | Nama paket. |
3 | Kode produk. |
4 | Jalur relatif jika diketahui, bisa null. |
5 | 0 |
6 | Apakah akan memvalidasi kode paket. Nilai '1' menunjukkan kode paket harus divalidasi. Nilai '0' menunjukkan paket tidak boleh divalidasi. |
7 | Disk yang diperlukan dari tabel media. Nilai '0' menunjukkan bahwa disk apa pun dapat diterima. |