2010-11-18 4 views
3

사용자가 이미 IIS 버전을 설치했는지 확인하는 방법을 찾고 있습니다. 그렇지 않으면 IIS 설치 스크립트를 실행합니다.INNO 설치를 사용하여 기존 IIS 설치를 검색하는 방법은 무엇입니까?

try 
    IIS := CreateOleObject('IISNamespace'); 
    except 
    RaiseException(ExceptionType, ‘IIS not installed. Setup will now install IIS on your machine. ’#13#13'(Error ‘’’+ExceptionParam+’’’ occured)’); 
    end; 

을하지만, 어떤 이유로, 내 컴파일러 버전은 RaiseException 연구를 인식하지 않는 것 :

나는 내가 예외 처리 절 알고. 나는 또한 포함하려고 시도했다.

그러나 컴파일러는 SysUtils도 인식하지 못한다. IIS가 이미 설치되어 있는지 여부를 확인할 수있는 레지스트리 키와 같은 것이 있습니까?
도움이 될 것입니다.

+0

_my 컴파일러 버전은 IIS 파스칼 스크립트 인터프리터를 의미합니까? 아니면 진짜 (델파이) 컴파일러를 의미합니까? – jachguate

+0

나는 이노 파스칼 스크립트 인터프리터를 의미합니다. 혼란에 대한 죄송합니다 – Rishi

+0

오, 내 코드 서식을 수정 주셔서 감사합니다. 나중에 명심하십시오. – Rishi

답변

4

리시 RaiseException 함수는 2 개의 매개 변수를 사용하지만이 함수는 하나만 지원합니다.

procedure RaiseException(const Msg: String); 

var 
IIS : variant; 
begin  
    try 
    IIS := CreateOleObject('IISNamespace'); 
    except 
    RaiseException('IIS not installed. Setup will now install IIS on your machine'); 
    end; 
end; 
+0

예, 저도 시도했습니다. 어떤 이상한 이유 때문에 예외가 잡히지 않습니다. 코드는 예외의 내부에 도달하지 않습니다. 저는 일종의 'uses'절을 놓치고 있다고 생각하기 시작 했습니까? 당신의 도움에 감사합니다 – Rishi

+0

나의 나쁜. 이것은 잘 작동합니다. EXE를 실행하는 대신 INNO의 디버거에서 디버깅을했기 때문에 예외가 발생했습니다. 감사 – Rishi

1

IIS 항상을 % windir에 설치처럼이 기능을 사용하려고 % \ system32를 \ inetsrv에 특정 파일이 디렉토리 아래에있는 경우 확인해야하므로. 예를 들어 IIS 6/7의 경우 w3wp.exe가이 폴더에 있어야합니다.

2

시도 :

[CustomMessages] 
iis_title=Internet Information Services (IIS) 


[Code] 
function iis(): boolean; 
begin 
    if not RegKeyExists(HKLM, 'SYSTEM\CurrentControlSet\Services\W3SVC\Security') then 
     MsgBox(FmtMessage(CustomMessage('depinstall_missing'), [CustomMessage('iis_title')]), mbError, MB_OK) 
    else 
     Result := true; 
end 

;