如何使用INNO设置检测IIS的现有安装?

时间:2010-11-18 22:34:19

标签: delphi iis inno-setup pascalscript

我正在寻找一种方法来确定用户是否已安装了IIS版本。如果他没有,我将继续运行我的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? 任何帮助将非常感激。

3 个答案:

答案 0 :(得分:4)

Rishi你正在使用带有2个参数的RaiseException函数,但是这个函数只支持一个。

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;

答案 1 :(得分:2)

IIS始终安装到%windir%\ system32 \ inetsrv,因此您应检查此目录下是否存在特定文件。例如,IIS 6/7的此文件夹中应存在w3wp.exe。

答案 2 :(得分: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