Inno Setup简介

简易打包:

选择使用向导创建一个新的脚本

填好图中的安装包名称、安装版本、安装包发布者、安装包的相关网站,安装包名称和版本是必填的,剩下那两个可以选填。

第一个是应用程序目标基本文件夹可以选择,第二个是应用程序文件夹名称,就是安装时新建的安装目录。下边有两个可供选择,第一个是用户是否可以更改应用程序文件夹、第二个是应用程序是否需要文件夹。点击下一步

选择相应应用程序的主执行文件点击浏览去选择要封装的主文件夹,如果需要添加其他文件可以在下边选择添加文件或添加文件夹,可以看到中间有两个可供勾选的条件,第一个是是否允许用户在安装后启动应用程序、第二个是应用有无主执行文件,一般是有的。

是否将文件关联到主执行文件,应用程序的类型名称、拓展名。

在开始菜单栏创建快捷方式、是否允许用户创建桌面快捷方式

许可文件、安装之前显示信息文件、安装之后显示信息文件,可以在这向导中进行配置,后续也可以在脚本中添加代码实现,选填

选择下载方式,为哪些用户下载,或者询问用户下载模式。

选择语言包

配置安装报的输出文件夹,安装包名称、和标志,设置密码

选择是否使用#define编译指令,点击下一步就完成了脚本向导

点击finish以后可以选择就此运行脚本,或者不运行,对脚本进行更改添加。

Inno Setup简介:

一、宏定义#define

自定义的一些全局变量,例如:#define MyAppName "test"在下文中使用时AppName={#MyAppName},要加{#}。

二、主要使用到的节

1.[Setup]节,用来设置安装包的名称、作者等基础信息。需要注意的是同一个程序的不同版本程序的id、name是一致的,不同程序是不同的,可以在Tools-GenerateGUID中生成随机唯一的id。

2.[Languages]节,主要是编写程序的语言包,根据前边向导选择语言生成

3.[Tasks],可选节,他定义了安装程序在安装过程中将执行的所有用户可自定义任务

4.[Files]节,定义安装程序要在用户系统上安装的文件,在这个段中有Source和DestDir两个主要属性,Source是指文件在设计者电脑上的位置,DestDir是指要安装在用户电脑上的位置。

5.[Registry],定义希望安装程序在用户系统上创建、修改或删除的注册表项/值

6.[Icons],定义安装程序在“开始”菜单栏和桌面上创建的快捷方式

7.[Run],可选节,在成功安装程序之后但在安装程序显示最终对话框之前要执行的任意数量的程序,比如安装后运行。

8.[Type],可选节,定义安装的类型,完全安装、简洁安装、自定义安装。例:

[Types]

Name: "full"; Description: "Full installation"

Name: "compact"; Description: "Compact installation"

Name: "custom"; Description: "Custom installation"; Flags: iscustom

9.[Components],可选节,受到[types]的影响,做组件选择,例如:

Name: "main"; Description: "Main Files"; Types: full compact custom; Flags: fixed

Name: "help"; Description: "Help Files"; Types: full

Name: "help\english"; Description: "English"; Types: full

Name: "help\dutch"; Description: "Dutch"; Types: full

  1. [Messages],更改显示在程序中的消息文本,例如:

ButtonNext=&Forward

将向导上的next修改为转发

  1. [Dirs]此可选部分定义除了用户选择的应用程序目录(自动创建)之外,安装程序要创建的任何其他目录。在主应用程序目录下创建子目录是本节的常见用途。

Name: "{app}\data"

Name: "{app}\bin"

({app}是指脚本项目所在的文件目录)

  1. [INI]此可选部分定义任何 .您希望安装程序在用户系统上设置的 INI 文件条目。

Filename: "MyProg.ini"; Section: "InstallSettings"; Flags: uninsdeletesection

13[Code]代码段,Pascal脚本

三、Pascal语言简介

基础语法:

赋值:”:=”

定义变量:var name:type;

if语句:

if 条件 then

begin

end else

begin

end;

(跟在if下的end后有else的话不用加分号)

for循环:

for i:=2 to n do

s:=s*i;

while语句:

while a>0 do

begin

a:=a-1;

end;

函数:

function name (形参名:形参类型):返回值类型;

(返回值直接是Result,不用自己定义变量作为返回值)

procedure name(形参名:形参类型);

换行:”#10#13”

  1. Setup event functions:

(事件函数,可以重载)

function InitializeSetup():Boolean;在初始化中调用,返回否则停止,否则返回是。可以使用这个函数做一些想到窗口显示之前做的事,比如判断用户是否安装了别的版本、安装环境是否满足条件。

procedure InitializeWizard();使用此事件函数可在启动时对向导页进行更改。不能为此使用 InitializeSetup 事件函数,因为在触发时,向导窗体尚不存在.

procedure DeinitializeSetup();在安装程序终止之前调用。请注意,即使用户在安装任何内容之前退出安装程序,也会调用此函数。

