2009-10-14 2 views
0

사용자 지정 .msi 설치 관리자 작업을위한 스크립트 작성. 설치 프로그램에서 스크립트를 호출하면 Session.Property("PropName")세션이 MSI에 대해 정의되지 않은 cmd 행의 VBScript 런타임 오류 "개체 필요 : '세션'을 catch하는 방법

을 통해 설치 프로그램 속성을 얻을 수 있습니다. 설치 프로그램을 통해 호출하지 않으면 런타임 예외가 발생합니다. 설치자없이 개발하고 디버깅 할 수 있도록 스크립트를 원합니다. 이 오류를 어떻게 잡을 수 있습니까?

if Session != null 
    setting=Session.Property("prop1") 
else 
    setting="SomeOtherSetting" 
end if 
+0

정확한 스크립트를 사용하여 VB 사용자 지정 동작을 디버깅 할 수있는 방법이 없다고 생각합니다. 나는 항상 디버깅 목적으로 빠르게 컴파일하는 더미 프로젝트를 유지한다. BTW, UI 실행 중에 속성에 액세스하려고합니까? – KMoraz

답변

1

당신이 널 (null)를 확인하기 위해 VBScript를 구문을 찾고 계십니까 :

내가 좋아하는 뭔가를하고 싶어?

이 방법에 대해 :

If (IsNull(Session)) Then 
    setting=Session.Property("prop1") 
Else 
    setting="SomeOtherSetting" 
End If 
+0

작동하지 않았 음 :/런타임 오류가 발생하지 않도록하고 싶습니다. Session 객체는 내 스크립트를 호출하는 설치 프로그램에서 자동으로 초기화됩니다. 나는 변수를 초기화함으로써이 런타임 객체에 대해 경계하고 싶습니다. 디버깅하는 동안 다른 방법이 필요합니다. – blak3r

0

문제는 Session 객체가 그래서 그 속성이나 메서드에 대한 참조가 예외를 발생합니다, MSI 스크립트의 외부에서 정의되지 않는 것입니다.

If Not IsEmpty(Session) Then 
    setting = Session.Property("prop1") 
Else 
    setting = "SomeOtherSetting" 
End If 

또 다른 가능한 솔루션은 속성과 Session 개체의 메서드를 참조하여 발생하는 예외 잡으려고 On Error Resume Next 문을 사용하고 있습니다 :

를 객체 나 변수가 정의되어있는 경우, 당신은 IsEmpty 기능을 사용할 수 있습니다 확인하려면
On Error Resume Next 

setting = Session.Property("prop1") 

If Err.Number <> 0 Then 
    setting = "SomeOtherSetting" 
End If 
+0

나는 아직도 그 코드로 런타임 오류를 얻는다. – blak3r