Inno Setup Prompt for external file location

2019-02-18 21:38发布

I currently use [Files] Flags: external to import user data into my installation, which is working.

I now need to prompt for a specific external file during the installation.

Use case:
We install software that requires a license file (not to be confused with the license agreement). I want to prompt the user for their license file. Once they provide a file, it would be copied to the DestDir.

I'm looking for a something like [Files] Flags: PromptForFile or a routine that achieves the same. Has someone already solved this?

标签: inno-setup
1条回答
贼婆χ
2楼-- · 2019-02-18 22:29

Use the CreateInputFilePage function to a create custom wizard page to prompt a user for the license file.

Then, use a scripted constant to use the selected path as a source path in the [Files] section.

[Files]
Source: "{code:GetLicensePath}"; DestDir: "{app}"; Flags: external

[Code]

var
  LicenseFilePage: TInputFileWizardPage;

procedure InitializeWizard();
begin
  LicenseFilePage :=
    CreateInputFilePage(
      wpSelectDir,
      'Select License File Location',
      'Where is your license file located?',
      'Select where License file is located, then click Next.');

  LicenseFilePage.Add(
    'Location of license file:',         
    'License files|*.lic|All files|*.*', 
    '.lic');                             
end;

function GetLicensePath(Param: string): string;
begin
  Result := LicenseFilePage.Values[0];
end;

License file page


TODO: You need to handle somehow a situation, when a user does not select any license file. Either don't allow to proceed (use the NextButtonClick) or skip the file installation (use the Check parameter).

查看更多
登录 后发表回答