Setup安装程序创建自定义页面

使用Inno Setup 编译器创建新页面

1、创建一个属于自己的页面

     ①、定义创建页面的函数

procedure CreateTheWizardPages;

var                                                                       //定义不同控件的变量

RadioButton : TRadioButton;

  Button, FormButton: TNewButton;

  Panel: TPanel;

  CheckBox: TNewCheckBox;

  PasswordEdit: TPasswordEdit;

  Memo: TNewMemo;

  ComboBox: TNewComboBox;

  ListBox: TNewListBox;

  StaticText, ProgressBarLabel: TNewStaticText;

  ProgressBar, ProgressBar2, ProgressBar3: TNewProgressBar;

  CheckListBox, CheckListBox2: TNewCheckListBox;

  FolderTreeView: TFolderTreeView;

  BitmapImage, BitmapImage2, BitmapImage3: TBitmapImage;

  BitmapFileName: String;

  RichEditViewer: TRichEditViewer;

  FileName: String;

begin

 

      Page1 := CreateCustomPage(wpWelcome, 'Welcome to the Matbook Setup Wizard', 'Specity either host name/ipaddress of license server(s) or node-locked license file.');                                                    //创建用户的页面

 

  RadioButton11 :=TNewRadioButton.Create(Page1); //创建一个按钮,设置大小位置

  RadioButton11.Width := Page1.SurfaceWidth;

  RadioButton11.Height := ScaleY(30);

  RadioButton11.Parent := Page1.Surface;

  RadioButton11.Caption := 'Server License';

 

  RadioButton11.OnClick :=@ClickRadio1;   //调用按钮响应函数ClickRadio1

  StaticText := TNewStaticText.Create(Page1); //创建一个静态文本框,设置大小

  StaticText.Top := RadioButton11.Top + RadioButton11.Height + ScaleY(8);

  StaticText.Left := RadioButton11.Left + ScaleY(20);

  StaticText.Caption := 'License Path:';

  StaticText.AutoSize := True;

  StaticText.Parent := Page1.Surface;

 

  Edit1 := TNewEdit.Create(Page1);  //创建一个编辑框

  Edit1.Top := StaticText.Top - ScaleY(2);

  Edit1.Width := Page1.SurfaceWidth div 2 - ScaleX(8);

  Edit1.Left :=  StaticText.Left + ScaleX(130);

  Edit1.Text := '';

  //Edit1.ReadOnly := True;            //只可读

  //Edit1.HideSelection :=False;

  Edit1.Parent := Page1.Surface;

end;

 

procedure ClickRadio2(Sender: TObject);      //函数要放在创建页面函数前面

begin

    Edit1.Color := clSilver;

    Edit1.ReadOnly :=True;

    Edit.Color :=clWhite;

    Edit.ReadOnly := False;

end;

 

②、在InitializeSetup()中调用你刚才创建的函数

这样在安装程序初始化时调用,打开后就是你自己定义的页面。

procedure InitializeWizard();

begin

  CreateTheWizardPages;

end;

③、在安装完成后想要输出数据到文件中

      在CurStepChanged(CurStep: TSetupStep);中输出数据到文件中。

该过程提供用户完成预安装和安装之后的任务,更多的是提供了安装过程中的状态。参数CurStep=ssInstall是在程序实际安装前(所有的路径等都配置好之后准备写入文件钱),CurStep=ssPostInstall是实际安装完成后,而CurStep=ssDone是在一次成功的安装完成后、安装程序终止前(即点击finish按钮后执行)。

记得将所要输出的编辑框等定义为全局变量。

      procedure  CurStepChanged(CurStep: TSetupStep);

  begin

      if CurStep = ssDone then

      begin

SetIniString('Center','CATIA',Edit2.text,ExpandConstant('{app}/test.ini'));

      end;

  end;

④、创建一个可以自己选择目录的页面

      创建页面函数同①,只需将choose按钮的按钮响应函数更改。

procedure ButtonOnChoose(Sender: TObject);

var dir;

