正文
原项目
https://github.com/anchengjian/vue-nw-seed/tree/win-beautiful-setup
我们只优化打包的美化,所以只用到下面的两个
另一个美化的地址
https://github.com/Iseason2000/MinecraftInstaller
其中主要就是 [code]
块下面的 Pascal Script
,通过它来控制安装流程和界面的美化。
- 控制安装流程的原理是 InnoSetup 通过 Pascal Scripting: Event Functions 这种事件机制,把流程节点的控制交给
Pascal Script
,使其可以控制上一步
、下一步
等等的操作。 - 界面的美化,主要是调用两个美化插件动态库:
botva2.dll
和InnoCallback.dll
。用其来控制贴图的位置和样式,和给按钮绑定相应的事件等等的。
美化包
链接:https://pan.baidu.com/s/1LiksgirjJLYRDEP0-t8xUA
提取码:psvm
运行效果
整体代码
1 | ; 该执行目录为 setup.iss 所在的目录,请注意拼接相对目录 |
兼容问题
窗口拖动
因为Inno5.5之后,WizardForm不再支持OnMouseDown, 所以首先我们要先创建一个Label覆盖窗口,再将label设置为透明,由Label来重载OnMouseDown。
1 | var |
高分屏缩放
1 | [Code] |
自定义语法
创建文本
1 | var lblWelcome:TLabel; |
创建按钮
1 | var |
创建图片
1 | var |
启动定时器
1 | SetTimer(0, 0, 50, WrapTimerProc(@PageInstall_TimerProc, 4)); |
创建输入编辑框
1 | begin |
设置UI对象显示与隐藏
1 | //隐藏按钮 |
监听安装进度
1 | //设置监听 |
解压图片
要先把图片包含在安装包中
1 | [Files] |
将tmp的资源, 解压到安装运行时搞出来的临时目录
1 | ExtractTemporaryFile('bg_welcome.png'); |
使用
1 | btnSetup:=BtnCreate(WizardForm.Handle,195,340,260,44,ExpandConstant('{tmp}\btn_setup.png'),1,False) |
目录常量
{app}
应用程序目录,这是用户在安装向导的选择安装目录页里面所选择的。这是Inno Setup中最常用的一个变量。
{userappdata}
类似于这样的目录C:\Users\Administrator\AppData\Roaming\
{autopf}
类似于C:\Program Files (x86)\
或者C:\Program Files\
{pf}
也是Inno Setup中比较常用的一个常量,这个路径是系统的Program Files目录,典型的是C:\Program Files
。
{tmp}
临时目录,这个目录并不是用户的 TEMP 环境变量指向的目录,而是安装程序在启动时在用户的临时目录下建立的一个子目录(它有一个类似于C:\WINDOWS\TEMP\IS-xxxxx.tmp
这样的名字),在安装程序退出时所有的文件和子目录将会被删除。对于在 [Run] 段里面要被执行且在安装以后又不需要的程序文件来说这个功能是非常有用的。
{win}
系统的Windows目录,一般为C:\WINDOWS
。例如:如果你使用了 {win}”MYPROG.INI ,而你的 Windows 目录是C:\WINDOWS
,那么安装程序就会将它转换成C:\WINDOWS\MYPROG.INI
。
{sys}
系统的 Windows 系统(System)目录(在 Windows NT/2000 下是 System32)。 例如:如果你使用了 {sys}\CTL3D32.DLL
,并且系统的 Windows 系统目录是C:\WINDOWS\SYSTEM
,那么安装程序就会将它转换成C:\WINDOWS\SYSTEM\CTL3D32.DLL
。
{src}
指向安装程序所在的位置。
{sd}
系统驱动器,它是指 Windows 被安装到的那个驱动器,典型的是C:
,对于 Windows NT/2000,这个常量同系统的环境变量“SystemDrive”是等效的。
{cf}
公共文件夹(Common Files),这个路径是系统的 Common Files 文件夹,典型的是C:\Program Files\Common Files
。
{fonts}
字体目录。
{dao}
DAO 目录,当安装程序运行在 Windows 95/NT 4+ 上时,它被等效为 {cf}\Microsoft Shared\DAO
,
当运行于 Windows NT 3.51 时,它被等效为 { win}\MSAPPS\DAO
。