Inno Setup
Inno Setup 是一款免费的window是安装制作软件,在功能设置和稳定性上的竞争力可能已经超过一些商业的安装程序制作软件。安装程序用编译脚本(.iss)的方式创建,脚本为类似.ini文件格式的ASCII码文本文件,根据产品需求可通过脚本控制程序安装位置、创建快捷方式等功能属性。这里稍整理下一些常用属性功能:
1.Inno setup脚本demo
2.安装协议默认同意
3.组件选择框
4.跳过特定的安装界面
5.信息包含换行符号
6.删除文件和删除文件夹
7.自定义BeveledLabel文字
8.安装完成后显示新特性
9.安装界面显示gif动画
10.Inno Setup在线辅助文档
1.Inno setup脚本demo
[Setup]
;程序名
AppName=cnblogs
;版本号
AppVerName=cnblogs 1.0.0.0
;发布者名
AppPublisher=sz-leez
;相关连接
AppPublisherURL=http://www.cnblogs.com/sz-leez/
AppSupportURL=http://www.cnblogs.com/sz-leez/
AppUpdatesURL=http://www.cnblogs.com/sz-leez/
;默认安装目录
DefaultDirName={pf}\{#AppName}
;默认开始菜单名
DefaultGroupName={#AppName}
;安装协议
LicenseFile=C:\Inno_Setup_demo\license.txt
;安装前查看的文本文件
;InfoBeforeFile=C:\Inno_Setup_demo\Readme.txt
;安装后查看文本文件
;InfoAfterFile=C:\Inno_Setup_demo\what's new.txt
;输出文件夹
OutputDir=.\Output\
;输出文件名
OutputBaseFilename=cnblogs_setup
;安装图标
SetupIconFile=C:\Inno_Setup_demo\cnblogs.ico
;安装需要输入密码
;Password=123456
;Encryption=yes
;压缩相关
Compression=lzma
SolidCompression=yes
;可以让用户忽略选择语言相关
ShowLanguageDialog=yes
;备注版本信息
VersionInfoCompany=XXX Software Co., Ltd.
AppCopyright=Copyright 2006-2015 XXX Software Co., LTD.
AppPublisher=XXX Software
;制作选择语言
[Languages]
Name: "en"; MessagesFile: compiler:Default.isl
;用户定制任务,任务列表界面 复选框
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Files]
;打包应用程序exe
Source: .\app\{#SourUI}; DestDir: {app}; Flags: ignoreversion; DestName: {#DestUI}
;开始/程序 里的 ie、反安装 快捷键图标
Source: .\images\Uninstall.ico; DestDir: {app}\Images\uninstallicon; Flags: ignoreversion
[Icons]
;程序exe图标
Name: {group}\{#AppName}; Filename: {app}\{#DestUI}; WorkingDir:{app}
;开始菜单卸载图标链接
Name: {group}\{#AppName} Uninstall; Filename: {uninstallexe}; WorkingDir:{app}; IconFilename: {app}\Images\uninstallicon\Uninstall.ico
;桌面图标、快速启动栏图标
Name: {commondesktop}\{#AppFullName}; Filename: {app}\{#DestUI}; WorkingDir:{app}; Tasks: desktopicon
Name: {userappdata}\microsoft\internet explorer\quick launch\{#AppFullName}; Filename: {app}\{#DestUI}; WorkingDir:{app}; Tasks: quicklaunchicon
[Run]
;安装界面最后一页的复选框
Filename: {app}\{#DestUI}; Description: {cm:LaunchProgram,{#AppFullName}}; Flags: postinstall nowait skipifsilent runascurrentuser
[code]
//全局变量
var MyProgChecked: Boolean;
//判断程序是否存在
//初始华程序事件
function InitializeSetup(): boolean;
var Isbl: boolean; //声明变量
var Isstr: string;
begin //开始
Isbl := true; //变量赋值
Isstr := '欢迎';
if RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\cnblogs', 'config') then
begin
MsgBox('已安装过,请先卸载在安装',mbConfirmation, MB_OK);
isbl := false;
end else
begin
//MsgBox('无值',mbConfirmation, MB_OK);
isbl := true;
end;
Result := Isbl;
end; //结束
procedure CurStepChanged(CurStep: TSetupStep);
var Isstr :string;
begin
if CurStep=ssInstall then //实际安装前调用
begin
//安装完成后调用
//do something
end;
if CurStep=ssPostInstall then
begin
//do something
end;
end;
2.安装协议默认同意
[code]
procedure InitializeWizard();
begin
WizardForm.LICENSEACCEPTEDRADIO.Checked := true;
end;
3.组件选择框
[Types]
Name: full; Description: 推荐
Name: default; Description: 典型
Name: custom; Description: 自定义; Flags: iscustom
;告诉安装程序这个类型是自定义类型。必须定义iscustom这个参数,才能显示出组件选择框
4.跳过特定的安装界面
[code]
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=XXX then
result := true;
end;
;XXX对应需要跳过的页面ID:
wpWelcome, wpLicense, wpPassword, wpInfoBefore, wpUserInfo, wpSelectDir, wpSelectComponents, wpSelectProgramGroup, wpSelectTasks, wpReady, wpPreparing, wpInstalling, wpInfoAfter, wpFinished
5.信息包含换行符号
在 [Messages] 换行符号为%n
在 MsgBox 中换行符号为 #13#10 //#13 为回车字符
6.删除文件和删除文件夹
;只删单个文件用 DeleteFile
DeleteFile(ExpandConstant('{app}\cnblogs.exe'));
;删除所有文件及文件夹
DelTree(ExpandConstant('{app}'), True, True, False);
7.自定义BeveledLabel文字
[Messages]
BeveledLabel=sz-leez
8.安装完成后显示新特性
[Run]
Filename: "{app}\description.txt"; Description: "What's New"; Flags: postinstall shellexec skipifsilent
9.安装界面显示gif动画
http://restools.hanzify.org/article.asp?id=79&page=2
10.Inno Setup在线辅助文档
http://www.jrsoftware.org/ishelp/index.php