inno-setup - 如果安装在 Inno Setup 中更新,则在 ssPostInstall 步骤中排除部分代码部分
问题描述
我尝试对两者使用相同的安装程序(全新安装和更新)。
- 因此,如果用户第一次尝试安装我的应用程序,它将运行包含 MySQL 安装程序的完整安装作为先决条件,并且其中的 MySQL 安装部分
[Code]
将正常执行。 - 但是,如果用户已经安装了我的应用程序,并且安装程序是较新的版本(更新),则
[Code]
不应执行其中的 MySQL 安装部分。
那么,如果安装只是更新,如何实现这部分代码(MySQL安装)的异常功能呢?
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
{ ... }
begin
if CurStep = ssPostInstall then
begin
{ fresh installation code }
end;
end;
解决方案
您可以使用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;
推荐阅读
- postgresql - 选择具有相同列值的唯一行 Postgresql
- json - 如何使用固定字符串(区号)和广告动态字符串(@phone)制作字符串
- sql - 动态构建where条件的SQL搜索查询
- node.js - 通过 AJAX 作为 post 发送表单 - 这是更好的内容类型 multipart/form-data 或 application/json
- asp.net-core - 发布时缺少 ASP.net CORE 3.1 视图
- android - Qt Android 应用程序因“无法启动活动 GrantPermissionsActivity”而崩溃
- config - 如何在此绑定配置文件中为一个命令分配两个键?
- prometheus - Prometheus - 随着时间的推移获取唯一的标签值
- c++ - Boost Unit Test 在检查失败后将所有控制台文本永久变为红色
- mysql - MySQL id 未按顺序保存(生产中的 Laravel)