Emballage facile :
![](https://img-blog.csdnimg.cn/img_convert/5382f77a3b2bb9e6a61b447616f40760.png)
Choisissez d'utiliser l'assistant pour créer un nouveau script
![](https://img-blog.csdnimg.cn/img_convert/88f8dc241e0d7f75d1df99fb4b2b04f6.png)
Remplissez le nom du package d'installation, la version d'installation, l'éditeur du package d'installation et le site Web associé au package d'installation dans la figure. Le nom et la version du package d'installation sont obligatoires et les deux autres sont facultatifs.
![](https://img-blog.csdnimg.cn/img_convert/312114922cbdde0773ee025df55a234e.png)
Le premier est le dossier de base cible de l'application qui peut être sélectionné, le second est le nom du dossier de l'application, qui est le répertoire d'installation nouvellement créé lors de l'installation. Il existe deux options ci-dessous : la première est de savoir si l'utilisateur peut modifier le dossier de l'application et la seconde est de savoir si l'application nécessite un dossier. cliquez sur Suivant
![](https://img-blog.csdnimg.cn/img_convert/447f1c8541c219511f49b50459973715.png)
Sélectionnez le fichier d'exécution principal de l'application correspondante et cliquez sur Parcourir pour sélectionner le dossier principal à empaqueter. Si vous devez ajouter d'autres fichiers, vous pouvez choisir d'ajouter des fichiers ou d'ajouter des dossiers ci-dessous. Vous pouvez voir qu'il existe deux conditions qui peuvent être vérifié au milieu. L'une est de savoir s'il faut autoriser les utilisateurs à démarrer l'application après l'installation, et la seconde est de savoir si l'application possède un fichier exécutable principal, généralement oui.
![](https://img-blog.csdnimg.cn/img_convert/de69d30a449b8fe42f9b8ef967afac20.png)
S'il faut associer le fichier au fichier d'exécution principal, le nom du type et l'extension de l'application.
![](https://img-blog.csdnimg.cn/img_convert/373feabc0a3a29bdccab894052548dfa.png)
Créer des raccourcis dans la barre de menu Démarrer, s'il faut autoriser les utilisateurs à créer des raccourcis sur le bureau
![](https://img-blog.csdnimg.cn/img_convert/aea6c91019b7f1de949537ceac98984d.png)
Le fichier de licence, le fichier d'informations d'affichage avant l'installation et le fichier d'informations d'affichage après l'installation peuvent être configurés dans cet assistant et peuvent également être implémentés en ajoutant du code dans le script ultérieurement, facultatif.
![](https://img-blog.csdnimg.cn/img_convert/036b9b4b2ed5a4097b5bf53c64449cc6.png)
Choisissez comment télécharger, pour qui télécharger ou demandez aux utilisateurs un mode de téléchargement.
![](https://img-blog.csdnimg.cn/img_convert/2d3509bedc515dc49222cee844d2c39b.png)
Sélectionnez le pack de langue
![](https://img-blog.csdnimg.cn/img_convert/8b942f29806cd326b0cbe4653e074818.png)
Configurez le dossier de sortie du rapport d'installation, le nom du package d'installation et le logo, et définissez le mot de passe.
![](https://img-blog.csdnimg.cn/img_convert/ef9e6e924485c902c9e3bb0672b07473.png)
Choisissez si vous souhaitez utiliser la commande de compilation #define, cliquez sur Suivant pour terminer l'assistant de script
![](https://img-blog.csdnimg.cn/img_convert/7e3f1dc493e69e571191f7e69db65b6e.png)
Après avoir cliqué sur Terminer, vous pouvez choisir d'exécuter le script sur cette base ou de ne pas l'exécuter, et d'apporter des modifications et des ajouts au script.
![](https://img-blog.csdnimg.cn/img_convert/668e69997ea3bc757ce053e1230fe654.png)
Introduction à la configuration Inno :
1. Définition des macros #define
Certaines variables globales personnalisées, par exemple : #define MyAppName "test" AppName={#MyAppName} lorsqu'elles sont utilisées ci-dessous, doivent ajouter {#}.
2. Sections principalement utilisées
1. La section [Configuration] est utilisée pour définir les informations de base telles que le nom et l'auteur du package d'installation. Il convient de noter que l'identifiant et le nom des différentes versions du même programme sont les mêmes, mais que les différents programmes sont différents et qu'un identifiant unique aléatoire peut être généré dans Tools-GenerateGUID.
2. Section [Langues], principalement pour écrire le pack de langue du programme, sélectionnez la langue selon l'assistant précédent à générer
3. [Tâches], une section facultative qui définit toutes les tâches définissables par l'utilisateur que le programme d'installation effectuera pendant le processus d'installation.
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
[Messages],更改显示在程序中的消息文本,例如:
ButtonNext=&Forward
将向导上的next修改为转发
[Dirs]此可选部分定义除了用户选择的应用程序目录(自动创建)之外,安装程序要创建的任何其他目录。在主应用程序目录下创建子目录是本节的常见用途。
Name: "{app}\data"
Name: "{app}\bin"
({app}是指脚本项目所在的文件目录)
[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”
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);