首页 > 解决方案 > 如果安装在 Inno Setup 中更新,则在 ssPostInstall 步骤中排除部分代码部分

问题描述

我尝试对两者使用相同的安装程序(全新安装和更新)。

那么,如果安装只是更新,如何实现这部分代码(MySQL安装)的异常功能呢?

[Code]

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

标签: inno-setuppascalscript

解决方案


您可以使用IsUpgrade我对
Inno Setup 的回答中的功能可以对新安装和更新做出不同的响应吗?

虽然它依赖于在 时已经存在的“卸载”注册表项的存在,但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;

推荐阅读