Bagikan melalui


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.