通过inno设置在特定位置浏览和提取zip文件

时间:2018-06-30 10:04:22

标签: inno-setup

我想使用户能够在特定位置浏览和提取zip文件。

要求/步骤:

  1. 显示欢迎页面
  2. 下一个显示浏览按钮以选择安装目录(DisableDirPage=no
  3. 下一个显示浏览按钮以选择zip文件(JDK
  4. 在步骤2中选择的位置提取在步骤3中选择的JDK zip文件,这意味着JDK应该提取到用户在步骤2中选择的安装目录中。

我的代码存在问题

  1. 第一步之后,我的代码直接跳至第三步,然后转到第二步。
  2. 如果我将方法名称作为参数传递,则无法提取zip的代码。如果我传递位置的硬编码值,它将起作用。我不知道pascal,这基本上是语法相关的问题。

[设置]

AppName=My Program
        AppVersion=1.5
        DefaultDirName={pf}\My Program
        DefaultGroupName=My Program
        UninstallDisplayIcon={app}\MyProg.exe
        DisableProgramGroupPage=no
        DisableWelcomePage=no
        DisableDirPage=no
        Compression=lzma2
        SolidCompression=yes
        OutputDir=userdocs:Inno Setup Examples Output

[文件]

Source: "{code:GetLicensePath}"; DestDir: "{app}"; Flags: external
Source: "7za.exe"; DestDir: "D:\authorized\Builds\Solo\"; Flags: deleteafterinstall;

[图标]

Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"

[运行]

Filename: D:\authorized\Builds\Solo\7za.exe; Parameters: "x ""{{Code:GetZipPath}}"" -o""{app}\"" * -r -aoa"; Flags: runhidden runascurrentuser;

[代码]

 var
   Page: TInputFileWizardPage;
   DataDir:String;

 procedure InitializeWizard();
 begin
   Page :=
     CreateInputFilePage(
       wpWelcome,
       'Select Zip File Location',
       'Where is your Zip file located?',
       'Select where Zip file is located, then click Next.');

   Page.Add(
     'Location of Zip file:',         
     '*.7z|*.rar|All files|*.*', 
     '.zip');  

 // Set initial value (optional)
 Page.Values[0] := ExpandConstant('{%USERPROFILE}\Downloads\setup.7z'); 
     ;                   
 end;



 function GetZipPath(Param: string): string;
 begin
   DataDir := Page.Values[0];

 end;

可以帮我吗?

1 个答案:

答案 0 :(得分:1)

  1. 自定义页面的顺序由Create*函数的第一个参数确定。因此,将wpWelcome更改为wpSelectDir

  2. 为什么要加倍{{...}}-这可能是问题所在。 code:也应小写。

  3. 您的脚本化常量函数实际上不会返回任何内容。应该是:

     Result := Page.Values[0];