Inno setup 如果在Inno安装程序中更新安装,则排除ssPostInstall步骤中的部分代码部分

Inno setup 如果在Inno安装程序中更新安装,则排除ssPostInstall步骤中的部分代码部分,inno-setup,pascalscript,Inno Setup,Pascalscript,我尝试使用相同的安装程序(新安装和更新) 因此,如果用户第一次尝试安装我的应用程序,它将运行包含完整安装的MySQL安装程序作为先决条件,并且[code]中的MySQL安装部分将正常执行 但是,如果用户已经安装了我的应用程序,并且安装程序是较新版本(更新),则不应执行[code]中的MySQL安装部分 那么,如果安装只是更新,如何为这部分代码(MySQL安装)实现异常功能呢 [代码] 过程CurStepChanged(CurStep:TSetupStep); { ... } 开始 如果Cur

我尝试使用相同的安装程序(新安装和更新)

  • 因此,如果用户第一次尝试安装我的应用程序,它将运行包含完整安装的MySQL安装程序作为先决条件,并且
    [code]
    中的MySQL安装部分将正常执行
  • 但是,如果用户已经安装了我的应用程序,并且安装程序是较新版本(更新),则不应执行
    [code]
    中的MySQL安装部分
那么,如果安装只是更新,如何为这部分代码(MySQL安装)实现异常功能呢

[代码]
过程CurStepChanged(CurStep:TSetupStep);
{ ... }
开始
如果CurStep=ssPostInstall,则
开始
{新安装代码}
结束;
结束;

您可以使用
IsUpgrade
功能从我的答案升级到
:

虽然它依赖于“Uninstall”注册表项的存在(在
ssPostInstall
时已存在),但您必须缓存其值

var
IsUpgradeCached:布尔值;
函数InitializeSetup():Boolean;
开始
IsUpgradeCached:=IsUpgrade;
结果:=真;
结束;
过程CurStepChanged(CurStep:TSetupStep);
{ ... }
开始
如果(CurStep=ssPostInstall)和(不是IsUpgradeCached),则
开始
{新安装代码}
结束;
结束;

谢谢@Martin Prikryl,我可以使用“IsUpgarde”功能跳过数据库输入页面,并在[文件]部分使用相同的功能吗?!当然,您可以在任何需要的地方使用它。我尝试了您上面描述的解决方案,但它不起作用,我在这里详细发布了一个新问题,@Martin PrikrylOK,抱歉,它在
ssPostInstall
中不起作用。我已经更新了我的答案。很抱歉迟到了,我只是在代码中遇到了一些问题,但在我解决了它之后,您更新的代码运行得非常好@马丁·普里克里尔