procedure CurStepChanged(CurStep:TSetupStep);您可以使用此事件功能执行自己的安装前和安装后任务。在实际安装开始之前使用 CurStep=ssInstall 调用,在实际安装完成后使用 CurStep=ssPostInstall 调用,在成功安装后安装程序终止之前使用 CurStep=ssDone调用。

procedure CurInstallProgressChanged(CurProgress,MaxProgress:Integer);可以使用此事件函数在安装程序提取文件、创建快捷方式、创建INI 条目和创建注册表项时监视进度。

function NextButtonClick(CurPageID:Integer):Boolean;点击next按钮时调用 。

function BackButtonClick(CurPageID:Integer):Boolean;点击back按钮调用。

procedure CancelButtonClick(CurPageID:Integer;var Cancle,Confirm:Boolean);点击取消按钮时调用。

function ShouldSkipPage(PageID:Integer):Boolean;向导调用此事件函数以确定是否应显示特定页面(由 PageID 指定)。如果返回 True,则将跳过该页面;如果返回 False,则可能会显示该页面。

procedure CurPageChanged(CurPageID:Integer);在显示新的向导页面后调用。

function CheckPassword(Password:String):Boolean;如果安装程序在 Pascal 脚本中找到密码查核事件函数,它会自动显示“密码”页并调用查核密码来检查密码。返回 True 接受密码,返回 False 拒绝密码。

function NeedRestart():Boolean;返回 True 指示安装程序在成功安装结束时提示用户重新启动系统,否则返回 False。

function UpdateReadyMemo(Space,NewLine,MemoUswrInfoInfo,MemoDirInfo,MemoTypeInfo,MemoComponentsInfo,MemoGroupInfo,MemoTasksInfo:String):String;如果安装程序在 Pascal 脚本中找到 UpdateReadyMemo 事件函数,则当“准备安装”向导页变为活动页时,将自动调用该函数。

function RegisterPreviousData(PreviousDataKey:Integer);若要存储自定义向导页上输入的用户设置,请在 Pascal 脚本中放置一个 RegisterPreviousData 事件函数,并在其中调用 SetPreviousData(PreviousDataKey, ...),每个设置一次。

