InnoSetup介绍
InnoSetup 是一个免费开源的 Windows 安装程序制作软件。第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超过一些商业的安装程序制作软件。
安装程序用编译脚本的方式创建,脚本其实就是一个类似.INI 文件格式的文件,脚本用一个“.iss”(表示 Inno Setup Script脚本) 的扩展名。脚本控制着安装程序的所有方面。由它指定哪些文件将被安装到什么地方,在哪里创建快捷方式,且被命名为什么。
脚本文件一般可以用安装程序编译器程序内置的编辑器进行编辑。在你编写完脚本后,下一个最终步骤就是选择安装程序编译器中的“编译”。创建完成后,就可以运行根据你脚本编译的安装程序了。按默认,这个安装程序创建在包含脚本文件目录下的名为“输出”目录中。
Inno Setup 安装目录下的Examples 子目录中有好多模板脚本文件可供参考。
innoSetup功能
1.支持现在所有正在使用的 Windows 版本:
2.支持创建单个 EXE 格式的安装程序,使你的程序可以很方便地在网络上发表。同时也支持磁盘延伸。
3.定制安装类型,例如:完整安装,最小安装,自定义安装。
4.完整的卸载功能。
5.文件安装:包括完全的“压缩”支持,bzip2 和 7-Zip LZMA 文件压缩。安装程序可以比较文件版本信息,替换正在使用的文件,使用共享文件计数,注册 DLL/OCX 和类型库,以及安装字体。
6.可以在任意地方创建快捷方式,包括开始菜单和桌面。
7.创建注册表 和 .INI 条目。
8.在安装之前、之中或之后可运行其他程序。
9.支持多语言安装。
10.支持密码和加密安装。
11.支持数字签名 、安装和卸载。
12.后台安装和后台卸载。
13.完整的 Pascal 脚本 引擎选项于运行期高级自定义安装和卸载。
14.全部源代码公开 (Delphi)。
InneSetup脚本
典型inneSetup脚本
1 [Languages]
2 Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
3
4 [Setup]
5 AppName=光软集团多媒体管理系统
6 AppVersion=V1.0
7 WizardStyle=modern
8 DefaultDirName=D:FounderCB
9 DefaultGroupName=光软集团
10 UninstallDisplayIcon={app}uninstall.exe
11 Compression=lzma2
12 SolidCompression=yes
13 OutputDir=install
14 SetupIconFile=D:多媒体安装盘iconlogo.ico
15 OutputBaseFilename=founderCB_setup
16 WizardImageFile=D:多媒体安装盘安装.bmp
17 PrivilegesRequired=admin
18 ;WizardSmallImageFile=D:多媒体安装盘1.bmp
19
20 [Files]
21 Source: "D:多媒体安装盘mysql-8.0.21*"; DestDir: "{app}mysql-8.0.21";Flags:igNoreversion recursesubdirs createallsubdirs
22 Source: "D:多媒体安装盘openjdk-11.0.2*"; DestDir: "{app}openjdk-11.0.2";Flags:igNoreversion recursesubdirs createallsubdirs
23 Source: "D:多媒体安装盘 omcat-9.0.39*"; DestDir: "{app} omcat-9.0.39";Flags:igNoreversion recursesubdirs createallsubdirs
24 Source: "D:多媒体安装盘chrome-84*"; DestDir: "{app}chrome-84";Flags:igNoreversion recursesubdirs createallsubdirs
25 Source: "D:多媒体安装盘initService.bat"; DestDir: "{app}";Flags:igNoreversion recursesubdirs createallsubdirs
26 Source: "D:多媒体安装盘startup.bat"; DestDir: "{app}";Flags:igNoreversion recursesubdirs createallsubdirs
27 Source: "D:多媒体安装盘uninstallService.bat"; DestDir: "{app}";Flags:igNoreversion recursesubdirs createallsubdirs
28 Source: "D:多媒体安装盘iconlogo.ico"; DestDir: "{app}";Flags:igNoreversion recursesubdirs createallsubdirs
29 ;Source: "D:多媒体安装盘
untime.exe"; DestDir: "{app}";Flags:igNoreversion recursesubdirs createallsubdirs
30
31 [Icons]
32 Name: "{group}光软集团"; Filename: "{app}startup.bat";IconFilename:"{app}iconlogo.ico"
33 Name: "{userdesktop}光软集团"; Filename: "{app}startup.bat";IconFilename:"{app}iconlogo.ico"
34
35 [INI]
36 Filename:"{app}mysql-8.0.21my.ini";Section:"mysqld";Key:"basedir"; String:"{app}mysql-8.0.21"
37 Filename:"{app}mysql-8.0.21my.ini";Section:"mysqld";Key:"datadir"; String:"{app}mysql-8.0.21data"
38
39 [Run]
40 ;Filename: "{app}
untime.exe"; Description: "{cm:LaunchProgram,为操作系统安装运行库}"; Flags: postinstall skipifsilent
41 Filename: "{app}initService.bat"; Description: "{cm:LaunchProgram,初始化服务脚本}"; Flags: postinstall skipifsilent
42 Filename: "{app}startup.bat"; Description: "{cm:LaunchProgram,光软集团多媒体管理系统}"; Flags: postinstall skipifsilent
43 [UninstallRun]
44 Filename: "{app}uninstallService.bat"; Flags: skipifdoesntexist
45 [code]
46 //function InitializeSetup (): Boolean;
47 //begin
48 //MsgBox('请确保以管理员权限安装!', mbInformation, MB_OK);
49 //Result := true;
50 //end;
设置管理员权限安装
实际制作软件安装包时,需要在安装完成后执行初始化脚本,而win10中设置环境变量等操作都需要管理员权限,因此,需要设置为管理员权限启动的安装包。
但是很尴尬,网上使用Resource Hacker修改为管理员权限的只是改了个图标,并不会使编译好的安装程序要求管理员权限安装。