Installation Inno设置-如何创建一个自定义表单,允许我找到要解压缩的文件?

Installation Inno设置-如何创建一个自定义表单,允许我找到要解压缩的文件?,installation,inno-setup,pascalscript,Installation,Inno Setup,Pascalscript,我正在尝试使用此代码创建一个自定义表单,该表单允许我查找要解压缩的文件: var TNewDiskForm:TSetupForm; DiskBitmapImage:TBitmapImage; 选择DiskLabel,路径标签:t标签; 路径编辑:TEdit; 浏览按钮:t按钮; OK按钮:t按钮; 取消按钮:t按钮; 文件名:字符串; 路径:字符串; Dir:字符串; 模型结果:Longint; { Пути поиска файла } 函数GetSanitizedPath:字符串; 开始 结

我正在尝试使用此代码创建一个自定义表单,该表单允许我查找要解压缩的文件:

var
TNewDiskForm:TSetupForm;
DiskBitmapImage:TBitmapImage;
选择DiskLabel,路径标签:t标签;
路径编辑:TEdit;
浏览按钮:t按钮;
OK按钮:t按钮;
取消按钮:t按钮;
文件名:字符串;
路径:字符串;
Dir:字符串;
模型结果:Longint;
{ Пути поиска файла }
函数GetSanitizedPath:字符串;
开始
结果:=修剪(PathEdit.Text);
结束;
过程取消按钮单击(CurPageID:Integer;var Cancel,Confirm:Boolean);
开始
取消:=真;
确认:=假;
结束;
{ Кнопки Обзор }
程序浏览按钮点击(发送方:TObject);
开始
Dir:=GetSanitizedPath;
如果BrowseForFolder(SetupMessage(msgSelectDirectoryLabel),Dir,False),则
PathEdit.Text:=Dir+'\';
TNewDiskForm.Show;
结束;
{Фззыыыыыыы
过程FormCloseQuery(发送方:ToObject;变量CanClose:布尔);
开始
路径:=PathEdit.Text;
文件名:=ExpandConstant('data.bin');
案例TNewDiskForm.ModalResult的
mrOK:
开始
如果(路径=“”)或不存在文件(路径+文件名),则
开始
CanClose:=假
MsgBox(FmtMessage(SetupMessage(msgfilenotindire2),[Filename,Path]),mbError,MB_OK);
结束;
结束;
mrCancel:
开始
CanClose:=真;
结束;
结束;
结束;
{ запрос диска }
过程SelectDisk(常量磁盘号:整数;常量文件名,路径:字符串);
变量
ExitFlag:布尔型;
开始
重复
TNewDiskForm:=CreateCustomForm();
stnewdiskform.SetBounds(ScaleX(0)、ScaleY(0)、ScaleX(377)、ScaleY(200));
TNewDiskForm.CenterInsideControl(WizardForm,False);
TNewDiskForm.Caption:=设置消息(msgChangeDiskTitle);
TNewDiskForm.Font.Color:=clWindowText
TNewDiskForm.Font.Height:=-11
TNewDiskForm.Font.Name:=“MS Sans Serif”
TNewDiskForm.Font.Style:=[]
TNewDiskForm.OnCloseQuery:=@FormCloseQuery;
选择DiskLabel:=TLabel.Create(TNewDiskForm)
选择DiskLabel.SetBounds(ScaleX(72)、ScaleY(8)、ScaleX(297)、ScaleY(72));
选择DiskLabel.AutoSize:=False
选择DiskLabel.WordWrap:=True
选择DiskLabel.Transparent:=True
选择DiskLabel.Font.Color:=clBlack
选择DiskLabel.Font.Size:=8
选择DiskLabel.Caption:=FmtMessage(SetupMessage(msgSelectDiskLabel2),[IntToStr(DiskNumber)];
选择DiskLabel.Parent:=TNewDiskForm
选择DiskLabel.ShowAccelChar:=False
路径编辑:=TEdit.Create(TNewDiskForm)
SetBounds(ScaleX(8)、ScaleY(96)、ScaleX(281)、ScaleY(21));
PathEdit.TabOrder:=2
Text:=ExpandConstant({src}\');
PathEdit.Parent:=TNewDiskForm;
路径标签:=TLabel.Create(TNewDiskForm);
SetBounds(ScaleX(8)、ScaleY(80)、ScaleX(5)、ScaleY(14));
PathLabel.Font.Color:=clBlack
PathLabel.FocusControl:=路径编辑
PathLabel.Caption:=SetupMessage(msgPathLabel);
PathLabel.Parent:=TNewDiskForm
BrowseButton:=TNewButton.Create(TNewDiskForm);
布朗塞布顿。立根(斯卡莱克斯(296)、斯卡莱克斯(95)、斯卡莱克斯(73)、斯卡莱克斯(23));
BrowseButton.Parent:=TNewDiskForm;
OnClick:=@BrowseButtonClick;
BrowseButton.Caption:=设置消息(msgButtonBrowse);
CancelButton:=TNewButton.Create(TNewDiskForm);
CancelButton.SetBounds(ScaleX(296)、ScaleY(137)、ScaleX(73)、ScaleY(23));
CancelButton.ModalResult:=mrCancel;
CancelButton.Parent:=TNewDiskForm;
CancelButton.Caption:=设置消息(msgButtonCancel);
确定按钮:=TNewButton.Create(TNewDiskForm);
OkButton.SetBounds(ScaleX(216)、ScaleY(137)、ScaleX(73)、ScaleY(23));
OkButton.ModalResult:=mrOk;
OkButton.Parent:=TNewDiskForm;
OKButton.Caption:=SetupMessage(msgButtonOK);
TNewDiskForm.showmodel;
{取消}
案例TNewDiskForm.ModalResult的
mrCancel:
开始
TNewDiskForm.Free;
ExitFlag:=ExitSetupMsgBox;
案例出口滞后
True:WizardForm.Close;
False:选择磁盘(磁盘号、文件名、路径);
True:TNewDiskForm.free;
结束;
结束;
结束;
直到((TNewDiskForm.ModalResult=mrOk)或(TNewDiskForm.ModalResult=mrCancel));
结束;
过程CurStepChanged(CurStep:TSetupStep);
开始
{ Запуск формы распаковки            № диска          место поиска }
{                                       |                |         }
如果没有(FileExists('data.bin')),则
如果CurStep=ssInstall,则选择disk(2,'Filename','src}');
结束;
这段代码在较旧版本的Inno Setup(俄文版)中运行正常(仅在文件不存在时启动,并且如果我指明文件所在的位置,该过程将继续)。但我正在尝试修改它,以便在Inno安装程序的最新版本上工作(未知标识符
MODALRESULT

  • 如何修改代码以使用最新版本的Inno安装程序

  • 如何同时检查多个文件?(文件名1、文件名2等)


  • 我已经重构了您的代码,使其与Inno官方设置和您的需求兼容

    确实没有
    TForm.ModalResult
    。您必须测试单击了什么按钮才能知道
    OnCloseQuery
    处理程序中的“结果”形式是什么

    var
    选择文件路径编辑:TEdit;
    选择filefilename:string;
    选择FileDialogCanClose:布尔值;
    向导:布尔;
    函数GetSelectFilePath:string;
    开始
    结果:=添加反斜杠(修剪(SelectFilePathEdit.Text));
    结束;
    程序SelectFileBrowseButtonClick(发送方:ToObject);
    变量
    Dir:字符串;
    开始
    Dir:=GetSelectFilePath;
    如果BrowseForFolder(SetupMessage(msgSelectDirectoryLabel),Dir,False),则
    开始
    选择FilePathEdit.Text:=添加反斜杠(Dir);
    结束;
    结束;
    程序SelectFileOkButton单击(发件人:ToObject);
    B