Отладка пользовательских действий

Вы можете отлаживать пользовательские действия, основанные на библиотеках динамической компоновки , с помощью средств отладки для Windows. Динамическую отладку нельзя использовать с пользовательскими действиями на основе исполняемых файлов или скриптов.

Методы, описанные в этом разделе, могут помочь в отладке пользовательских действий установщика Windows. Сведения о средствах отладки для Windows см. в разделе Средства разработки драйверов windows (WDK).

Установщик Windows использует переменную среды MsiBreak для определения отлаживаемого действия. Если у вас есть доступ к исходному коду настраиваемого действия, вы можете использовать отладку без MsiBreak. Чтобы начать отладку без MsiBreak, поместите временное окно сообщения в начало кода действия. Когда во время установки появится окно сообщения, присоедините отладчик к процессу, владеющего окном сообщения. Затем можно задать все необходимые точки останова и закрыть окно сообщения, чтобы возобновить выполнение. Этот метод не позволяет выполнить отладку предыдущих частей настраиваемого действия.

Чтобы использовать переменную среды MsiBreak для отладки настраиваемого действия, задайте для MsiBreak имя настраиваемого действия в таблице CustomAction. MsiBreak может быть системной или пользовательской переменной среды. Если переменная задана как системная, может потребоваться перезагрузка системы при изменении значения для обнаружения нового значения.

Чтобы использовать переменную среды MsiBreak для отладки внедренного пользовательского интерфейса, задайте для msiBreak значение MsiEmbeddedUI.

Установщик Windows проверяет переменную среды MsiBreak, только если пользователь является администратором. Установщик игнорирует значение MsiBreak, если пользователь не является администратором, даже если это управляемое приложение.

При отладке настраиваемого действия, которое выполняется с повышенными (системными) привилегиями в последовательности выполнения, подключите отладчик к службе установщика Windows. При отладке настраиваемого действия, выполняемого с олицетворенным привилегиями в последовательности выполнения, система запрашивает диалоговое окно, указывающее, какой процесс следует отлаживать. Пользователю будет предложено диалоговое окно с указанием процесса для отладки. Дополнительные сведения о настраиваемых действиях с повышенными привилегиями см. в разделе Безопасность пользовательских действий.

После подключения отладчика к правильному процессу установщик активирует точку останова отладчика непосредственно перед вызовом точки входа библиотеки DLL. В точке останова библиотека DLL уже загружена в процесс и определяется адрес точки входа. Если не удалось загрузить библиотеку DLL пользовательского действия или точка входа пользовательского действия не существует, точка останова не активируется. Так как точка останова активируется перед вызовом функции DLL, после активации точки останова следует использовать отладчик для перехода вперед, пока не будет вызвана точка входа пользовательского действия. Кроме того, можно установить точку останова в любом месте настраиваемого действия и возобновить нормальное выполнение.

Установщик Windows выполняет библиотеки DLL, не хранящиеся в таблице Binary , непосредственно из расположения DLL. Установщик не знает исходное имя библиотеки DLL, хранящейся в таблице Binary, и запускает настраиваемое действие DLL под временным именем файла. Имя временного файла — MSI?????. TMP. В Windows XP этот временный файл хранится в безопасном расположении, обычно <WindowFolder>\Installer.

Обратите внимание, что многие библиотеки DLL, созданные для отладки, содержат имя и путь к соответствующему PDB-файлу в составе самой библиотеки DLL. При отладке этого типа библиотеки DLL в системе, где PDB-файл находится в расположении, хранящейся в библиотеке DLL, отладчик может автоматически загружать символы. В ситуациях, когда PDB не удается найти в сохраненном расположении, где отладчик не поддерживает загрузку символов из сохраненного расположения или когда библиотека DLL не была создана с отладочной информацией, может потребоваться поместить файлы символов в папку с временным DLL-файлом.

Установщик добавляет сведения об отладке для скриптов пользовательских действий в файл журнала установки.

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