begin

  dir :='C:\\Program Files (x86)';                           //设置默认路径

  BrowseForFolder('Browse Folder', dir, True);      //浏览文件夹路径

  Edit2.text := dir;                               //将Edit2的文本改为选择过后的路径

end;

2、Inno Setup支持以下函数和过程。

function InitializeSetup(): Boolean;

该函数在安装程序初始化时调用,返回False 将中断安装,True则继续安装,测试代码如下:

function InitializeSetup(): Boolean;

begin

Result := MsgBox('安装程序正在初始化,你确定要安装吗?', mbConfirmation, MB_YESNO) = idYes;

if Result = False then

MsgBox('你放弃了安装,程序直接退出', mbInformation, MB_OK);

end;

 

procedure InitializeWizard();

该过程在开始的时候改变向导或者向导页,不要指望使用InitializeSetup函数实现改变向导页的功能,因为InitializeSetup函数触发时向导窗口并不存在。

procedure DeinitializeSetup();

该过程在安装终止时被调用,注意及时在用户没有安装任何文件之前退出也会被调用。测试代码如下:

procedure DeinitializeSetup();

begin

msgbox('DeinitializeSetup is called',mbInformation, MB_OK);

end;

procedure CurStepChanged(CurStep: TSetupStep);

该过程提供用户完成预安装和安装之后的任务,更多的是提供了安装过程中的状态。参数CurStep=ssInstall是在程序实际安装前(所有的路径等都配置好之后准备写入文件钱),CurStep=ssPostInstall是实际安装完成后,而CurStep=ssDone是在一次成功的安装完成后、安装程序终止前(即点击finish按钮后执行)。测试代码如下:

procedure CurStepChanged(CurStep: TSetupStep);

begin

if CurStep=ssinstall then

MsgBox('准备写入文件了', mbInformation, MB_OK);

if CurStep=ssPostinstall then

MsgBox('文件复制完成', mbInformation, MB_OK);

if CurStep=ssDone then

MsgBox('软件成功安装', mbInformation, MB_OK);

end;

function NextButtonClick(CurPageID: Integer): Boolean;

当用户单击下一步按钮时调用。如果返回True,向导将移到下一页;如果返回False,它仍保留在当前页。测试代码如下:

function NextButtonClick(CurPageID: Integer): Boolean;

begin

Result := MsgBox('到下一页去吗?', mbConfirmation, MB_YESNO) = idYes;

end;

function BackButtonClick(CurPageID: Integer): Boolean;

和前面的NextButtonClick函数相反,当用户单击返回按钮时调用。如果返回True,向导将移到前;如果返回False,它仍保留在当前页,测试代码略。

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);

当用户单击取消按钮或单击窗口中的关闭按钮时调用。Cancel参数指定取消进程是否该发生;默认为TrueConfirm参数指定是否显示退出安装程序吗?的消息框;默认为True。如果Cancel设为False,那么Confirm的值将被忽略。测试代码如下:

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);

begin

cancel:=False;

end;

function ShouldSkipPage(PageID: Integer): Boolean;

向导调用这个事件函数确定是否在所有页或不在一个特殊页 (PageID指定显示。如果返回True,将跳过该页;如果你返回False,该页被显示。注意:这个事件函数不被wpWelcomewpPreparingwpInstalling 页调用,还有安装程序已经确定要跳过的页也不会调用 (例如,没有包含组件安装程序的wpSelectComponents)。测试代码如下:

function ShouldSkipPage(PageID: Integer): Boolean;

begin

if PageID=wpSelectDir then

Result:=True;

end;

本段代码将会使得安装程序跳过选择安装目录的页面

可用的PageID有: wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpInfoAfter, wpFinished

procedure CurPageChanged(CurPageID: Integer);

在新向导页 (CurPageID 指定)显示后调用。测试代码如下:

procedure CurPageChanged(CurPageID: Integer);

begin

Msgbox('ha,new page!',mbInformation, MB_OK);

end;

该段代码将会导致每出现一个新的一面的时候就会弹出一个消息框。

 

代码下载:https://download.csdn.net/download/yuer_xiao/10608616

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值