scripting - 一步安装程序

标签 scripting installation inno-setup

我正在寻找一种在 Inno Setup 中创建单页安装程序的方法,看看这个截图:
One Page Installer Image
任何人都可以给我这样做的代码吗?
或者完全我想在 Inno Setup 中合并页面功能。例如将选择目录页面与组件页面等合并

最佳答案

默认情况下不容易做到。但是可以做到,下面的代码
产生了这样的页面。 enter image description here

[Setup]
AppName=Test
AppVersion=1.5
DefaultDirName={code:AppDir}
;Disable all of the default wizard pages
DisableDirPage=yes
DisableProgramGroupPage=yes
DisableReadyMemo=yes
DisableReadyPage=yes
DisableStartupPrompt=yes
DisableWelcomePage=yes

;May want this, after install.
DisableFinishedPage=no

[Messages]
ButtonNext=Install

[Files]
Source:"e:\test.txt"; DestDir: "{app}"
Source:"e:\test.txt"; DestDir: "{app}"; DestName: "test1.txt"; Check: Option1;
Source:"e:\test.txt"; DestDir: "{app}"; DestName: "test2.txt"; Check: Option2;


[Code]

var
 MainPage : TWizardPage;
 edtFolderToInstall : TEdit;
 InstallLocation : String;
 Opt1, Opt2 : Boolean;
 ChkOption1 :  TCheckBox;
 ChkOption2 :  TCheckBox;


function  AppDir(Param: String): String;
begin
  // Set Default if not set.
  if InstallLocation = '' then
     InstallLocation := ExpandConstant('{pf}') + 'test';
  result := InstallLocation;
end;

function Option1 : Boolean;
begin
  result := Opt1;
end;

function Option2 : Boolean;
begin
  result := Opt2;
end;

procedure BrowseClick(Sender : TObject);
var
 Dir : String;
begin
  Dir := edtFolderToInstall.Text;
  if BrowseForFolder('Select Folder',Dir,false) then
    edtFolderToInstall.Text := Dir;
end;

procedure InitializeWizard();
var
 lblFolderToInstall : TLabel;
 btnFolderToInstall : TButton;


begin
 MainPage := CreateCustomPage(wpWelcome,'Setup - Test App Name','This will install "Test App Name" to your computer');
 lblFolderToInstall := TLabel.Create(MainPage);
 lblFolderToInstall.Parent := MainPage.Surface;
 lblFolderToInstall.Top := 10;
 lblFolderToInstall.Left := 10;
 lblFolderToInstall.Caption := 'If you would like to select a different folder, Click Browse.'


 edtFolderToInstall := TEdit.Create(MainPage);
 edtFolderToInstall.Parent := MainPage.Surface;

 edtFolderToInstall.Top := 25;
 edtFolderToInstall.Left := 10;
 edtFolderToInstall.Width := 250;
 edtFolderToInstall.Text :=  WizardDirValue;


 btnFolderToInstall := TButton.Create(MainPage);
 btnFolderToInstall.Parent := MainPage.Surface;
 btnFolderToInstall.top := 25;
 btnFolderToInstall.Left := 275;
 btnfolderToInstall.Caption := 'Browse...';
 btnFolderToInstall.OnClick := @BrowseClick;

 ChkOption1 :=  TCheckBox.Create(MainForm);
 ChkOption1.Parent := MainPage.Surface;
 ChkOption1.Top := 50;
 ChkOption1.Left := 10;
 ChkOption1.Caption := 'Option 1';

 ChkOption2 :=  TCheckBox.Create(MainForm);
 ChkOption2.Parent := MainPage.Surface;
 ChkOption2.Top := 75;
 ChkOption2.Left := 10;
 ChkOption2.Caption := 'Option 2';



end;


function NextButtonClick(CurPageID: Integer): Boolean;
begin
  result := True;
  // Next pressed, better make sure selected items are correct.
  if CurPageId = MainPage.ID then
  begin
     InstallLocation := edtFolderToInstall.Text;
     Opt1 := ChkOption1.Checked;
     Opt2 := ChkOption2.Checked;
  end;
end;

为了解决这个问题,我使用 {code:AppDir}作为默认目录。这告诉 InnoSetup 使用函数 AppDir检索安装目录。然后我可以使用我的自定义对话框设置它。

而不是使用 [Components]和/或 [Tasks]我必须使用 Check[Files]部分。

关于scripting - 一步安装程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5675176/

相关文章:

programming-languages - 如何为应用程序创建计算机或脚本语言?

c# - 如何在 VS 2010 安装项目之前进行目标系统要求测试 c#

inno-setup - 需要有关 Inno Setup 脚本的帮助 - 检查 jre 安装的问题

javascript - 我是 EFFIN 网站 build 新手。脚本就像驾驶航天飞机

shell - 删除 Unix 上的部分路径

windows - 在 Windows 机器上练习 Unix

testing - TestLink 安装期间的数据库访问错误

php - 未找到 Google App Engine PHP 可执行文件路径

java - 在 Java 中创建名为 Mutex-Semaphore

crash - Inno Setup 在静默模式下运行时频繁崩溃