function CheckSerial(Serial:String):Boolean;如果安装程序在 Pascal 脚本中找到 CheckSerial 事件功能,则序列号字段将自动出现在“用户信息”向导页上(必须在 [设置] 部分中使用 UserInfoPage=yes 启用该字段!返回 True 接受序列号,返回 False 拒绝序列号。

function GetCustomSetupExitCode:Integer;返回一个非零数字以指示安装程序返回自定义退出代码。仅当安装程序已成功运行到完成且退出代码为 0 时,才会调用此函数。

function PrepareToInstall(var NeedsRestart:Boolean):String;您可以使用此事件函数来检测和安装缺少的必备组件和/或关闭任何即将更新的应用程序.如果 CloseApplications 设置为 yes,则在安装程序检查正在使用的文件之前调用此函数。

function RegisterExtraCloseApplicationsResources;要注册额外的文件,如果 CloseApplications 设置为 yes,安装程序应检查是否正在使用,请在 Pascal 脚本中放置一个 RegisterExtraCloseApplicationsResources 事件函数,并在其中调用 RegisterExtraCloseApplicationsResource 每个文件一次。

五、Uninstall event functions:

function InitializeUninstall():Boolean;卸载程序

procedure InitializeUninstallProgressForm();使用此事件函数可在启动时更改进度窗体。不能为此使用 InitializeUninstall 事件函数,因为在触发时,进度窗体尚不存在。

procedure DeinitializeUninstall();

procedure CurUninstallStepChanged(CurUninstallStep:TUninstallStep);

function UninstallNeedRestart():Boolean;

六、如何使用DLLS和.NET依赖:

DLLS:

[Code]

function A(B: Integer): Integer;

external '<dllfunctionname>@<dllfilename>';

function A(B: Integer): Integer;

external '<dllfunctionname>@<dllfilename> <callingconvention>';

function A(B: Integer): Integer;

external '<dllfunctionname>@<dllfilename> <callingconvention> <options>';

callingconvention:调用约定,一般是stdcall

options:delayload,延迟加载DLL,在使用到该函数时加载;loadwithalteredsearchpath,指定应使用 Windows 标志LOAD_WITH_ALTERED_SEARCH_PATH加载 DLL,这实质上会导致加载程序在包含 DLL 的目录中搜索任何依赖 DLL;setuponly,指定仅当脚本从安装程序运行时,才应加载 DLL;uninstallonly,指定在卸载时加载。

.NET依赖:

首先要将.net的安装包文件放在.iss文件目录下,在[Files]段添加如下代码:

Source:"E:\Inno setup\PRO\ndp48-x86-x64-allos-enu.exe";DestDir:"{tmp}";Flags:ignoreversion,将文件添加在用户安装后的系统临时文件夹中,需要注意的是,他会在用户点击安装后才会将文件解压到临时文件中,而我们需要在向导未开始之前判断用户是否安装了,没有安装的话我们来进行安装,所以我们的代码需要将.NET的安装包进行解压放进系统临时文件夹中:

ExtractTemporaryFile('ndp48-x86-x64-allos- enu.exe');

此时我们可以调用Exec函数来运行.NET的安装文件:

Exec(ExpandConstant('{tmp}\ndp48-x86-x64-allos-enu.exe'),'','',SW_SHOWNORMAL,ewWaitUntilTerminated,rc);

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
习惯使用的打包工具就是 Inno Setup,而 Inno Setup 是用于安装软件的流行程序。不幸的是,没有官方的解压程序-将文件从自解压的可执行文件中取出的唯一方法是运行它。对于使用 Inno Setup 创建的安装程序的用户,Inno Setup Unpacker 可以派上用场。该工具严格从命令行运行,可让您从其安装包中快速提取安装文件。 解决此问题的一个软件是 Sergei Wanin 的 InstallExplorer,它是 FAR Manager 的插件,可以解压缩多种安装类型,包括 Inno Setup(IS)。 但是由于它没有及时更新,因此大部分时间都不支持最新的 IS,因此该程序诞生了。 Inno Setup 提取工具 Inno Setup Unpacker 中文版Inno Setup 提取工具 Inno Setup Unpacker 中文版 与 InstallExplorer 相比优点是: Innounp 是开源的,基于IS源码。 因此,它更有可能支持将来的IS版本。 它会恢复安装脚本(.iss文件)的一部分,包括注册表更改和已编译的 Innerfuse/RemObjects Pascal 脚本(如果有)。 Inno Setup 管理变得简单 Inno Setup 是一个流行且可靠的应用程序,可通过帮助您生成脚本来促进程序安装程序的创建。使用 Inno Setup 编译代码会导致从容器中解压缩安装文件,只能通过自解压文件来完成。换句话说,您需要创建一个自解压的可执行文件来封装安装文档。 Inno Setup Unpacker 可以帮助您避免此类操作,这特别有用,因为多种系统安全协议会阻止可执行文件的下载。该程序允许您通过几次按键从存档中提取文件。 从命令行运行程序 Inno Setup Unpacker 没有 GUI,但是您可以查看所有功能并从命令行轻松操作它。可能需要管理权限才能打开程序,但否则程序运行就没有问题。 Inno Setup Unpacker 的功能包括命令和选项。这些命令包括显示安装信息,详细列出文件,将文件提取到当前目录。您也可以提取不带路径的文件并测试它们的完整性。 至于选项,例如,您可以启用批处理模式,提取内部嵌入式文件,使用密码解密安装或提取所有重复文件的副本。 简单的使用说明 在命令行中打开 Inno Setup Unpacker 时,您可以查看命令,选项和使用说明的列表。该程序使您可以快速,轻松地从 Inno Setup 软件包中提取文件。此外,它使用简单,无需安装。 用法 Innounp是一个控制台应用程序,它使用命令行选项来找出要执行的操作。有关使用FAR或Total Commander作为前端的更人性化的界面,请参见下面的MultiArc部分。 Windows资源管理器爱好者:nullz制作了一些.reg脚本,以将innounp添加到右键菜单中,而Richard Santaella为innounp制作了图形包装(在下载页面上获取)。 innounp [command] [options] [@filelist] [filemask …] 命令: (no) 显示常规安装信息 -v 详细列出文件(带有大小和时间戳) -x 从安装中提取文件(到当前目录,另请参见 -d) -e 提取没有路径的文件 -t 测试文件的完整性 选项: -b 批处理(非交互式)模式-不会提示您输入密码或更改磁盘 -q 提取时不指示进度 -m 处理内部嵌入式文件(例如 license 和 uninstall.exe) -pPASS 使用密码解密安装 -dDIR 将文件提取到 DIR 中(可以是绝对路径,也可以是相对路径) -cDIR 指定 DIR 是安装中的当前目录 -n 不要尝试解压缩新版本 -fFILE 与 -p 相同,但是从 FILE 读取密码 -a 处理重复文件的所有副本 -y 在所有查询中均假设为“是”(例如覆盖文件) 如果安装程序具有 setup.0(在不使用 SetupLdr 的情况下进行安装),请在 setup.0 而不是 setup.exe 上运行 innounp。 要从特定目录提取所有文件,请使用 dirname \ *.*,而不仅仅是 dirname。 默认情况下,所有文件都提取到当前目录。使用 -d 替代此行为。例如,-dUnpacked 将在当前目录内创建一个名为 Unpacked 的目录,并将提取的文件放在此处。 -c 选项很难解释。假设您在文件管理器中打开了一个安装,然后浏览到 {app}\subdir\program.exe。现在,如果将 program.exe 复制到另一个位置,将创建整个目录树
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值