2010-01-08 4 views
0

나는 제대로 작동하는 SQL 데이터베이스를 만들고 삭제하는 NSIS에 설치 프로그램과 제거 프로그램을 작성했습니다. 일부 .bat 및 .sql 파일을 작성하여 데이터베이스를 작성한 다음 NSIS 스크립트에서이 파일을 호출합니다. 내 문제는 SQL Server Management Studio에서이 데이터베이스를 열어두고 제거 프로그램을 실행하면 데이터베이스가 열렸다는 오류 메시지가 나타납니다. 내 경우에는 그것은 제거 프로그램의 성공 메시지를 보여 주지만 dosnt는 데이터베이스를 적절히 삭제합니다. NSIS에서 어떻게이 오류를 처리 할 수 ​​있습니까?NSIS- 오류 처리

답변

1

NSIS에서 이러한 sql 파일을 호출하는 방법에 따라 다릅니다. SQL 명령 줄을 사용한다고 가정하면 nsExec :: ExecToStack을 사용하여 출력을 캡처 할 수 있습니다. (특수 중 하나가 NSIS 빌드를 수정할 수 있습니다) 문자열 길이에 대한 제한 참고 : 명령 행이 0이 아닌 리턴 코드를 반환 여부를 나타내는 스택의 상단에 오류 http://nsis.sourceforge.net/Docs/nsExec/nsExec.txt

확인 . 오류가 없으면 sql 명령의 출력을 구문 분석하여 거기에 오류가 기록되었는지 확인해야합니다. 자세한 오류 출력 및 기타 등등을 지정하려면 매개 변수를 sql 명령 줄에 전달해야 할 수 있습니다. 실험을 통해 어떤 시나리오가 어떤 결과물을 만들어 내는지는 당신에게 달려 있습니다. 나는 일반적으로 ExecToStack의 결과를 기록하므로 반환 된 내용을보고 돌아갈 수 있습니다.

0

.bat 파일은 오류 코드 (예 : 1)와 함께 종료되어야합니다. .bat (ExecWait으로 추정)를 호출하면 리턴 코드를 찾을 수 있습니다. 그런 다음 반환 코드를 오류와 비교하고 동일한 경우 SetErrors 함수를 호출합니다. 원하는 경우 예제 코드를 제공 할 수 있습니다.

0

SQL과 RDMS 또는 다른 데이터베이스 유형을 다루는 것은 경험이 없으므로 데이터베이스 엔진 공급 업체가 말하지 않는 문제가 발생할 수 있습니다.

현재 작업 환경에서 가장 일반적인 방법 인 매우 생산적인 환경에서 NSIS 플러그인에서 처리하고 Objecy Oriented Programming (예 : , C#/C++/Delphi/.NET/등으로 코드를 작성한 경우) 설치 프로그램이 아니라 오류 처리가 중요합니다. 사실 - 설치 프로그램은 시스템 상태/팩토리에 대해 플러그인 재사용을 원하지만 다른 폐쇄 소스 제품에 완전히 국한되지 않도록주의해야하며 번들 제품의 구성을 처리하는 논리를 제공하지 않습니다.

다른 주석가들의 말처럼, 겸손한 견해로는 설치 프로그램 코드베이스 자체에 영향을주는 너무 많은 옵션과 설정에주의해야합니다. NSIS의 재 컴파일로 엉망이 아닌 SQL 파일 활용을 위해 재구성 된 논리를 얻고 싶습니다. :)

물론 nsExec을 사용하는 것이 그 한 가지 방법입니다. NSIS를 많이 사용 해본 적이 있다면 Plugin에서 별도로 플러그인 기반 스택 관리를 추가하여 돌볼 수 있다고 결론 내릴 수 있습니다. 번들 된 소프트웨어 설치 또는 기타 재구성 된 로직을 사용하면 구현 및 코드 기반이 일관성없고 신뢰할 수 없게됩니다.

Answer - 그렇게하지는 말고 옵션 만있는 경우 쉘 스크립팅이나 다른 OS 종속 기능이 아닌 콜백 방법론을 기반으로하십시오.