Методы отладки установщиков NSIS? - PullRequest
12 голосов
/ 27 октября 2009

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

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

  • В файле .nsh, который я включаю везде, я определяю макрос NSIS_DEBUG_MSG в соответствии со значением DEBUG define
    • если DEBUG равно на , макрос вызовет MessageBox с сообщением отладки
    • если DEBUG равно выключено , макрос ничего не сделает

Этот метод хорошо мне помог, но имеет некоторые недостатки:

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

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

Ответы [ 4 ]

6 голосов
/ 10 апреля 2012

Во время моего использования NSIS, есть следующие вещи:

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

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

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

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


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

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

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

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

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


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

Woohoo! :)


РЕДАКТИРОВАТЬ # 4: Пройдите эту небольшую дискуссию здесь: http://forums.winamp.com/showthread.php?t=325521

5 голосов
/ 10 ноября 2009

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

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

2 голосов
/ 21 мая 2012

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

2 голосов
/ 20 ноября 2009

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

...