14

NSIS では非常に強力なインストーラーを作成できますが、NSIS が使用する「アセンブリを思い起こさせるほど低レベルの言語」は間違いを犯しやすいため、ファイルの書き込み以外のより複雑な処理をインストーラーに実行させたい場合は、デバッグは必須です。

これまで、次のDr Printfのようなデバッグ手法を使用してきました。

  • .nshどこにでもインクルードするファイルでは、 define NSIS_DEBUG_MSGの値に従ってマクロを定義します。DEBUG
    • DEBUGonの場合、マクロはデバッグ メッセージを含むメッセージ ボックスをトリガーします。
    • DEBUGoffの場合、マクロは何もしません

この方法はうまく機能しましたが、いくつかの欠点があります。

  • NSIS_DEBUG_MSG問題を解決するのに十分な情報が得られるまで、呼び出しで失敗していると思われるコードを入力し、インストーラーを数回再構築する必要があります。
  • 私の問題がインストーラー自体が失敗することである場合(インストーラープログラムが停止した場合)、それは私には何の役にも立ちません。

だから私が知りたかったのは、これらのインストーラーにどのようなデバッグ方法を使用しているのかということです。

4

4 に答える 4

6

私が NSIS を使用している間、次の点が注目に値します。

自作のツールで !verbose 3 レベルの出力を解析することほど強力なものはないことがわかりました ;)

NSIS ベースのデバッグ方法に依存できないことがわかりました。クラッシュする可能性があり、インストーラーも一緒にクラッシュします。かわいくないでしょ?:(

オンデマンドでのデバッグの有効化/無効化は、不安定な NSIS ビルドと失敗した NSIS ビルドを区別できるため、idsses に対する非常に強力な武器でもあることがわかりました (ただし、CI 用語を使用する方が簡単です... :))。

リアルタイムの自動 NSIS テストなしの詳細な出力は、キャデラックを自転車のエンジンで運転するようなものであることがわかりました :)


誤ってこの質問にアクセスした人の助けになることを願っています:)

編集:サードパーティのツールから始めることは常に良い考えです。たとえば、次のようなツールを使用する方が常に簡単であるため、GUI に煩わされる必要はありません。


編集 #2:デバッグのための非常に効果的な方法は、直接ドキュメントの自動化を使用することであることがわかりました。現在、次のコンポーネントを使用しています。

その結果、スクリーンショットを取得した後nsDialog:Show、wikiで更新された画像を取得しました:) ..残っているのは、から情報を取得することだけですsvnlook:)


編集 #3:また、svnlook の必要性は、Delphi および Lazarus IDE 0.9.30.2 の NSIS v2.44 ヘッダーを使用して DLL をエクスポートする svn log --xml を構築することによって回避されます:) Lazarus に称賛を!

ウーフー!:)


編集 #4:ここでこの小さな議論をヒット: http://forums.winamp.com/showthread.php?t=325521

于 2012-04-10T10:54:28.603 に答える
5

時間を大幅に節約できたのは、NSIS によって作成されたログを使用したことです。スクリプトのコンパイル中のログとインストール ログの両方。これにより、定義したマクロが使用されていること、およびインストールで必要なスクリプトが実際に実行されていることを確認できます。

少なすぎるように思えるかもしれませんが、分割統治の原則とともに、50 個以上の nsh ファイルのインストール ソフトウェアを実行し続けるために必要なものはこれですべてです。

于 2009-11-10T14:03:56.227 に答える
2

私はDumpState プラグインをよく使用しますが、スタックの問題については基本的なメッセージ ボックスよりもはるかに優れています。また、すべてのレジスタを設定するマクロを使用する傾向があります。$0=r0,$1=r1 などなので、スタックが正しい状態にあることがわかります。もちろん、これは設計段階でのみ有用であり、エンドユーザーシステムでのデバッグにはあまり役立ちません...

于 2012-05-21T18:01:06.933 に答える
2

高度なロギングを備えた公式サイトから、NSIS の特別なビルドの 1 つをダウンロードできます。これにより、デバッグを容易にする非常に詳細なログ情報が得られます。

于 2009-11-20T18:50:43.000 に答える