Men-debug Tindakan Kustom
Anda dapat men-debug tindakan kustom yang didasarkan pada pustaka tautan dinamis dengan menggunakan Alat Penelusuran Kesalahan untuk Windows. Tidak mungkin menggunakan penelusuran kesalahan dinamis dengan tindakan kustom berdasarkan file eksekusi atau skrip .
Teknik yang dijelaskan di bagian ini dapat membantu Anda men-debug tindakan kustom Penginstal Windows. Lihat bagian Alat Pengembangan Driver pada Windows Driver Kit (WDK) untuk informasi tentang Alat Debugging untuk Windows.
Penginstal Windows menggunakan variabel lingkungan MsiBreak untuk menentukan tindakan kustom mana yang akan di-debug. Jika Anda memiliki akses ke kode sumber tindakan kustom, Anda mungkin dapat menggunakan penelusuran kesalahan tanpa MsiBreak. Untuk memulai penelusuran kesalahan tanpa MsiBreak, letakkan kotak pesan sementara di awal kode tindakan. Saat kotak pesan muncul selama penginstalan, lampirkan debugger ke proses yang memiliki kotak pesan. Anda kemudian dapat mengatur titik henti yang diperlukan dan menutup kotak pesan untuk melanjutkan eksekusi. Tidak dimungkinkan untuk men-debug bagian sebelumnya dari tindakan kustom dengan metode ini.
Untuk menggunakan variabel lingkungan MsiBreak untuk men-debug tindakan kustom, atur MsiBreak ke nama tindakan kustom dalam tabel CustomAction. MsiBreak dapat berupa sistem atau variabel lingkungan pengguna. Jika variabel diatur sebagai variabel sistem, mulai ulang sistem mungkin diperlukan ketika nilai diubah untuk mendeteksi nilai baru.
Untuk menggunakan variabel lingkungan MsiBreak untuk men-debug antarmuka pengguna yang disematkan, atur nilai MsiBreak ke MsiEmbeddedUI.
Penginstal Windows hanya memeriksa variabel lingkungan MsiBreak jika pengguna adalah Administrator. Alat penginstal mengabaikan nilai MsiBreak jika pengguna bukan Administrator, bahkan jika ini adalah aplikasi terkelola .
Jika Anda melakukan debug tindakan kustom yang berjalan dengan hak sistem yang ditingkatkan dalam urutan eksekusi, hubungkan debugger ke layanan Penginstal Windows. Saat men-debug tindakan kustom yang berjalan dengan hak istimewa yang diimitasi dalam urutan eksekusi, sistem meminta dengan kotak dialog yang menunjukkan proses apa yang harus di-debug. Pengguna diminta dengan kotak dialog yang menunjukkan proses mana yang akan di-debug. Untuk informasi selengkapnya tentang tindakan kustom yang ditingkatkan, lihat Keamanan Tindakan Kustom.
Setelah debugger dilampirkan ke proses yang benar, alat penginstal memicu titik henti debugger segera sebelum memanggil titik masuk DLL. Pada titik henti, DLL Anda sudah dimuat ke dalam proses dan alamat titik masuk telah ditentukan. Jika DLL tindakan kustom Anda tidak dapat dimuat atau titik entri tindakan kustom tidak ada, tidak ada titik henti yang dipicu. Karena titik henti dipicu sebelum memanggil fungsi DLL, setelah titik henti dipicu, Anda harus menggunakan debugger Anda untuk melangkah maju hingga titik entri tindakan kustom Anda dipanggil. Secara bergantian, Anda dapat mengatur titik henti di mana saja dalam tindakan kustom Anda dan melanjutkan eksekusi normal.
Penginstal Windows menjalankan DLL yang tidak disimpan dalam tabel Biner langsung dari lokasi DLL. Alat penginstal tidak mengetahui nama asli DLL yang disimpan dalam tabel Biner dan menjalankan tindakan kustom DLL dengan nama file sementara. Bentuk nama file sementara adalah MSI?????. TMP. Pada Windows XP, file sementara ini disimpan di lokasi yang aman, biasanya <WindowFolder>\Installer.
Perhatikan bahwa banyak DLL yang dibuat untuk debugging berisi nama dan jalur file PDB yang sesuai sebagai bagian dari DLL itu sendiri. Saat melakukan debug jenis DLL ini pada sistem di mana PDB dapat ditemukan di lokasi yang disimpan di DLL, simbol mungkin dimuat secara otomatis oleh alat debug. Dalam situasi di mana PDB tidak dapat ditemukan di lokasi tersimpan, di mana debugger tidak mendukung pemuatan simbol dari lokasi tersimpan, atau di mana DLL tidak dibangun dengan informasi pemecahan masalah, Anda mungkin perlu menempatkan file simbol Anda ke dalam folder yang sama dengan file DLL sementara.
Penginstal menambahkan informasi debug untuk skrip tindakan kustom ke dalam file log penginstalan.
There is a problem with this Windows Installer package. A script
required for this install to complete could not be run. Contact your
support personnel or package vendor. {Custom action [2] script error
[3], [4]: [5] Line [6], Column [7], [8] }