inno setup自定义详解

先看效果图

第一步:

inno setup自定义详解_第1张图片

 

当不勾选同意协议时:

inno setup自定义详解_第2张图片

inno setup自定义详解_第3张图片

 

inno setup自定义详解_第4张图片

 

 

支持多语言自动切换

支持单例启动校验

支持已安装校验

支持......

 

首先自定义界面。主要是贴图和各种事件响应,部分核心代码如下:

  {界面创建入口}
  procedure InitializeWizard();
  begin
    WizardForm.Center
    WizardForm.Width := 720;
    WizardForm.Height := 472;
    WizardForm.NextButton.Hide
    WizardForm.CancelButton.Hide
    WizardForm.OuterNotebook.Hide
    WizardForm.BorderStyle:=bsNone
    //WizardForm.Height := WizardForm.Height/5*4;
    WizardForm.LicenseAcceptedRadio.Checked := true;
    
    initCustomForm
    createQuestionDlg
    createLanguageForm
    createDirectoryForm
    createInstallingForm
    createFinishedForm
    
    CurIndexForm := 1
    FormsList[1].Show
  end;

   {初始化自定义窗体列表}
  procedure initCustomForm;
  var
   formIndex: Integer;
  begin
    UseFont:=TFont.Create;
    with UseFont do
    begin
      Name:='Microsoft YaHei';
      Color := $ccd3dd;
      Height := 19;
    end;

    for formIndex := 1 to MAX_FORMS do
    begin
      FormsList[formIndex] := TForm.Create(WizardForm);
      with FormsList[formIndex] do
      begin
        top := 0; left := 0;
        parent := WizardForm;
        BorderStyle := bsNone;
        width := WizardForm.Width;
        height := WizardForm.Height
      end

      createBackgroundImage('background'+IntToStr(formIndex)+'.bmp',FormsList[formIndex])
      createFormMoveLabel(FormsList[formIndex])
      createTitlebar(FormsList[formIndex])
    end;
  end;

 

根据机器语言环境自动切换语言,主要用InitializeLanguageDialog函数实现。切记,此时WizardForm等并没有创建

截获系统questionMsgBox,并自定义,主要代码如下:

inno setup自定义详解_第5张图片

 

完整代码下载

 

你可能感兴趣的:(其它)