Inno Setup实例教程之三:自定义窗口控件和修改.xml配置文件

上节文章已经简单的介绍了Inno Setup集成MySQL和JDK
Inno Setup实例教程之二:集成MySQL和JDK
这节主要是讲解一下自定义窗口控件,然后将输入的内容赋值到xml配置文件。

xml配置文件

在本地新建一个xml配置文件config.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config>
  <from>
    <project url="" port=""/>
    <datasource name="" username="" password=""/>
  </from>
</config>

这里面的url,port,name,username,password这几个属性的值都是空的

Inno Setup 的 Pascal 脚本

[Code]
var                                                                                                            
myPage:TwizardPage;//定义窗口
ed1:TEdit;//username
ed2:TEdit;//密码
ed3:TEdit;//端口
Lbl1: TNewStaticText; //username
Lbl2: TNewStaticText; //密码
Lbl3: TNewStaticText; //端口
ErrorCode: Integer;
//定义校验方法,校验失败时,下一步按钮为空
 
procedure Key_Form_KeyChange(Sender: TObject);
begin
if((length(ed1.Text) <= 6)or(length(ed2.Text) <= 4)) then
        WizardForm.NextButton.Enabled := True
    else
WizardForm.NextButton.Enabled := False;
end;
 
//初始化引导 窗口
 
procedure InitializeWizard();
begin
myPage:=CreateCustomPage(wpWelcome, '项目基本信息', '请填写正确的数据库账号密码和不冲突的系统启动端口');

Lbl3 := TNewStaticText.Create(myPage);
Lbl3.Left := ScaleX(10);
Lbl3.Top := ScaleY(5);
Lbl3.Width := ScaleX(100);
Lbl3.Height := ScaleY(50);
Lbl3.Caption := '系统端口';
Lbl3.Parent := myPage.Surface;
ed3:=TEdit.Create(myPage);
ed3.Width:=ScaleX(100);
ed3.Left := ScaleY(10);
ed3.Top := ScaleY(25);
ed3.Text :='8003';
ed3.Parent:=myPage.Surface;
//ed1.OnChange := @Key_Form_KeyChange;//添加校验方法

Lbl1 := TNewStaticText.Create(myPage);
Lbl1.Left := ScaleX(10);
Lbl1.Top := ScaleY(80);
Lbl1.Width := ScaleX(100);
Lbl1.Height := ScaleY(50);
Lbl1.Caption := '数据库账号';
Lbl1.Parent := myPage.Surface;
ed1:=TEdit.Create(myPage);
ed1.Width:=ScaleX(100);
ed1.Left := ScaleY(10);
ed1.Top := ScaleY(100);
ed1.Text :='root';
ed1.Parent:=myPage.Surface;
//ed1.OnChange := @Key_Form_KeyChange;//添加校验方法
 
Lbl2 := TNewStaticText.Create(myPage);
Lbl2.Left := ScaleX(200);
Lbl2.Top := ScaleY(80);
Lbl2.Width := ScaleX(100);
Lbl2.Height := ScaleY(50);
Lbl2.Caption := '数据库密码';
Lbl2.Parent := myPage.Surface;
ed2:=TEdit.Create(myPage);
ed2.Width:=ScaleX(100);
ed2.Left := ScaleY(200);
ed2.Top := ScaleY(100);
ed2.Text :='root';
ed2.Parent:=myPage.Surface;
//ed2.OnChange := @Key_Form_KeyChange;//添加校验方法
end; 

//添加步骤 
procedure CurStepChanged(CurStep: TSetupStep);
var
    fileName,tempStr:String;
    svArray: TArrayOfString;
    nLines,i:Integer;
begin
 
//if CurStep=ssinstall then
//安装前执行
 
if CurStep=ssPostinstall then 
//复制文件后执行 
begin
//开始修改文件
fileName := ExpandConstant('{app}\app\cluster\config.xml');
LoadStringsFromFile(fileName, svArray);
nLines := GetArrayLength(svArray);//读取文件
  for i := 0 to nLines - 1 do
  begin
