SQLデータベースを作成および削除するインストーラーとアンインストーラーをNSISで作成しましたが、正常に動作しています。データベースを作成および削除するためにいくつかの .bat および .sql ファイルを作成し、NSIS スクリプトからこれらのファイルを呼び出すだけです。私の問題は、このデータベースを SQL Server Management Studio で開いたままにし、理想的にはアンインストーラーを実行すると、データベースが開かれているというエラー メッセージが表示されることです。私の場合、アンインストーラーの成功メッセージが表示されますが、データベースが適切にドロップされません。NSIS でこのエラーを処理するにはどうすればよいですか?
3 に答える
これらの sql ファイルを NSIS からどのように呼び出すかによって異なります。SQL コマンド ラインを使用していると仮定すると、nsExec::ExecToStack を使用して出力をキャプチャできます。文字列の長さの制限に注意してください (NSIS の特別なビルドの 1 つで変更できます): http://nsis.sourceforge.net/Docs/nsExec/nsExec.txt
コマンド ラインがゼロ以外のリターン コードを返したかどうかを示す、スタックの一番上にあるエラーを確認します。エラーがない場合でも、sql コマンドの出力を解析して、そこにエラーが記録されているかどうかを確認する必要があります。詳細なエラー出力などを指定するために、パラメータを sql コマンド ラインに渡す必要がある場合があります。どのシナリオでどのような出力が生成されるかを実験して確認するのは、あなた次第です。私は通常、ExecToStack からの出力をログに記録して、何が返されたかを後で確認できるようにします。
.bat ファイルはエラー コード (1 など) で終了するはずです。.bat を呼び出すと (ExecWait を使用していると思われます)、リターン コードをキャッチできます。次に、リターン コードをエラーと比較し、等しい場合は SetErrors 関数を呼び出します。必要に応じて、サンプルコードを提供できます。