Özel Eylemlerde Hata Ayıklama

Windows içinHata Ayıklama Araçları'nı kullanarak dinamik bağlantı kitaplıklarını temel alan özel eylemlerin hatalarını ayıklayabilirsiniz. yürütülebilir dosyaları veyabetikleri temel alan özel eylemlerle dinamik hata ayıklama yapmak mümkün değildir.

Bu bölümde açıklanan teknikler, Windows Installer özel eylemlerinde hata ayıklamanıza yardımcı olabilir. Windows içinHata Ayıklama Araçları hakkında bilgi için Windows Sürücü Seti'nin (WDK) Sürücü Geliştirme Araçları bölümüne bakın.

Windows Installer, hangi özel eylemin hata ayıklanması gerektiğini belirlemek için MsiBreak ortam değişkenini kullanır. Özel eylemin kaynak koduna erişiminiz varsa, MsiBreak olmadan hata ayıklamayı kullanabilirsiniz. MsiBreak olmadan hata ayıklamaya başlamak için, eylemin kodunun başına geçici bir ileti kutusu yerleştirin. Yükleme sırasında ileti kutusu görüntülendiğinde, hata ayıklayıcıyı ileti kutusuna sahip olan işleme ekleyin. Ardından gerekli kesme noktalarını ayarlayabilir ve yürütmeyi sürdürmek için ileti kutusunu kapatabilirsiniz. Bu yöntemle özel eylemin önceki bölümlerinde hata ayıklamak mümkün değildir.

Özel eylemin hatalarını ayıklamak için MsiBreak ortam değişkenini kullanmak için MsiBreak'i CustomAction tablosundaki özel eylemin adınaayarlayın. MsiBreak bir sistem veya kullanıcı ortam değişkeni olabilir. Değişken bir sistem değişkeni olarak ayarlanırsa, yeni değeri algılamak için değer değiştirildiğinde sistemin yeniden başlatılması gerekebilir.

Katıştırılmış kullanıcı arabiriminde hata ayıklamak için MsiBreak ortam değişkenini kullanmak için MsiBreak değerini MsiEmbeddedUI olarak ayarlayın.

Windows Installer, MsiBreak ortam değişkenini yalnızca kullanıcı yöneticiyse denetler. Bu yönetilen uygulamaolsa bile, kullanıcı Yönetici değilse yükleyici MsiBreak değerini yoksayar.

Yürütme sırasında yükseltilmiş (sistem) ayrıcalıklarıyla çalışan özel bir eylemin hatalarını ayıklarsanız, hata ayıklayıcıyı Windows Installer hizmetine ekleyin. Yürütme sırasında kimliğine bürünülen ayrıcalıklarla çalışan özel bir eylemin hatalarını ayıklarken, sistem hangi işlemin hata ayıklanması gerektiğini belirten bir iletişim kutusuyla istem gönderir. Kullanıcıya hangi işlemin hata ayıklanacağını belirten bir iletişim kutusu istenir. Yükseltilmiş özel eylemler hakkında daha fazla bilgi için bkz. Özel Eylem Güvenliği.

Hata ayıklayıcısı doğru işleme eklendikten sonra, yükleyici DLL'nin giriş noktasını çağırmadan hemen önce bir hata ayıklayıcı kesme noktası tetikler. Kesme noktasında, DLL'niz işleme zaten yüklenmiş ve giriş noktası adresi belirlenmiştir. Özel eylem DLL'niz yüklenemediyse veya özel eylem giriş noktası yoksa, kesme noktası tetiklenmez. Kesme noktası DLL işlevi çağrılmadan önce tetiklendiğinden, kesme noktası tetiklendikten sonra özel eylem giriş noktanız çağrılana kadar ilerlemek için hata ayıklayıcınızı kullanmanız gerekir. Alternatif olarak, özel eyleminizin herhangi bir yerinde kesme noktası ayarlayabilir ve normal yürütmeyi sürdürebilirsiniz.

Windows Installer, İkili tablosunda depolanmayan DLL'leri doğrudan DLL konumundan yürütür. Yükleyici, İkili tabloda depolanan bir DLL'nin özgün adını bilmez ve DLL özel eylemini geçici bir dosya adı altında çalıştırır. Geçici dosya adının biçimi MSI'dir?????. TMP. Windows XP'de, bu geçici dosya genellikle \Installer>WindowFolder <güvenli bir konumda depolanır.

Hata ayıklama için oluşturulan birçok DLL'nin dll dosyasının bir parçası olarak ilgili PDB dosyasının adını ve yolunu içerdiğini unutmayın. PDB'nin DLL'de depolanan konumda bulunabildiği bir sistemde bu tür dll hatalarını ayıklarken, semboller hata ayıklayıcı aracı tarafından otomatik olarak yüklenebilir. PDB'nin depolanmış konumda bulunamadığı, hata ayıklayıcının depolanan konumdan sembol yüklemeyi desteklemediği veya DLL'nin hata ayıklama bilgileriyle derlenmediği durumlarda, sembol dosyalarınızı geçici DLL dosyasını içeren klasöre yerleştirmeniz gerekebilir.

Yükleyici, özel eylem betikleri için hata ayıklama bilgilerini yükleme günlük dosyasına ekler.

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] }