InnoSetup详解中文资料Word格式.docx
《InnoSetup详解中文资料Word格式.docx》由会员分享,可在线阅读,更多相关《InnoSetup详解中文资料Word格式.docx(127页珍藏版)》请在冰点文库上搜索。
![InnoSetup详解中文资料Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/50bfd78e-3d0d-4d74-8f30-bf51dcedc0dd/50bfd78e-3d0d-4d74-8f30-bf51dcedc0dd1.gif)
脚本控制着安装程序的所有方面。
由它指定哪些文件将被安装到什么地方,在哪里创建快捷方式,且被命名为什么。
脚本文件一般可以用安装程序编译器程序内置的编辑器进行编辑。
在你编写完脚本后,下一个最终步骤就是选择安装程序编译器中的“编译”。
创建完成后,就可以运行根据你脚本编译的安装程序了。
按默认,这个安装程序创建在包含脚本文件目录下的名为“输出”目录中。
如果你想看看它是怎样工作的,启动安装程序编译器,单击“文件|打开”,并选择位于InnoSetup安装目录下的Examples子目录中的一个脚本文件。
(你也可以将这些示例脚本作为你自己编写脚本的模板。
)
Innosetup脚本示范(注释)
[Setup]
;
程序名
AppName=ISsample
版本号
AppVerName=ISsample1.0.0.0
发布者名
AppPublisher=Hkiss
相关连接
AppPublisherURL=
AppSupportURL=
AppUpdatesURL=
默认安装目录
DefaultDirName={pf}\ISsample
默认开始菜单名
DefaultGroupName=ISsample
是否打开->
可选安装开始菜单项
AllowNoIcons=yes
安装协议
LicenseFile=C:
\Example\原始文件\agreement.txt
安装前查看的文本文件
InfoBeforeFile=C:
\Example\原始文件\Setup_New.txt
安装后查看文本文件
InfoAfterFile=C:
\Example\原始文件\Setup_Old.txt
输出文件夹
OutputDir=C:
\Example\InnoSetup\out
输出文件名
OutputBaseFilename=setup
安装图标
SetupIconFile=C:
\Example\原始文件\title.ico
安装需要输入密码
Password=123
Encryption=yes
压缩相关
Compression=lzma
SolidCompression=yes
可以让用户忽略选择语言相关
ShowLanguageDialog=yes
备注版本信息
VersionInfoCompany=HTTP:
//www.Hkiss.COM
VersionInfoDescription=ISsample汉化增强版
VersionInfoVersion=1.0.0.0
VersionInfoCopyright=Copyright(C)2007-2008Hkiss
制作选择语言
[Languages]
Name:
"
chs"
MessagesFile:
compiler:
Default.isl"
;
LicenSeFile:
"
C:
\Example\原始文件\chs\agreement.txt"
en"
Languages\English.isl"
\Example\原始文件\en\agreement.txt"
用户定制任务
[Tasks]
desktopicon"
Description:
{cm:
CreateDesktopIcon}"
GroupDescription:
AdditionalIcons}"
Flags:
unchecked
quicklaunchicon"
CreateQuickLaunchIcon}"
Tasks_1"
用户自定义任务1"
Tasks_2"
用户自定义任务2"
选择了组件才会出现的定制任务
Tasks_3"
用户自定义任务3"
Components:
c1;
文件安装
[Files]
多语言安装环境设置公共参数Languages来设置
Source:
\Example\原始文件\enfile.txt"
DestDir:
{app}"
Languages:
en;
ignoreversion
\Example\原始文件\chsfile.txt"
chs;
用户自定义任务Tasks
\Example\原始文件\Tasks\tasks_1.txt"
{app}\Tasks"
ignoreversion;
Tasks:
Tasks_1
\Example\原始文件\Tasks\tasks_2.txt"
Tasks_2
\Example\原始文件\Tasks\tasks_Components.txt"
用户定义组件安装
\Example\原始文件\Components\Components_1.txt"
{app}\Components"
Components:
a1;
\Example\原始文件\Components\Components_2.txt"
a2;
\Example\原始文件\Components\Components_3.txt"
a3;
\Example\原始文件\Components\Components_4.txt"
a1a2a3;
用户注册自定义Dll文件regserver注册noregerror不显示错误信息
\Example\原始文件\jmail.dll"
ignoreversionregserver
添加自述文件
\Example\原始文件\ISsample.txt"
添加一个文件到缓存文件夹{Tmp}deleteafterinstall安装后删除
\Example\原始文件\test.exe"
{tmp}"
ignoreversiondeleteafterinstall
\Example\原始文件\ISsample.chm"
\Example\原始文件\ISsample.exe"
\Example\原始文件\ISsample.dll"
\Example\原始文件\ISsample.ini"
\Example\原始文件\ISsample.rar"
\Example\原始文件\ISsample_sys.dll"
{win}\System32"
\Example\原始文件\log\*"
{app}\log"
ignoreversionrecursesubdirscreateallsubdirs
注意:
不要在任何共享系统文件上使用“Flags:
ignoreversion”
安装类型设置
[Types]
Full;
Description:
完全安装"
iscustom
Compact;
简洁安装"
Custom;
自定义安装"
组件安装
[Components]
c1;
自定义任务3"
Types:
Full
安装Components_1"
FullCompactCustom;
安装Components_2"
Types:
FullCompact
安装Components_3"
开始菜单,桌面快捷方式
[Icons]
{group}\ISsample"
Filename:
{app}\ISsample.exe"
{group}\{cm:
ProgramOnTheWeb,ISsample}"
UninstallProgram,ISsample}"
{uninstallexe}"
{commondesktop}\ISsample"
Tasks:
desktopicon
{userappdata}\Microsoft\InternetExplorer\QuickLaunch\ISsample"
quicklaunchicon
添加一个帮助文挡
{group}\ISsample1.0.0.0帮助文档;
Filename:
{app}\ISsample.chm
用来在程序安装完成后在安装程序显示最终对话框之前执行程序常用与运行主程序显示自述文件删除临时文件
[Run]
LaunchProgram,ISsample}"
nowaitpostinstallskipifsilent
{app}\ISsample.txt"
查看显示自述文件"
postinstallskipifsilentshellexec
更改显示在程序中显示的消息文本
[Messages]
BeveledLabel=HKiss科技
卸载对话框说明
ConfirmUninstall=您真的想要从电脑中卸载ISsample吗?
%n%n按[是]则完全删除%1以及它的所有组件;
%n按[否]则让软件继续留在您的电脑上.
定义解压说明
StatusExtractFiles=解压并复制主程序文件及相关库文件...
用与在用户系统中创建,修改或删除注册表健值
[Registry]
Root:
HKLM;
SubKey:
Software\ISsample"
ValueType:
dword;
ValueName:
config;
ValueData:
10;
Flags:
uninsdeletevalue
在执行脚本
注意:
下面是code,因为与论坛使用的代码标签重名,改为了c0de,需要改回去。
[c0de]
//全局变量
varMyProgChecked:
Boolean;
//判断程序是否存在
//初始华程序事件
functionInitializeSetup():
boolean;
varIsbl:
//声明变量
varIsstr:
string;
begin//开始
Isbl:
=true;
//变量赋值
Isstr:
='
欢迎'
ifRegValueExists(HKEY_LOCAL_MACHINE,'
SOFTWARE\ISsample'
'
config'
)then
begin
MsgBox('
已安装过,请先卸载在安装'
mbConfirmation,MB_OK);
isbl:
=false;
endelse
//MsgBox('
无值'
end;
//下面是个麻烦的条件语句endelse注意
//ifMsgBox(Isstr,mbConfirmation,MB_OKCANCEL)=IDOKthen
//begin
//isbl:
//MsgBox('
执行了'
mbConfirmation,MB_OK);
//endelse
//MsgBox('
//end;
Result:
=Isbl;
//结束
procedureCurStepChanged(CurStep:
TSetupStep);
varIsstr:
string;
ifCurStep=ssInstallthen//实际安装前调用
CurStepChanged:
实际安装前调用'
mbConfirmation,MB_OKCANCEL);
//安装完成后调用
ifCurStep=ssPostInstallthen
Isstr:
=ExpandConstant('
{tmp}\tmp.rar'
);
//ifFileExists(Isstr)then
//begin
文件存在'
//endelse
文件不存在'
//end;
//MsgBox('
实际安装后调用'
//下一步按钮按钮事件
functionNextButtonClick(CurPageID:
Integer):
varResultCode:
Integer;
varIsSetup:
IsSetup:
=true;
caseCurPageIDof
wpSelectDir:
NextButtonClick:
'
#13#13'
Youselected:
'
+WizardDirValue+'
.'
mbInformation,MB_OK);
//WizardDirValue路径
wpSelectProgramGroup:
+WizardGroupValue+'
//开始菜单名
wpReady:
begin
ifnotRegValueExists(HKEY_LOCAL_MACHINE,'
SOFTWARE\Test'
)thenbegin
ifMsgBox('
程序执行需要Test.ext,是否安装!
mbConfirmation,MB_YESNO)=idYesthenbegin
ExtractTemporaryFile('
test.exe'
ifnotExec(ExpandConstant('
{tmp}\test.exe'
),'
SW_SHOWNORMAL,ewWaitUntilTerminated,ResultCode)then
Test.exe出错:
+SysErrorMessage(ResultCode)+'
mbError,MB_OK);
endelsebegin
IsSetup:
=false;
end;
BringToFrontAndRestore();
end;
=IsSetup;
三.脚本格式概述
InnoSetup脚本大致上分成若干的段,各段掌管不同的功能。
每个段控制安装程序部分的某个不同方面。
每个段用包含在中括号“[]”中的段名开始,每个段里面是一些相关的条目。
其中有两种不同主要类型的段:
有些就象[Setup]段,条目包含指令名和值(格式为Directive=Value),还有一些就象[Files]段,条目被参数分隔。
这里是一个例子:
AppName=MyProgram
MYPROG.EXE"
注意,在脚本中指定多个相同名字的段是合法的。
你可以通过在行起始位置加个分号“;
”在脚本中写入“注释”(编译时被编译时忽略)。
例如:
这是一条注释,放在这里只是要提醒我自己...
支持AC-like#include指令,从个别文件放入行到#include指令位置的脚本。
语法是:
#include"
filename.txt"
如果文件名中未提供完整的路径,编译将在包含#include指令的同一目录中查找。
文件名用“compiler:
”作为前缀的场合中,在编译器目录中查找文件。
四、段中参数
所有脚本中的段,除[Setup]、[Messages]、[CustomMessages]、[LangOptions]和[Code]段之外,包含的行中可有多个各自的参数。
下列是[Files]段中的一个举例:
MYPROG.CHM"
README.TXT"
isreadme
每个参数都由一个名字组成,然后跟随一个冒号,然后是一个值。
除非另外说明,如果参数未指定,将设定为一个默认值。
一行中多个参数用分号隔开,并且可以以任何次序列出。
参数的值如果包含一个用户定义的字符串时,一般来说用双引号("
)包含,例如象文件名。
引号使用不是必需的,但这样做可能会在值中的首位或末位被加入空格、分号和双引号。
在要引用的值中使用一个双引号字符,用两个连续的双引号字符,例如:
This"
contains"
embedded"
quotes"
安