Способы отладки установщиков NSIS?

Хотя NSIS позволяет создавать довольно мощные установщики, «язык настолько низкого уровня, что он напоминает мне сборку», который использует NSIS, весьма склонен к ошибкам, и поэтому, когда вы хотите, чтобы ваш установщик выполнял что-то более сложное, кроме записи файлов, отладка - необходимость.

До сих пор я использовал следующую технику отладки, похожую на Dr Printf:

  • In a .nsh file that I include everywhere, I define a NSIS_DEBUG_MSG macro according to the value of a DEBUG define
    • if DEBUG is on, the macro will trigger a MessageBox with the debug message
    • если DEBUG выключено, макрос ничего не сделает

Этот метод мне пригодился, но у него есть некоторые недостатки:

  • он требует, чтобы я заполнил код, который, как мне кажется, не работает с вызовами NSIS_DEBUG_MSG, и перестроил программу установки несколько раз, пока я не получу достаточно информации, позволяющей мне решить проблему
  • это не принесет мне пользы, если моя проблема в том, что сам установщик не работает (если программа установщика умирает)

Итак, я хотел знать, какие методы отладки вы используете для этих установщиков, чтобы, надеюсь, я смогу улучшить свои.


person Miguel Ventura    schedule 27.10.2009    source источник
comment
Было бы неплохо принять ответ ...   -  person HX_unbanned    schedule 24.05.2012


Ответы (4)


За время работы с NSIS можно было заметить следующие вещи:

Я обнаружил, что нет ничего более мощного, чем разбор! Подробного трехуровневого вывода с помощью самодельного инструмента;)

Я обнаружил, что вы НЕ можете полагаться ни на какие методы отладки, основанные на NSIS. Это может привести к сбою .. и ваш установщик выйдет из строя вместе с ним. Не красиво, а? :(

Я обнаружил, что включение / отключение отладки по запросу также является очень мощным оружием против idsses, поскольку оно позволяет различать нестабильную и неудачную сборку NSIS (хотя проще использовать терминологию CI ... :)).

Я обнаружил, что подробный вывод без автоматизированного тестирования NSIS в реальном времени похож на вождение Cadillac с двигателем велосипеда :)


Надеюсь, это поможет тем, кто случайно зашел в этот вопрос :)

РЕДАКТИРОВАТЬ: Всегда полезно начинать со сторонних инструментов. Например, не нужно возиться с графическим интерфейсом, так как всегда проще использовать такие инструменты, как:

  • EclipseNSIS (хотя мне это не нравится: P)
  • Конструктор диалогов NSIS (http://nsis.sourceforge.net/NSIS_Dialog_Designer)
  • Самодельный статический анализатор кода. Сделал для себя: P

РЕДАКТИРОВАТЬ №2: Я обнаружил, что довольно эффективным методом отладки является прямая автоматизация документации. В настоящее время я использую следующие компоненты:

В результате я получил снимок экрана после nsDialog:Show, плюс я получил обновленные изображения в вики :) .. осталось только получить информацию из svnlook :)


РЕДАКТИРОВАТЬ № 3: И необходимость svnlook также обходится путем создания svn log --xml, экспортирующей DLL с использованием заголовка NSIS v2.44 для Delphi и Lazarus IDE 0.9.30.2 :) Престижность Lazarus !

Woohoo! :)


ИЗМЕНИТЬ №4: Начните это небольшое обсуждение здесь: http://forums.winamp.com/showthread.php?t=325521

person HX_unbanned    schedule 10.04.2012
comment
NSIS сумасшедший. Мне приходится иметь дело с устаревшим установщиком nsis, который содержит несколько тысяч строк кода. Я мог бы написать лучший установщик с WinRAR + Lazarus с меньшим количеством строк. - person Z80; 06.05.2021

Что сэкономило мне много времени, так это использование журналов, созданных NSIS. И журнал компиляции скриптов, и журнал установки. Они позволяют мне проверить, что макросы, которые я определил, используются, и что установка действительно запускает сценарии, которые они должны.

Это может показаться слишком маленьким, но на самом деле это все, что мне нужно, чтобы мое программное обеспечение для установки более 50 файлов nsh работало, а также принцип «разделяй и властвуй».

person daramarak    schedule 10.11.2009
comment
Да, единственная проблема со сбором и анализом журнала времени компиляции (в моей среде сборки) заключается в том, что NSIS не имеет какой-либо проверки битрейта во время компиляции. В настоящее время наличие высокоинтегрированного ведения журнала только для 32-битной версии определенно недолговечное решение, не говоря уже о в основном неэффективном использовании системных ресурсов ... - person HX_unbanned; 02.11.2012

Вы можете загрузить одну из специальных сборок NSIS с официального сайта с расширенным ведением журнала. Это даст вам очень подробную информацию журнала, которая упростит отладку.

person AaronLS    schedule 20.11.2009
comment
Если вы ищете ссылку, - person sonyisda1; 26.08.2019

Я часто использую плагин DumpState, намного лучше, чем простое окно сообщений для проблем со стеком. Я также предпочитаю использовать макрос, который устанавливает все регистры; $ 0 = r0, $ 1 = r1 и т. Д., Поэтому я знаю, что стек находится в правильном состоянии. Это, конечно, полезно только на этапе проектирования и не столько для отладки в системе конечных пользователей ...

person Anders    schedule 21.05.2012
comment
Тем не менее - он требует дополнительного обслуживания, как и плагин nsisdbg ... Я не нахожу никаких преимуществ в том, чтобы делать это или использовать nsisdbg в качестве вывода для структур данных: / .. ПЛЮС, мне нужно исправить плагин скриншотов nsis, чтобы он нормально работал под Windows Операционные системы NT 6.x ... - person HX_unbanned; 18.07.2012