Men-debug Tindakan Kustom
Anda dapat men-debug tindakan kustom yang didasarkan pada pustaka tautan dinamis dengan menggunakan Alat Debugging untuk Windows. Tidak dimungkinkan untuk menggunakan penelusuran kesalahan dinamis dengan tindakan kustom berdasarkan file atau skrip yangdapat dieksekusi.
Teknik yang dijelaskan di bagian ini dapat membantu Anda men-debug tindakan kustom Pemasang Windows. Lihat bagian Alat Pengembangan Driver dari Windows Driver Kit (WDK) untuk informasi tentang Alat Debugging untuk Windows.
Pemasang 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, hidupkan ulang sistem mungkin diperlukan saat nilai diubah untuk mendeteksi nilai baru.
Untuk menggunakan variabel lingkungan MsiBreak untuk men-debug antarmuka pengguna yang disematkan, atur nilai MsiBreak ke MsiEmbeddedUI.
Pemasang 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 men-debug tindakan kustom yang berjalan dengan hak istimewa (sistem) yang ditingkatkan dalam urutan eksekusi, lampirkan debugger ke layanan Pemasang Windows. Saat men-debug tindakan kustom yang berjalan dengan hak istimewa yang ditiru dalam urutan eksekusi, sistem meminta dengan kotak dialog yang menunjukkan proses mana 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 segera memicu titik henti debugger sebelum memanggil titik masuk DLL. Pada titik henti, DLL Anda sudah dimuat ke dalam proses dan alamat titik masuk yang 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 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.
Pemasang Windows menjalankan DLL yang tidak disimpan dalam tabel Biner langsung dari lokasi DLL. Alat penginstal tidak tahu 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 penelusuran kesalahan berisi nama dan jalur file PDB yang sesuai sebagai bagian dari DLL itu sendiri. Saat men-debug jenis DLL ini pada sistem di mana PDB dapat ditemukan di lokasi yang disimpan di DLL, simbol dapat dimuat secara otomatis oleh alat debugger. 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 penelusuran kesalahan, Anda mungkin perlu menempatkan file simbol Anda di folder dengan file DLL sementara.
Alat penginstal menambahkan informasi penelusuran kesalahan untuk skrip tindakan kustom ke 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] }