Innosetup 新增一个向导页面,让用户选择安装方式

转载于:http://www.docin.com/p-612536939.html

在Innosetup的向导页面中,新增一个页面,提供两种安装选择

1.选择标准安装将跳过“选择目标位置”和“选择开始菜单文件夹”等页面。(主要是跳过部分页面,快捷安装)

2.用户自定义安装,可以选择安装目录等

在[Code]段添加以下代码:

var
     Page: TWizardPage; {定义一个页面,在pascal中大括号是用来注释的}

RadioButton1, RadioButton2: TRadioButton; {定义2个单选按钮}
     Lbl1, Lbl2: TNewStaticText; {定义两个label,用来阐述安装的信息}

procedure CreateAddonPage;{新建添加页面的方法}
begin
     Page := CreateCustomPage(wpInfoBefore, '选择安装类型', '请根据您的需要选择安装的类型');

{设置单选按钮1的属性,并添加到页面中}

RadioButton1 := TRadioButton.Create(Page);
    RadioButton1.Left := ScaleX(80);
    RadioButton1.Top := ScaleY(40);
    RadioButton1.Width := Page.SurfaceWidth;
    RadioButton1.Height := ScaleY(17);
    RadioButton1.Caption := '标准安装';
    RadioButton1.Checked := True;
    RadioButton1.Parent := Page.Surface;

{设置label1的属性,并添加到页面中}
    Lbl1 := TNewStaticText.Create(Page);
    Lbl1.Left := ScaleX(95);
    Lbl1.Top := ScaleY(60);
    Lbl1.Width := ScaleX(250);
    Lbl1.Height := ScaleY(50);
    Lbl1.Caption := '按照标准模式安装软件到您的电脑';
    Lbl1.Parent := Page.Surface;

{设置单选按钮2的属性,并添加到页面中}
    RadioButton2 := TRadioButton.Create(Page);
    RadioButton2.Left := ScaleX(80);
    RadioButton2.Top := RadioButton1.Top + ScaleY(60);
    RadioButton2.Width := Page.SurfaceWidth;
    RadioButton2.Height := ScaleY(17);
    RadioButton2.Caption := '自定义安装';
    RadioButton2.Checked := false;
    RadioButton2.Parent := Page.Surface;

{设置label2的属性,并添加到页面中}
    Lbl2 := TNewStaticText.Create(Page);
    Lbl2.Left := ScaleX(95);
    Lbl2.Top := Lbl1.Top + ScaleY(60);
    Lbl2.Width := ScaleX(250);
    Lbl2.Height := ScaleY(50);
    Lbl2.Caption := '您可以选择单个安装项,建议经验丰富的用户使用';
    Lbl2.Parent := Page.Surface;
end;

{调用系统自带的方法,InitializeWizard(),在此方法中调用我们定义的方法 CreateAddonPage --准确来说应该叫过程,而不叫方法}
procedure InitializeWizard();
begin
     CreateAddonPage;

end;

{调用系统自带的 ShouldSkipPage方法,此方法是用来跳过某些向导页面的}
function ShouldSkipPage(PageID: Integer): Boolean;
begin