tempStr := svArray[i];
//端口
if (1 = Pos('    <project url="" port=""/>', tempStr)) then//查找目标行
begin
  svArray[i] := ExpandConstant('    <project url="{app}/" port="'+ed3.Text+'" />');//修改行
  StringChangeEx(svArray[i], '\', '/', True);
end;
//账号密码
if (1 = Pos('    <datasource name="" username="" password=""/>', tempStr)) then//查找目标行
begin
  svArray[i] := ExpandConstant('    <datasource name="" username="'+ed1.Text+'" password="'+ed2.Text+'"/>');//修改行
  StringChangeEx(svArray[i], '\', '/', True);
end;
  end;
  SaveStringsToFile(fileName, svArray, false);
end;

if CurStep=ssDone then
//安装完成后执行
end;

描述

Pascal 脚本功能 (modern Delphi-like Pascal) 增加了许多新的功能定制你的安装程序和卸载程序,一些例子:
1.支持自定义条件的情况下的中断安装和卸载。
2.支持的安装程序运行时添加自定义向导页。
3.在安装前、安装期间、安装后从 Pascal脚本提取或调用 DLL 或其它文件。
4.支持当作任何普通常量的脚本化常量,从注册表读取,从 ini 读取和从命令行读取常量等。
5.支持运行时自定义条件下的类型、组件和/或任务的删除。 根据自定义条件支持有条件的 [Files] 、 [Registry] 、 [Run] 等条目安装。
6.几乎 Inno Setup 自身可以执行的许多支持函数来自 Pascal 脚本。
也可以使用一个完整的 run-time 调试器调试你的自定义 Pascal 脚本。

这样通过【code】段的自定义脚本代码,就可以实现自定义窗口控件,然后输入内容后,会自动修改xml配置文件,实现动态替换属性值的目的。

源码

下载直接可用,无需更改,一键执行
Inno Setup集成mysql和JDK,将jar包打包成exe

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: InnoSetup是一个易于使用的安装包制作工具,它提供了丰富的安装选项和自定义功能。在使用InnoSetup制作安装包时,我们可以通过自定义安装界面来满足客户的各种需求。 通过InnoSetup的宏命令和脚本语言,我们可以轻松地修改默认的安装界面,例如添加自定义控件、更改按钮文本、更改字体和颜色等。可以使用Pascal脚本和Delphi Object Pascal语言。 要自定义安装界面,我们需要首先打开InnoSetup的脚本文件(.iss文件)并找到“[Setup]”部分。在这里,我们可以设置安装程序的各种选项,例如安装的目标路径、是否需要安装桌面快捷方式、是否需要安装开始菜单项等等。 然后,我们可以添加新的页面和自定义控件,例如选择安装选项的页面、选择安装路径的页面、选择应用程序图标的页面等等。我们可以使用InnoSetup自带的控件,也可以使用自定义控件来实现更复杂的功能。 最后,我们可以为每个页面添加Pascal脚本来实现自定义逻辑,例如检查安装目录是否已存在、检查系统是否已安装必要的组件等等。 总之,InnoSetup提供了灵活的自定义安装界面功能,让我们可以满足不同客户的需求,并提高软件的用户体验。 ### 回答2: Inno Setup 可以在安装过程中自定义安装界面,使其更符合特定的软件需求和个性化需求。通过自定义安装界面,可以加强用户交互体验,提高软件的可用性和易用性,同时也可以为软件提供更精细的管理和控制。下面将分别从设计理念、开发流程和技术实现方面进行介绍。 设计理念 Inno Setup自定义安装界面开发过程,从本质上来说是一次用户交互设计 (User Experience Design, UXD) 的过程。通过 UXD,设计师可以了解客户的需求、喜好和习惯,进而设计出更符合其需求的产品和服务。在自定义安装界面开发流程中,设计师需要考虑以下几个方面: 1. 界面设计。界面设计应该简单明了、美观大方,能够吸引用户的注意力并提高用户的参与度。同时需要考虑不同用户的操作习惯和口味,以达到更广泛的用户群体。 2. 用户体验 (User Experience, UX) 设计。在设计界面时,需要考虑到用户的体验。例如:简化繁琐的操作、提供更多的选择、给予良好的反馈等都是好的用户体验设计。 3. 交互设计。特别是在软件界面方面,设计师需要思考用户将与之如何交互,如何设定第一时间与其进行沟通交流。 开发流程 在设计理念上确定了之后,我们需要有一个中间人对需求进行保存和整理。通常情况下需要特别有经验的的开发人员还需要具备美工能力,能够从业务流程到界面交互再到发布之间都能够进行系统性的构建和实践。 首先,需要准备安装向导的图片资源、控件资源等基本素材,并制定对应的管理策略。然后在1.4版本以上的 Inno Setup 中,我们可以手动复制 Setup 向导的默认源文件,再进行相应的更改即可。 接着,需要使用 Pascal 编写脚本来确保安装向导能够正确检测到用户的操作,以及完成相应的安装任务。同时,还需要定义安装向导的菜单项、默认值、文件读取方式等,以方便用户进行自定义设置和个性化操作。 最后,在整个自定义安装界面开发完成后,我们需要使用 Inno Setup 自带的编译器工具将代码打包并生成可供安装的安装包,从而方便用户进行安装和使用。 技术实现方案 实现自定义安装界面的技术方案主要分为以下几个方面: 1. 界面设计工具。可以选择比较流行的界面设计工具,如 Adobe Photoshop,Axure RP,Sketch 等,这些工具都具有快速地设计复杂界面的能力。 2. 编程语言。Inno Setup 采用 Pascal 语言编写,因此需要对 Pascal 语言有一定的了解和掌握基本的编程技能。 3. Inno Setup 插件。InnoSetup 提供了一系列插件,可以方便我们在安装向导中引入大量有用的功能,如申请服务权限、加密等。 需要注意的是,Inno Setup 自定义安装界面开发风格应该以简单、实用、易于维护为原则,在设计时需要注意不要过于复杂和繁琐,以方便用户进行快速的操作和安装。 ### 回答3: Inno Setup是一款功能强大的安装程序制作软件,它可以帮助开发者快速的制作出安装程序。而自定义安装界面则是Inno Setup所提供的一个很实用的功能之一,它可以使得开发者可以自由的设计自己的安装界面,让用户有一个更加舒适的安装体验。 首先,我们需要了解Inno Setup自定义安装界面的实现方式。整个安装过程中,Inno Setup会按照一定的流程逐步展示各个界面,在每一个界面上,开发者都可以通过界面的设计和编写代码来进行自定义。 在设计安装界面时,我们可以使用Inno Setup自带的画布工具或者其他画图工具来设计出自己喜欢的安装界面,然后通过Inno Setup的代码来添加各种控件和事件。例如,我们可以添加各种按钮、文本框、进度条、复选框等控件,并通过代码来控制它们的显示和行为。 接下来,我们需要考虑自定义安装界面需要实现哪些功能。例如,我们可能需要在安装界面中添加自己的公司Logo、版本号、安装路径等信息,或者添加一些用户需要填写的信息,比如用户的名称、电子邮件和密码等。如果需要,我们也可以添加自己的安装协议和许可协议,并让用户需要点击同意才能继续安装。 总的来说,Inno Setup自定义安装界面功能非常强大,可以让开发者灵活的设计和实现自己的安装界面。但是需要注意的是,设计一个良好的安装界面需要考虑到用户的体验和操作方式,所以我们需要仔细考虑每一个控件的设计和布局,让用户能够尽可能的了解整个安装过程,并且保持简洁和易于操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tung.D.Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值