Inno setup 循环命令或函数,直到Inno设置中的条件变为真
我想在运行使用Inno Setup创建的程序安装程序时,向用户显示一个漂亮的欢迎动画GIF 我想使用Inno setup 循环命令或函数,直到Inno设置中的条件变为真,inno-setup,Inno Setup,我想在运行使用Inno Setup创建的程序安装程序时,向用户显示一个漂亮的欢迎动画GIF 我想使用Isgsg.dll按顺序显示一些PNG图像(因为Inno安装程序还不支持显示动画GIF),直到安装程序完成对大量代码的初始化 我写了一段代码来按顺序显示这些PNG图像,但在显示最后一幅图像后,它就停止了 我需要继续显示从第一个PNG图像后,最后一个显示之前 如果设置已初始化,(我的意思是如果向导窗体可见),循环过程应停止 我为显示这些PNG图像而编写的代码: function Initialize
Isgsg.dll
按顺序显示一些PNG图像(因为Inno安装程序还不支持显示动画GIF),直到安装程序完成对大量代码的初始化
我写了一段代码来按顺序显示这些PNG图像,但在显示最后一幅图像后,它就停止了
我需要继续显示从第一个PNG图像后,最后一个显示之前
如果设置已初始化,(我的意思是如果向导窗体
可见),循环过程应停止
我为显示这些PNG图像而编写的代码:
function InitializeSetup(): Boolean;
var
DlgWait: TForm;
if Result = True then begin
ExtractTemporaryFile('Welcome1.png');
ExtractTemporaryFile('Welcome2.png');
ExtractTemporaryFile('Welcome3.png');
ExtractTemporaryFile('Welcome4.png');
ExtractTemporaryFile('Welcome5.png');
ExtractTemporaryFile('Welcome6.png');
ExtractTemporaryFile('Welcome7.png');
>
>
我怎样才能做到我所期望的
更新的问题
我想不出为什么这个代码不起作用
此DLL需要PNG文件的文件名作为AnsiString
但是我提供了一个字符串
这是不是出了问题,或者是其他Synatx错误导致它无法工作
不工作
表示显示循环过程不工作的PNG图像
我试图添加的代码使用重复直到来执行此条件循环:
function InitializeSetup(): Boolean;
var
DlgWait: TForm;
IMessageHandler: TForm;
X: Integer;
ErrorCode: Integer;
LblWait: TLabel;
if Result := True then begin
DlgWait := TForm.Create(nil);
DlgWait.Hide;
begin
Order:=1;
Repeat
ShowSplashScreen(DlgWait.Handle,ExpandConstant('{tmp}\Welcome+IntToStr(Order)+.png'),0250,1000,0250,0,255,True,$FFFFFF,10);
Order:=Order+1;
Until FileExists(ExpandConstant('{tmp}\Welcome+IntToStr(Order)+.png')) = False;
end;
end;
有语法错误吗
但编译器不会给出任何编译器警告或错误
提前感谢。到达终点后,您需要重置计数器。像这样的事情应该让你开始。(注意:未测试-我在这台机器上没有InnoSetup。请用适当的方法替换中的测试,直到中检测到向导窗体可见。)
请学习在此处和代码/文本编辑器中正确格式化代码。它使它更易于阅读和维护。编译器不关心空格,所以正确地在逗号和+符号前后缩进和放置空格只需敲击一次键就可以了,而且从长远来看,它可以省去头痛和视力。谢谢你,我回家后会试试,并通知你发生了什么事。干得好,肯·怀特…………干得好,它工作正常,循环工作正常。但是我不能给出是否停止的条件………安装程序在这个循环过程中被卡住了,因为我设置为直到Order>7
,因为当我尝试设置直到WizardForm.Visible
,在创建WizardForm之前尝试访问它。
错误发生。当WizardForm
创建时,任何有经验的程序员都可以给我一个很好的条件来停止循环-/顺序永远不会是>7
,因为当它达到7时,会重置为1,而这将在部分执行之前发生。。(您是否阅读了我编写的代码,特别是行if Order>NumImages then Order:=1;
?)我不知道如何告诉您WizardForm何时可用,因为我没有编写您的代码。是的,我读到我忘了添加NumImages
…我现在要添加。我想知道为什么我不能设置像如果WizardForm.Visible
?当我将条件设置为直到(Order=7)而不是WizardForm.Visible
设置甚至在循环中卡住了……。为什么会发生这种情况………条件不会发生这样的情况?
...
end;
function InitializeSetup(): Boolean;
var
DlgWait: TForm;
IMessageHandler: TForm;
X: Integer;
ErrorCode: Integer;
LblWait: TLabel;
if Result := True then begin
DlgWait := TForm.Create(nil);
DlgWait.Hide;
begin
Order:=1;
Repeat
ShowSplashScreen(DlgWait.Handle,ExpandConstant('{tmp}\Welcome+IntToStr(Order)+.png'),0250,1000,0250,0,255,True,$FFFFFF,10);
Order:=Order+1;
Until FileExists(ExpandConstant('{tmp}\Welcome+IntToStr(Order)+.png')) = False;
end;
end;
function InitializeSetup(): Boolean;
var
DlgWait: TForm;
IMessageHandler: TForm;
X: Integer;
ErrorCode: Integer;
LblWait: TLabel;
const
NumImages = 7;
begin
if Result then
begin
DlgWait := TForm.Create(nil);
DlgWait.Hide;
Order := 1;
repeat
ShowSplashScreen(DlgWait.Handle, ExpandConstant('{tmp}\Welcome' + IntToStr(Order) + '.png'), 0250, 1000, 0250, 0,255, True, $FFFFFF, 10);
Order := Order + 1;
if Order > NumImages then
Order := 1;
until WizardForm.Visible;
end;
end;