Menulis Tindakan Kustom
Tabel di bawah ini mencantumkan lima tindakan kustom yang digunakan untuk memenuhi spesifikasi sampel: ProcessAccounts, UninstallAccounts, CreateAccounts, RemoveAccounts, dan RollbackAccounts. Semua tindakan kustom ini berada di pustaka tautan dinamis yang disimpan dalam Tabel Biner. Kode sumber C++ untuk pustaka tautan dinamis yang berisi sampel tindakan kustom disediakan di Windows Installer SDK. ProcessAccounts dan UninstallAccounts ada di file Process.cpp. CreateAccount ada di file Create.cpp. RemoveAccount dan RollbackAccount ada di file Remove.cpp. File sumber ini dapat digunakan untuk membuat file Process.dll, Create.dll, dan Remove.dll.
Karena pembuatan atau penghapusan akun pengguna memerlukan hak istimewa yang ditingkatkan, tindakan kustom eksekusi yang ditangguhkan yang berjalan dalam konteks sistem harus digunakan untuk membuat, menghapus, atau mengembalikan akun pengguna. Tindakan kustom eksekusi langsung, ProcessAccounts dan UninstallAccounts, menghasilkan tindakan kustom yang ditangguhkan yang membuat, menghapus, atau memutar kembali akun pengguna: CreateAccount, RemoveAccount, dan RollbackAccount.
Karena tindakan kustom yang ditangguhkan tidak dapat membaca informasi dalam tabel database, ProcessAccounts dan UninstallUserAccouts harus mengatur properti CustomActionData untuk meneruskan informasi dalam tabel UserAccounts ke tindakan kustom yang ditangguhkan seperti yang dijelaskan dalam Mendapatkan Informasi Konteks untuk Tindakan Kustom Eksekusi Yang Ditangguhkan. Saat alat penginstal menjalankan skrip eksekusi, tindakan kustom yang ditangguhkan menangani akun pengguna sesuai dengan informasi di properti CustomActionData.
Karena semua tindakan kustom berada di pustaka tautan dinamis yang disimpan dalam tabel Biner, semuanya menyertakan konstanta msidbCustomActionTypeDll dan msidbCustomActionTypeBinaryData dalam jenis numerik dasarnya. ProcessAccounts dan UninstallAccounts adalah contoh Tindakan Kustom Murni Tipe 1. Untuk informasi tentang jenis tindakan kustom lainnya, lihat Daftar Ringkasan Semua Jenis Tindakan Kustom.
CreateAccount dan RemoveAccount adalah tindakan kustom eksekusi yang ditangguhkan yang tidak memungkinkan layanan untuk meniru pengguna tertentu. Tindakan kustom ini mencakup konstanta msidbCustomActionTypeInScript dan msidbCustomActionTypeNoImpersonate untuk menentukan opsi eksekusi dalam skrip tindakan kustom ini.
RollbackAccount adalah tindakan kustom putar kembali yang hanya menghapus akun pengguna selama penginstalan putar kembali. RollbackAccount mencakup konstanta msidbCustomActionTypeInScript dan msidbCustomActionTypeRollback untuk menentukan opsi eksekusi dalam skrip tindakan kustom ini.
Tindakan kustom ini dapat menangani data sensitif seperti kata sandi pengguna, yang tidak boleh ditulis ke file log. Oleh karena itu, tindakan kustom yang ditangguhkan harus menyertakan msidbCustomActionTypeHideTarget dalam jenis tindakan kustom. Nama tindakan kustom yang ditangguhkan juga perlu ditambahkan ke daftar properti MsiHiddenProperties dalam tabel Properti karena cara tindakan kustom segera meneruskan data ke tindakan kustom yang ditangguhkan menggunakan properti CustomActionData.
Tindakan kustom | Titik masuk DLL | Jenis tindakan kustom |
---|---|---|
ProcessAccounts | ProcessUserAccounts di Process.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1 |
UninstallAccounts | UninstallUserAccounts di Process.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1 |
CreateAccount | CreateUserAccount di Create.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265. |
RemoveAccount | RemoveUserAccount di Remove.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265. |
RollbackAccount | RemoveUserAccount di Remove.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeRollback + msidbCustomActionTypeHideTarget = 9473. |
Lanjutkan ke Penulisan Tabel CustomAction.