Как обнаружить существующую установку IIS с помощью установки INNO? - PullRequest
3 голосов
/ 19 ноября 2010

Я ищу способ определить, установлена ​​ли у пользователя версия 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 ]

4 голосов
/ 19 ноября 2010

Риши, вы используете функцию 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;
2 голосов
/ 24 января 2011

Попробуйте:

[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

;

2 голосов
/ 19 ноября 2010

IIS всегда устанавливается в% windir% \ system32 \ inetsrv, поэтому вам следует проверить, существуют ли определенные файлы в этом каталоге.Например, в этой папке должен существовать файл w3wp.exe для IIS 6/7.

...