{跳过 选择安装目录的页面 这里的 wpSelectDir,wpSelectProgramGroup都是Innosetup系统预设的,

更多的页面id,请参考http://www.cnblogs.com/tommy-huang/p/4121229.html 中的第三点 }

if (PageID = wpSelectDir) and (RadioButton1.Checked) then
         Result := True
    else if (PageID = wpSelectProgramGroup) and (RadioButton1.Checked) then
         Result := True
end;

Innosetup新增Wizard Page的更多相关文章

  1. 构建基于WinRT的WP8.1 App 03:Page控件

    单页面模板 通常利用Visual Studio 2013创建的最简单的WP8.1应用是Blank App,它只包含一个不带任何UI的页面,并且没有任何状态管理的逻辑. 该不带任何UI的页面称为Blan ...

  2. InnoSetup打包exe安装应用程序,并添加卸载图标 转

    http://blog.csdn.net/guoquanyou/article/details/7445773 InnoSetup真是一个非常棒的工具.给我的印象就是非常的精干.所以,该工具已经一步步 ...

  3. [Inno Setup] How to create a OuterNotebook/welcome page in the uninstaller

    By Martin Prikryl https://stackoverflow.com/questions/42625626/inno-setup-how-to-create-a-outernoteb ...

  4. Git for Windows v2.11.0 Release Notes

    homepage faq contribute bugs questions Git for Windows v2.11.0 Release Notes Latest update: December ...

  5. Inno Setup Compiler 中文使用教程

    一.概要 该文章主要解决,Inno Setup Compiler工具的使用问题. 如有什么建议欢迎提出,本人及时修改.[如有任何疑惑可以加Q群:580749909] 二.步骤 (1)下载地址:http ...

  6. SharePoint 2013 configure and publish infopth

    This article will simply descript how to configure and publish a InfoPath step by step. Note: To con ...

  7. 【Java EE 学习 83 上】【SpringMVC】【基本使用方法】

    一.SpringMVC框架概述 什么是SpringMVC?SpringMVC是一个和Struts2差不多的东西,他们的作用和性质几乎是相同的,甚至开发效率上也差不多,但是在运行效率上SpringMVC ...

  8. 使用vs2010创建MFC C++ Ribbon程序

    Your First MFC C++ Ribbon Application with Visual Studio 2010 Earlier this month, I put together my ...

  9. 继续Kanzi

    转眼间,Kanzi已经发展到3.3版本了,之前研究过的东西,今天有空下了个版本跟进更新看看有没有什么变化.新的引擎跟以前2.x版本有很大的差别.新引擎增加了很多新功能(包括局部刷新技术),也跟随大潮加 ...

随机推荐

  1. openwrt,mjpeg流,wifi摄像头与APP联动,拍照、录像

    最近公司好忙,自己主管的产品又忙着上线,好久都没更新博客了. 最近产品在做一款wifi摄像头,摄像头与手机同时连接在一个局域网内,即可实现摄像头图像在手机显示,并且拍照录像等功能 mjpeg是一张一张 ...

  2. Fig 7.2.4 & Fig 7.3.2

    Fig 7.2.4 \documentclass[varwidth=true, border=2pt]{standalone} \usepackage{tkz-euclide} \begin{docu ...

  3. Win10系统下编译OSG3.4

    环境说明 1.Win10专业版.64位: 2.VS2012旗舰版:QT5.2.0: 3.cmake-3.9.0.64位: 资源准备 1.OSG3.4源码包 http://trac.opensceneg ...

  4. TSQL--按某字段列分组,在将各组中某列合并成一行

    鉴于群里很多同事在问这个问题,我简单写个Demo,希望对初学者有帮助! 无真相,无解说,不解释,直接上Code! --========================================= ...

  5. supervisor配置环境变量(PATH)

    app配置中增加: environment=PATH="/PATH/TO/anaconda3/bin" supervisord在linux中启动默认继承了linux的环境变量,在这 ...

  6. Python try/except/finally等

    Python try/except/finally等   x = 'abc' def fetcher(obj, index): return obj[index] fetcher(x, 4) 输出: ...

  7. [微信开发] 微信网页授权Java实现

    功能:主要用于在用户通过手机端微信访问第三方H5页面时获取用户的身份信息(openId,昵称,头像,所在地等..)可用来实现微信登录.微信账号绑定.用户身份鉴权等功能.     开发前的准备: 1.需 ...

  8. C# winform 记住密码实现代码

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. 附加属性来控制控件中,要扩展模块的visibility

    可解决: 文本框控件中的按钮,DataGridColumnHeader中加入Filter控件... cs文件中的 附加属性 + 样式文件中的 template+控件 -> visibility ...

  10. JVM内存回收区域+对象存活的判断+引用类型+垃圾回收线程

    此文已由作者赵计刚薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 注意:本文主要参考自<深入理解Java虚拟机(第二版)> 说明:查看本文之前,推荐先知道JVM ...