Пропустить установку в Inno Setup, если другая программа не установлена

#installation #inno-setup

#установка #inno-setup

Вопрос:

Я должен найти способ пропустить установку, если другая программа не установлена. Я могу обнаружить реестр другой программы (базовый скрипт возвращает true / false), это не проблема. Но я не знаю, как пропустить установку.

Вкратце: если один раздел в реестре не установлен, выведите сообщение «установите программу xyz перед этим» и завершите инсталлятор.

Ответ №1:

Это очень просто. Просто добавьте

 [Code]

function IsApp2Installed: boolean;
begin
  result := RegKeyExists(HKEY_LOCAL_MACHINE,
    'SOFTWAREMicrosoftWindowsCurrentVersionApp Pathsapp2.exe');
end;

function InitializeSetup: boolean;
begin
  result := IsApp2Installed;
  if not result then
    MsgBox('You need to install App2 before you install ThisApp. Install App2 and then run this installer again.', mbError, MB_OK);
end;
  

в ваш файл ISS. InitializeSetup это так называемая функция событий, которая выполняется при запуске программы установки (даже до отображения графического интерфейса мастера). Если вы вернетесь false , программа установки немедленно завершит работу.