Исключает часть раздела кода в шаге ssPostInstall, если установка обновляется в Inno Setup. - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь использовать один и тот же установщик для обоих (новая установка и обновление).

  • , поэтому, если пользователь попытается установить мое приложение впервые, он запустит полную установку, включающую установщик MySQL, в качестве предварительных условий,и часть установки MySQL в [Code] будет выполняться нормально.
  • , но, если пользователь уже установил мое приложение, и установщик имеет более новую версию (обновление), часть установки MySQL в [Code] не должнаt be execute.

Итак, как реализовать функцию исключения для этой части кода (установка MySQL), если установка только обновляется?

[Code]

procedure CurStepChanged(CurStep: TSetupStep);
{ ... }
begin
  if CurStep = ssPostInstall then
  begin
    { fresh installation code }
  end;
end;

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете использовать функцию IsUpgrade из моего ответа на
Может ли Inno Setup по-разному реагировать на новую установку и обновление? :

Хотя, поскольку она зависит от присутствияраздела реестра «Uninstall», который уже существует во время ssPostInstall, необходимо кэшировать его значение.

var
  IsUpgradeCached: Boolean;

function InitializeSetup(): Boolean;
begin
  IsUpgradeCached := IsUpgrade;
  Result := True;
end;

procedure CurStepChanged(CurStep: TSetupStep);
{ ... }
begin
  if (CurStep = ssPostInstall) and (not IsUpgradeCached) then
  begin
    { fresh installation code }
  end;
end;
...