Ladění vlastních akcí
Můžete ladit vlastní akce založené na dynamické knihovny pomocí nástrojů pro ladění windows. Není možné použít dynamické ladění s vlastními akcemi, které jsou založeny na spustitelných souborech nebo skriptech .
Techniky popsané v této části vám mohou pomoci ladit vlastní akce Windows Installeru. Informace o nástrojích pro ladění pro Systém Windowsnaleznete v části Nástroje pro vývoj ovladačů v sadě Windows Driver Kit (WDK).
Instalační služba systému Windows používá proměnnou prostředí MsiBreak k určení, která vlastní akce se má ladit. Pokud máte přístup ke zdrojovému kódu vlastní akce, můžete použít ladění bez MsiBreaku. Pokud chcete spustit ladění bez MsiBreaku, umístěte dočasné okno zprávy na začátek kódu akce. Když se během instalace zobrazí okno se zprávou, připojte ladicí program k procesu, který je vlastníkem pole zprávy. Potom můžete nastavit všechny nezbytné zarážky a zavřít okno se zprávou a pokračovat v provádění. Touto metodou není možné ladit dřívější části vlastní akce.
Pro ladění uživatelské akce pomocí proměnné prostředí MsiBreak nastavte MsiBreak na název uživatelské akce v tabulce CustomAction . MsiBreak může být systém nebo proměnná uživatelského prostředí. Pokud je proměnná nastavená jako systémová proměnná, může být při změně hodnoty potřeba restartování systému, aby se zjistila nová hodnota.
Pokud chcete použít proměnnou prostředí MsiBreak k ladění vloženého uživatelského rozhraní, nastavte hodnotu MsiBreak na MsiEmbeddedUI.
Instalační služba systému Windows zkontroluje proměnnou prostředí MsiBreak pouze v případě, že je uživatel správcem. Instalační program ignoruje hodnotu MsiBreak, pokud uživatel není správcem, i když se jedná o spravovanou aplikaci.
Pokud ladíte vlastní akci, která běží se zvýšenými systémovými oprávněními v pořadí provádění, připojte ladicí program ke službě Instalační služba systému Windows. Při ladění vlastní akce, která se spouští s pověřenými pravomocemi v rámci provádění, systém zobrazí výzvu s dialogovým oknem, které označuje, který proces má být laděn. Uživateli se zobrazí výzva s dialogovým oknem označujícím, který proces se má ladit. Další informace o vlastních akcích se zvýšenými oprávněními najdete v tématu zabezpečení vlastních akcí.
Jakmile je ladicí program připojený ke správnému procesu, instalační program aktivuje zarážku ladicího programu bezprostředně před voláním vstupního bodu knihovny DLL. Na breakpointu je knihovna DLL již načtena do procesu a určena adresa vstupního bodu. Pokud nelze načíst knihovnu DLL vlastních akcí nebo neexistuje vstupní bod vlastní akce, neaktivuje se žádná zarážka. Vzhledem k tomu, že se zarážka aktivuje před voláním funkce KNIHOVNY DLL, po aktivaci zarážky byste měli pomocí ladicího programu přejít vpřed, dokud se nevolá vstupní bod vlastní akce. Alternativně můžete nastavit zarážku kdekoli ve vlastní akci a pokračovat v běžném provádění.
Instalační služba systému Windows spustí knihovny DLL, které nejsou uloženy v tabulce binárních souborů , přímo z jejich umístění. Instalační program nezná původní název knihovny DLL uložené v binární tabulce a spustí vlastní akci DLL pod dočasným názvem souboru. Forma dočasného názvu souboru je MSI?????. TMP. V systému Windows XP je tento dočasný soubor uložen v zabezpečeném umístění, obvykle <WindowFolder>\Installer.
Všimněte si, že mnoho knihoven DLL vytvořených pro ladění obsahuje název a cestu odpovídajícího souboru PDB jako součást samotné knihovny DLL. Při ladění tohoto typu knihovny DLL v systému, kde lze soubor PDB najít v umístění uloženém v knihovně DLL, mohou být symboly načteny automaticky nástrojem ladicího programu. V situacích, kdy nelze najít soubor PDB v uloženém umístění, kde ladicí program nepodporuje načítání symbolů z uloženého umístění nebo kde knihovna DLL nebyla sestavena s informacemi o ladění, možná budete muset umístit soubory symbolů do složky s dočasným souborem DLL.
Instalační program přidá ladicí informace pro skripty vlastních akcí do souboru protokolu instalace.
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] }