使用Inno Setup,如何将用户选择的文件(图像)重命名并复制到程序文件目录

时间:2014-05-21 01:39:26

标签: file-io inno-setup

我了解如何创建自定义向导页面。只是不确定如何添加文件选择器,并将其限制为.jpg文件类型。我有一个代码部分,在安装结束时运行,在设置过程中获取用户定义的输入并修改设置文件,只需要了解如何获取他们在设置屏幕步骤中选择的文件的值,然后复制它,重命名它,并将其转储到程序文件文件夹中。

1 个答案:

答案 0 :(得分:3)

如何创建过滤的输入文件向导页面项?

出于文件选择的目的,您应该使用单独的输入文件向导页面,您可以通过CreateInputFilePage创建该页面。然后,TInputFileWizardPage页面对象类的Add方法包含AFilter参数,您可以在其中指定可由其关联文件打开对话框选择的文件的过滤器。在此示例中,我们允许用户仅选择* .jpg文件:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Code]
var
  InputPage: TInputFileWizardPage;

procedure InitializeWizard;
begin
  // create the input file wizard page
  InputPage := CreateInputFilePage(wpWelcome, 'Caption', 'Description',
    'SubCaption');
  // and insert one item in which the user will be restricted to select
  // only *.jpg files
  InputPage.Add('Prompt', 'JPG files (*.jpg)|*.jpg', '.jpg');
end;

如何手动调用过滤后的文件打开对话框?

如果输入文件向导页面不适合您的设计并且您想自己制作,那么您需要GetOpenFileName功能来显示打开的文件对话框。甚至此函数也包含一个参数,您可以在其中指定过滤字符串。在这种情况下,它是Filter参数。在此脚本示例中,显示了如何使用* .jpg文件过滤器调用文件打开对话框:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Code]
procedure InitializeWizard;
var
  FileName: string;
begin
  if GetOpenFileName('Prompt', FileName, 'C:\InitialDirectory',
    'JPG files (*.jpg)|*.jpg', '.jpg')
  then
    MsgBox(Format('Selected file: %s', [FileName]), mbInformation, MB_OK);
end;

如何构建过滤字符串?

正如您在上面的代码中所看到的,过滤字符串由标题部分和由|字符分隔的过滤部分组成。您还可以通过|字符分隔每个过滤字符串来指定多个过滤器,也可以通过;分隔扩展名为单个过滤器指定多个扩展名。

所以,例如创建一个名为JPG files的过滤器,仅过滤* .jpg文件,您可以编写:

JPG files|*.jpg

要制作两个过滤器,让我们说一个用于* .jpg文件,一个用于* .jpeg文件,你可以写:

JPG files|*.jpg|JPEG files|*.jpeg

最后,要为* .jpg和* .jpeg文件制作单个过滤器,您可以写:

JPEG files|*.jpg;*.jpeg

有关详细信息,我将向您推荐TOpenDialog.Filter属性的Delphi参考页面。