首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我需要在任何设置中显示启动屏幕时,如何防止显示它?

当我需要在任何设置中显示启动屏幕时,如何防止显示它?
EN

Stack Overflow用户
提问于 2020-04-06 13:53:55
回答 1查看 219关注 0票数 2

当我需要的时候,我怎样才能防止显示飞溅屏幕呢?我应该添加一些ISSI代码来完成这个任务吗?

这是我的代码:

代码语言:javascript
复制
#define ISSI_Splash "C:\InnoSetupProject\Images\client.bmp"                 
#define ISSI_Splash_T 3
#define ISSI_Splash_X 500
#define ISSI_Splash_Y 220 

[Code]
function ISSI_InitializeSetup : Boolean;
begin       
  Result := True;
  if not RegValueExists(HKLM, 'SOFTWARE\MyApp\Client', 'LocaleID') then
    if MsgBox('Client does not exist', mbCriticalError, MB_OK) = IDOK then
      begin
        Result := False;
        { How can I prevent showing the splash screen here? }
        Exit;
      end  
end;

#define ISSI_InitializeSetup
#define ISSI_IncludePath "C:\ISSI" 
#include ISSI_IncludePath+"\_issi.isi"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-06 14:35:31

不要使用遗留的ISSI_InitializeSetup函数,而是使用Inno安装程序6 事件属性

代码语言:javascript
复制
[Code]
<event('InitializeSetup')>
function MyInitializeSetup: Boolean;
begin       
  Result := True;
  if not RegValueExists(HKLM, 'SOFTWARE\MyApp\Client', 'LocaleID') then
    if MsgBox('Client does not exist', mbCriticalError, MB_OK) = IDOK then
      begin
        Result := False; 
      end;
end;

并删除以下内容:

代码语言:javascript
复制
#define ISSI_InitializeSetup

MyInitializeSetup将在ISSI InitializeSetup之前调用。如果它返回False,则不会调用ISSI,因此不会显示任何启动屏幕。

查看事件属性的文档

  • 实现将按照其定义的顺序调用,但任何主实现(=没有事件属性的实现)都将被调用最后一个
  • 如果事件函数具有返回值,则执行延迟计算:InitializeSetupBackButtonClickNextButtonClickInitializeUninstall
代码语言:javascript
复制
- All implementations must return True for the event function to be treated as returning True and **an implementation returning False stops the calls to the other implementations.**
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61061439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档