2010-11-18 9 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を認識していないようです。私も含めて試しました

uses 
SysUtils; 

しかし、コンパイラはSysUtilsも認識しません。 IISが既にインストールされているかどうかを調べるために見ることができるレジストリキーのようなものがありますか?
ご協力いただければ幸いです。

+0

_myコンパイラversion_は、IIS Pascal Scriptインタープリタを意味しますか?あるいは、本当の(デルファイ)コンパイラを意味しますか? – jachguate

+0

私は、INNO Pascal Scriptインタプリタを意味します。混乱のため申し訳ありません – Rishi

+0

ああ、私のコードの書式を修正していただきありがとうございます。今後も心に留めておきます:) – Rishi

答えて

4

Rishi RaiseException関数を2つのパラメータで使用していますが、この関数は2つのパラメータのみをサポートしています。この

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

はい、これも試しました。何らかの奇妙な理由のために、例外は捕らえられません。コードは例外の内部に到達することはありません。私はある種の「用法」条項がないと思っていますか?あなたの助けをありがとう – Rishi

+0

私の悪い。これは正常に動作します。 exeを実行するのではなく、INNOのデバッガでデバッグしていたので、例外が発生しました。ありがとう – Rishi

1

のように、この機能を使用して

procedure RaiseException(const Msg: String); 

試みは、特定のファイルがこのディレクトリの下に存在するかどうかをチェックする必要がありますので、常にの%windir%\ system32 \ inetsrvににインストールIIS。たとえば、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 

関連する問題