[] : 里面的就是 段 每个段里面的是属性

AppId : 软件的APPID尽量是唯一的,随机生成,尽量不跟其他软件的ID冲突,这个ID安装之后是要写进系统的注册表的,系统在管理和卸载你的软件的时候就是通过这个ID去操作的。若相同,则会覆盖安装。

用分号;进行注释

{autopf} : C盘中 Program Files的路径

Compression : 压缩方式

SolidCompression: 是否让所有文件一次性压缩

[任务段] : 存放了安装包中用户可以选择的选项

[文件段] : 包含要打进安装包中的所有文件

[运行段] : 用户安装完之后你要去执行的一些操作

[代码段] :

begin 相当于前花括号 {
end 相当于后花括号 }

:= 变量赋值

  1. 最简单的iss脚本
[setup]AppName=TestAppVerName=TEST;默认安装路径
DefaultDirName="C:\Users\ou\Desktop\新建文件夹 (3)\source"AppVersion=1.0[files]
;需要加进安装包的文件
Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}"
  1. 修改安装时的图片
[setup]AppName=TestAppVerName=TESTDefaultDirName="E:\TEST"AppVersion=1.0WizardImageFile=dh.bmp[files]Source: "F:\desktop\ipmsg.exe"; DestDir: "{app}"
  1. 指定压缩方式

Setup段中的compression指定了采用的压缩方式,较高的压缩率需要较多的时间或者需要更大的内存空间,可用的值如下:

zip

zip/1到zip/9

bzip

bzip/1 到bzip/9

lzma

lzma/fast

lzma/normal

lzma/max

lzma/ultra

lzma/ultra64

lzma2

lzma2/fast

lzma2/normal

lzma2/max

lzma2/ultra

lzma2/ultra64

none

其中lzma2/max是编译器使用的默认压缩方式,另外,lzma/ultra、lzma/ultra64、lzma2/ultra和lzma2/ultra64在使用前需要审查一下内存需求。Zip方式的压缩算法比较快,并且在压缩和解压的时候只需要很低的内存空间(不超过1M),但是压缩并不如其他的方式好,zip和lzma算法一样,有一个很特别的属性:对不可压缩文件(例如已经被压缩过的文件)直接跳过,默认的压缩级别是7(可用的是1-9)

Bzip是bzip2压缩器采用的方法,通常比zip方法压缩好,但是压缩速度比较慢,同时需要占用更大的内存空间,通常在压缩的时候是8M,解压的时候则是4M,默认的压缩级别是9(可用的是1-9)

Lzma则是7-Zip LZMA压缩器采用的方法,相比前面的zip和bzip压缩算法,效果明显好一些,但是也要占用较多的内存,速度也比较慢。

Lzma2是7-Zip LZMA2压缩器采用的方法,该算法是lzma的改进版,能对不可压缩文件提供更好的比率,并可对大文件实现多部分同步压缩。同样地,该算法也要消耗较大的内存。

None显然是不使用任何压缩方法。

可以根据自己的文件特性选择合适的压缩算法,个人认为就目前的情况而言,一般的打包使用默认的压缩算法即可。

  1. 为程序创建桌面快捷方式
[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="E:\TEST"AppVersion=1.0[files]Source: "F:\desktop\ipmsg.exe"; DestDir: "{app}"[icons]Name: "{userdesktop}\飞鸽传书";Filename: "{app}\ipmsg.EXE"; WorkingDir: "{app}"

Name:要创建的快捷方式的名字和位置,上例中将会在当前用户的桌面创建一个名为“飞鸽传书”快捷图标,该选项是是必须的。

FileName:快捷方式的命令行文件名,即快捷方式指向的实际可执行文件,这里是ipmsg.exe文件,该项为必须的。

Parameters:快捷方式的可选命令行参数,如果编写的是一个命令行方式的可执行文件,额可以通过该选项传递参数,一般的可执行文件都不需要该选项。

WorkingDir:快捷方式的工作 (或启动) 目录,就是指示程序在哪个目录开始运行。

HotKey:快捷方式的热键 (或快捷键) 设置,就是可以用于启动程序的组合键

Comment:指定快捷方式的注释 (或描述) 对象,当鼠标移动到该快捷方式上的时候会有一个黄色的小窗口给出提示,一般是该程序的描述。

IconFileName:要显示的自定义图标文件名。这可以是一个包含图标文件的可执行映像即.exe或者.dll)也可以是一个.ico 文件,默认会采用原可执行文件的图标。

IconIndex:指定的文件中使用的以零为基点的图标索引,这是因为有些Icon可以存放在.dll文件中,例如操作系统中的shell32.dll文件,保存有100多个图标,如果IconFileName指定的是该文件(一般位于C:\WINDOWS\system32目录下),那么IconIndex就指定了使用哪个图标。

  1. 添加readme文件(可以是任何格式的)
[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="E:\TEST"AppVersion=1.0[files]Source: "F:\desktop\test\ipmsg.exe"; DestDir: "{app}";Source: "F:\desktop\test\readme.txt"; DestDir: "{app}";Flags:isreadme
  1. 在程序目录下创建文件
[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="E:\TEST"AppVersion=1.0[files]Source: "F:\desktop\test\ipmsg.exe"; DestDir: "{app}";Source: "F:\desktop\test\readme.txt"; DestDir: "{app}";Flags:isreadme[dirs]Name:"{app}\WorkDir"

安装好之后会在安装目录下创建一个新的文件夹WorkDir

  1. 提供安装语言选项
[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="E:\TEST"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=no[languages]Name: "en"; MessagesFile: "compiler:Default.isl"[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";

上例中需要提到的是[setup]段中需要加入ShowLanguageDialog=yes,其实不加也是可以的,因为ShowLanguageDialog默认是yes。

安装过程中会根据用户的选择采用不同的语言界面:

  1. 有选择性的安装文件
DefaultDirName="E:\TEST"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=no[Components]Name: main; Description:"主程序(必选)";Types:full compact custom;Flags: fixedName: data; Description:"数据文件";Types:fullName: help;Description:"帮助文件";Types:full[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";Components:mainSource: "C:\Users\ou\Desktop\新建文件夹 (3)\source\ououtest.md"; DestDir: "{app}";Components:dataSource: "C:\Users\ou\Desktop\新建文件夹 (3)\source\123.xls"; DestDir: "{app}" ;Components:help


标志位设置为fixed,将确保主程序必定安装

  1. 修改安装过程中的文字显示
[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="E:\TEST"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=yes[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";[Messages]BeveledLabel=CastorButtonNext=继续吧(&F)>ButtonBack=返回吧(&B)<ButtonCancel=退出吧(&C)ButtonInstall=安装吧(&I)!ButtonFinish=搞定(&X)~~

  1. 操作注册表

有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过在安装程序中对注册表进行操作的结果。Inno Setup中通过[registry]段实现对注册表的操作。

[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="C:\Users\ou\Desktop\新建文件夹 (3)\新建文件夹"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=yes[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";[registry];本段处理程序在注册表中的键值Root:HKLM;Subkey:SOFTWARE\Microsoft\Windows\CurrentVersion\Run;ValueType: string; ValueName:TEST;ValueData:{app}\ipmsg.exe;Flags: uninsdeletevalue

由于使用的标志位是uninsdeletevalue,所以卸载软件将会自动删除该值,如果使用uninsdeletekey的话,该键下的其他值都会被删除,这不是一个很好的方法,除非你确定使用的是自己的专用键,否则不推荐使用。

  1. 完成安装后执行某些程序

测试下面代码生成的打包文件,运行到最后出现finish之前,将会等待run段下的程序(.exe文件)执行完毕后方可继续运行。

[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="C:\Users\ou\Desktop\新建文件夹 (3)\新建文件夹"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=yes[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";[run]Filename: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe";
  1. Pascal脚本(1)
[Code]

在安装程序初始化时调用,返回False 将中断安装,True则继续安装,测试代码如下:

function InitializeSetup(): Boolean;beginResult := MsgBox('安装程序正在初始化,你确定要安装吗?', mbConfirmation, MB_YESNO) = idYes;if Result = False thenMsgBox('你放弃了安装,程序直接退出', mbInformation, MB_OK);end;

该过程提供用户完成预安装和安装之后的任务,更多的是提供了安装过程中的状态。参数CurStep=ssInstall是在程序实际安装前(所有的路径等都配置好之后准备写入文件钱),CurStep=ssPostInstall是实际安装完成后,而CurStep=ssDone是在一次成功的安装完成后、安装程序终止前(即点击finish按钮后执行)。测试代码如下:

procedure CurStepChanged(CurStep: TSetupStep);beginif CurStep=ssinstall thenMsgBox('准备写入文件了', mbInformation, MB_OK);if CurStep=ssPostinstall thenMsgBox('文件复制完成', mbInformation, MB_OK);if CurStep=ssDone thenMsgBox('软件成功安装', mbInformation, MB_OK);end;

当用户单击下一步按钮时调用。如果返回True,向导将移到下一页;如果返回False,它仍保留在当前页。测试代码如下

function NextButtonClick(CurPageID: Integer): Boolean;beginResult := MsgBox('到下一页去吗?', mbConfirmation, MB_YESNO) = idYes;end;

  1. Pascal脚本(2)

自动显示密码页并调用CheckPassword检查密码。返回True 表示接受密码,返回False拒绝。测试代码如下:

function CheckPassword(Password: String): Boolean;
begin
if Password='castor' then
result:=true;
end;

如果返回True,安装程序在安装结束时提示用户重启系统,False则不提示。测试代码如

function NeedRestart(): Boolean;
begin
result:=True;
end;

在Ready to Install页面变为活动页的时候自动调用该函数,该函数返回一段文本,该文本显示于Ready to Install页面中的设置备注中

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoComponentsInfo, MemoTasksInfo: String): String;
var
res: String;
begin
res:='UpdateReadyMemo Function is here'+NewLine+'This is the Second Line';
res:=res+Space+'And with Six Spaces';
res:=res+NewLine+'MemoUserInfoInfo'+MemoUserInfoInfo;
res:=res+NewLine+'MemoDirInfo'+MemoDirInfo;
res:=res+NewLine+'MemoTypeInfo'+MemoTypeInfo;
res:=res+NewLine+'MemoComponentsInfo'+MemoComponentsInfo;
res:=res+NewLine+'MemoComponentsInfo'+MemoComponentsInfo;
res:=res+NewLine+'MemoTasksInfo'+MemoTasksInfo;
Result:=res;
end;

该函数将在用户信息向导页中自动出现一个序列号对象 (前提是[Setup]段中使用UserInfoPage=yes)

function CheckSerial(Serial: String): Boolean;
begin
if Serial='ABCDEF-1234567890' then
Result:=True;
end;

  1. 替换安装程序和卸载程序的图标

安装文件图标 Setup段

SetupIconFile=jiong.ico

安装和卸载图标不一样

[code]//插件函数用法//参数:句柄(插件错误对话框的父句柄), exe文件完整路径名称, (exe文件中要替换的)图标资源名称,图标文件的完整路径名称, (exe中要替换的图标资源所在)语系//返回值:成功 = Tr, 失败 = Falsefunction UpdateIcon(const hWnd: Integer; const exeFileName, exeIcon, IcoFileName: String; wlangID: DWORD): Boolean;external 'UpdateIcon@files:UpdateIcon.dll stdcall';//替换卸载程序的图标function UpdateUninstIcon(const IcoFileName: String): Boolean;begin//要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标,其它参数类似!Result:= UpdateIcon(MainForm.Handle, '', '', IcoFileName, 0);//替换卸载图标end;procedure CurStepChanged(CurStep: TSetupStep);varsIcon: String;begin//注意:替换卸载程序的图标,必须是在卸载程序生成之前!//安装图标与卸载图标的格式与大小一致,否则可能会导致卸载程序出错!if CurStep=ssInstall thenbeginsIcon:= ExpandConstant('{tmp}\uninstall.ico'); //定义卸载图标ExtractTemporaryFile(ExtractFileName(sIcon)); //释放卸载图标//要替换图标的exe文件路径名称留空,则插件会自动替换掉Inno卸载程序的图标!UpdateUninstIcon(sIcon);//替换卸载图标end;end;
  1. Inno Setup类参考

下面的程序将会创建一个最简单的自定义页面,并显示在欢迎页面后面:

[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="C:\Users\ou\Desktop\新建文件夹 (3)\新建文件夹"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=yesUserInfoPage=yes[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";[code]procedure InitializeWizard();beginCreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');end;
  1. Inno Setup类参考(2)

如何在自定义页面上添加按钮


[code]varmyPage:TwizardPage;myBtn:TButton;procedure InitializeWizard();beginmyPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');myBtn:=TButton.Create(nil);myBtn.Parent:=myPage.Surface;end;
varmyPage:TwizardPage;myBtn:TButton;myFont:TFont;procedure ClickmyBtn(Sender: TObject);beginMsgBox('你点击了按钮~~', MBInformation, MB_OK);end;procedure InitializeWizard();beginmyPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');myBtn:=TButton.Create(myPage);myBtn.Parent:=myPage.Surface;myBtn.Caption:='点我~';myBtn.Default:=True;myFont:=TFont.Create();myFont.Size:=16;myFont.Style:=[fsBold];myFont.Style:=myFont.Style+[fsItalic];(*或者使用myFont.Style:=[fsBold,fsItalic];*)myBtn.Font:=myFont;myBtn.Width:=300;myBtn.Height:=100;myBtn.OnClick:=@ClickmyBtn;end;
  1. Inno Setup类参考(3)

标签(Label)

[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="C:\Users\ou\Desktop\新建文件夹 (3)\新建文件夹"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=yesUserInfoPage=yes[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";[code]varmyPage:TwizardPage;myBtn:TButton;myLbl:TLabel;procedure ClickmyBtn(Sender: TObject);beginmyLbl.Caption:='你点击了按钮~';myLbl.Color:=clRed;end;procedure InitializeWizard();beginmyPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');myBtn:=TButton.Create(myPage);myBtn.Parent:=myPage.Surface;myBtn.Caption:='点我~';myBtn.OnClick:=@ClickmyBtn;myLbl:=TLabel.Create(myPage);myLbl.Parent:=myPage.Surface;myLbl.Top:=myBtn.Top+100;myLbl.Caption:='我是标签~';end;

双击和单击

[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="C:\Users\ou\Desktop\新建文件夹 (3)\新建文件夹"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=yesUserInfoPage=yes[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";[code]varmyPage:TwizardPage;myBtn:TButton;myLbl:TLabel;procedure ClickmyBtn(Sender: TObject);beginmyLbl.Caption:='你点击了按钮~';myLbl.Color:=clRed;end;procedure ClickMyLbl(Sender: TObject);beginMsgBox('你单击了标签', MBInformation, MB_OK);end;procedure DbClickMyLbl(Sender: TObject);beginMsgBox('你双击了标签', MBInformation, MB_OK);end;procedure InitializeWizard();beginmyPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');myBtn:=TButton.Create(myPage);myBtn.Parent:=myPage.Surface;myBtn.Caption:='点我~';//myBtn.OnClick:=@ClickmyBtn;myLbl:=TLabel.Create(myPage);myLbl.Parent:=myPage.Surface;myLbl.Top:=myBtn.Top+50;myLbl.Caption:='我是标签~';myLbl.OnDblClick:=@DbClickMyLbl;//myLbl.OnClick:=@ClickMyLbl;end;
  1. Inno Setup类参考(4)

文本框,是典型的窗口可视化组件,既可以用来输入文本,也可以用来显示文本

[code]varmyPage:TwizardPage;myBtn:TButton;ed1,ed2,ed3:TEdit;procedure ClickmyBtn(Sender: TObject);begined3.Text:=ed1.Text+' '+ed2.Text;end;procedure InitializeWizard();beginmyPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');myBtn:=TButton.Create(myPage);myBtn.Parent:=myPage.Surface;myBtn.Caption:='点我~';myBtn.OnClick:=@ClickmyBtn;ed1:=TEdit.Create(myPage);ed1.Parent:=myPage.Surface;ed1.Top:=myBtn.Top+30;ed1.Width:=myBtn.Width;ed2:=TEdit.Create(myPage);ed2.Parent:=myPage.Surface;ed2.Top:=ed1.Top+30;ed2.Width:=myBtn.Width;ed3:=TEdit.Create(myPage);ed3.Parent:=myPage.Surface;ed3.Top:=ed2.Top+30;ed3.Width:=myBtn.Width;    end;
  1. Inno Setup类参考(5)

单选按钮

varmyPage:TwizardPage;radio1,radio2:TRadioButton;lbl:TLabel;font:TFont;{radio1的事件响应过程}procedure ClickRadio1(Sender: TObject);beginlbl.Font.Color:=clRed;end;{radio2的事件响应过程}procedure ClickRadio2(Sender: TObject);beginlbl.Font.Color:=clBlue;end;procedure InitializeWizard();beginmyPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');lbl:=TLabel.Create(myPage);lbl.Parent:=myPage.Surface;lbl.Caption:='改变单选按钮的选项,我就会变色';radio1:=TRadioButton.Create(myPage);radio1.Parent:=myPage.Surface;radio1.Caption:='红色';radio1.Top:=lbl.Top+20;font:=TFont.Create();font.Color:=clRed;radio1.Font:=font;radio1.OnClick:=@ClickRadio1;radio2:=TRadioButton.Create(myPage);radio2.Parent:=myPage.Surface;radio2.Caption:='蓝色';radio2.Top:=radio1.Top+20;font.Color:=clBlue;radio2.Font:=font;radio2.OnClick:=@ClickRadio2;end;

存储框

varmyPage:TwizardPage;radio1,redio2:TRadioButton;mm:TMemo;
procedure InitializeWizard();beginmyPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');mm:=TMemo.Create(myPage);mm.Parent:=myPage.Surface;mm.Text:='存储框测试';mm.Lines.Add('这是新的一行');mm.Lines.Insert(0,'我在最前面');mm.Lines.Add('请删除我,第四行');mm.Lines.Delete(3);{行号从0排起,插入到前面}mm.WordWrap:=True;{自动换行}mm.WantTabs:=True;{接受Tab键}mm.WantReturns:=True;{换行}mm.ScrollBars:=ssVertical;{滚动条}
end;
  1. Inno Setup类参考(7)

复选框(CheckBox)用于多个并不互斥的几个选项中作出一个或者多选择,例如字体可以有粗体、斜体和下划线,这三种状态可以任意组合,像这样的选项可以采用复选框实现。

[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="C:\Users\ou\Desktop\新建文件夹 (3)\新建文件夹"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=yesUserInfoPage=yes[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";[code]
[code]varmyPage:TWizardPage;lbl:TLabel;chk1,chk2,chk3:TCheckBox;procedure ClickCHK1(Sender:TObject);beginif chk1.Checked thenlbl.Font.Style:=lbl.Font.Style+[fsBold]elselbl.Font.Style:=lbl.Font.Style-[fsBold];end;procedure ClickCHK2(Sender:TObject);beginif chk2.Checked thenlbl.Font.Style:=lbl.Font.Style+[fsItalic]elselbl.Font.Style:=lbl.Font.Style-[fsItalic];end;procedure ClickCHK3(Sender:TObject);beginif chk3.Checked thenlbl.Font.Style:=lbl.Font.Style+[fsUnderline]elselbl.Font.Style:=lbl.Font.Style-[fsUnderline];end;procedure InitializeWizard();beginmyPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');lbl:=TLabel.Create(myPage);lbl.Parent:=myPage.Surface;lbl.Caption:='请选择复选框,并注意文字的变化';chk1:=TCheckBox.Create(myPage);chk1.Parent:=myPage.Surface;chk1.Caption:='粗体';chk1.top:=lbl.Top+20;chk1.OnClick:=@ClickCHK1;chk2:=TCheckBox.Create(myPage);chk2.Parent:=myPage.Surface;chk2.Caption:='斜体';chk2.top:=chk1.Top+20;chk2.OnClick:=@ClickCHK2;chk3:=TCheckBox.Create(myPage);chk3.Parent:=myPage.Surface;chk3.Caption:='下划线';chk3.top:=chk2.Top+20;chk3.OnClick:=@ClickCHK3;end;
  1. Inno Setup类参考(8)

列表框(ListBox)是Windows应用程序中重要的输入手段,其中包括多个选项用户可以从其中选择一个或者多个,程序根据用户的选择做出相应的处理,列表框在外观上和存储框类似,但是行为却有很大的不同,列表框中项一般是预先给定的,而存储框则可以让用户进行输入,并且列表框中的项被选择之后也会触发事件。

[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="C:\Users\ou\Desktop\新建文件夹 (3)\新建文件夹"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=yesUserInfoPage=yes[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";[code]varmyPage:TWizardPage;list:TListBox;lbl:TLabel;procedure ClickListBox(Sender:TObject);beginlbl.Caption:='你选择的城市是:'+list.Items.Strings[list.ItemIndex]end;procedure InitializeWizard();beginmyPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');list:=TListBox.Create(myPage);list.Parent:=myPage.Surface;list.Items.Add('北京');list.Items.Add('上海');list.Items.Add('香港');list.Items.Add('武汉');list.Items.Add('广州');list.OnClick:=@ClickListBox;lbl:=TLabel.Create(myPage);lbl.Parent:=myPage.Surface;lbl.Top:=list.Top+list.Height+10;end;
  1. 个性化 Inno Setup 协议页面

[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="C:\Users\ou\Desktop\新建文件夹 (3)\新建文件夹"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=yes//自定义许可协议
LicenseFile=C:\Users\ou\Desktop\新建文件夹 (3)\source\新建文本文档.txt[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";[Messages]
SetupWindowTitle=我是顶部的名称[code]procedure InitializeWizard();
begin
WizardForm.LICENSEACCEPTEDRADIO.Checked := true;//默认选择接受协议
//不显示接受协议和不接受协议的radio空间
WizardForm.LICENSEACCEPTEDRADIO.Visible := false;
WizardForm.LicenseNotAcceptedRadio.Visible := false;
end;//在协议页面时更改【下一步】按钮显示的内容为【我接受】
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpLicense
then
WizardForm.NextButton.Caption := '我接受';
end;
  1. Inno Setup 安装前卸载原程序

[Code]
function InitializeSetup(): boolean;
varResultStr: String;ResultCode: Integer;
beginif RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\APP_NAME_is1', 'UninstallString', ResultStr) thenbeginResultStr := RemoveQuotes(ResultStr);Exec(ResultStr, '/silent', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);end;result := true;
end;
  1. 添加管理员权限
  2. 使用dll(1)
[setup];全局设置,本段必须AppName=TestAppVerName=TESTDefaultDirName="C:\Users\ou\Desktop\新建文件夹 (3)\新建文件夹"AppVersion=1.0Compression=lzma2/maxShowLanguageDialog=yesLicenseFile=C:\Users\ou\Desktop\新建文件夹 (3)\source\新建文本文档.txt[files]Source: "C:\Users\ou\Desktop\新建文件夹 (3)\source\Elegoo 3D Print for test.exe"; DestDir: "{app}";[Messages]
SetupWindowTitle=我是顶部的名称[code]var
myPage:TWizardPage;
Button :TNewButton;
Cnt:Integer;
function GetCurrentProcessId(): Integer;
external 'GetCurrentProcessId@C:\Windows\System32\kernel32.dll';procedure ButtonOnClick(Sender: TObject);
beginMsgBox(IntToStr(GetCurrentProcessId()), mbInformation, mb_Ok); end;procedure InitializeWizard();
begin
myPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');
Button := TNewButton.Create(mypage);
Button.Width := ScaleX(75);
Button.Height := ScaleY(23);
Button.Caption := 'TNewButton';
Button.OnClick := @ButtonOnClick;
Button.Parent := mypage.Surface;
end;

Inno Setup入门 (软件打包工具)学习笔记 (26课全)相关推荐

  1. 常用的软件打包工具Inno Setup和AdvancedInstallerPortable

    文章目录 一.Inno Setup 打包工具 二.AdvancedInstallerPortable 打包工具 今天遇到一个问题一个朋友问我有没有什么好用的软件打包工具.我给他说我常用的两个打包软件I ...

  2. Postman接口测试工具学习笔记(一)接口测试概念及Postman入门

    (下文照搬@Storm啊老师博文,留下记录为了方便学习和理解.大家可以去看看原文地址:https://blog.csdn.net/duzilonglove/article/details/786454 ...

  3. 《Angular4从入门到实战》学习笔记

    <Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...

  4. Postman接口测试工具学习笔记(二)Postman进阶实践:获取天气预报实例

    Postman接口测试工具学习笔记(一) 入门及基本概念 https://blog.csdn.net/sevensolo/article/details/87208546 Postman进阶实践:获取 ...

  5. 《软件需求》学习笔记

    为什么80%的码农都做不了架构师?>>>    <软件需求>学习笔记 前几天读了Karl E.Wiegers<软件需求>,书的内容写得非常好.我这里谈谈读了此 ...

  6. 《Java Web开发入门很简单》学习笔记

    <Java Web开发入门很简单>学习笔记 1123 第1章 了解Java Web开发领域 Java Web主要涉及技术包括:HTML.JavaScript.CSS.JSP.Servlet ...

  7. Design Compiler工具学习笔记(7)

    目录 引言 背景知识 多时钟设计 DC 输出文件分析 实际操作 设计源码 综合脚本 综合网表 SDF文件 SDC文件 REPORT文件 引言 本篇继续学习 DC的基本使用.本篇主要学习 DC 综合之后 ...

  8. Design Compiler工具学习笔记(5)

    目录 引言 知识储备 代码风格 DFT 实际操作 引言 本篇继续学习 DC的基本使用.本篇主要学习 DC 工作机理和工作过程 以及简单介绍 DFT. 前文链接: Design Compiler工具学习 ...

  9. Design Compiler工具学习笔记(6)

    目录 引言 知识储备 实际操作 设计源码 仿真源码 VCS执行仿真 DC 综合 TCL编程练习 引言 本篇继续学习 DC的基本使用.本篇主要学习 DC 综合之后的效果分析,重点在时序分析. 前文链接: ...

  10. Inno Setup入门(十五)——Inno Setup类参考(1)

    Inno Setup入门(十五)--Inno Setup类参考(1) nno setup脚本能够支持许多的类,这些类使得安装程序的功能得到很大的加强,通过对这些类的使用,将会创建出许多让人惊奇的安装程 ...

最新文章

  1. 《Adobe Illustrator CC 2014中文版经典教程(彩色版)》—第2课2.6节隐藏和锁定对象...
  2. (LeetCode 21)Merge Two Sorted Lists
  3. 【自动驾驶】9.分布式通信技术之发布订阅,干货满满
  4. Java 序列化Serializable详解(附详细例子)
  5. SQLServer存储过程的返回值 查询分析器/程序
  6. php绑定变量,php动态绑定变量的用法
  7. CentOS7 systemctl tomcat常用配置
  8. 汽车车牌识别系统实现(四)--字符识别+代码实现
  9. 推荐一个Python GUI神器,双手彻底解放!
  10. 7.2图的存储结构(邻接矩阵)
  11. laravel 5.2 Auth用户认证教程
  12. 今天二月二龙抬头:除了理发 各地还有哪些习俗?
  13. (转)JS事件循环和宏任务和微任务
  14. 2021iOS最新面试总结
  15. 7个实用的Python自动化代码,别再重复造轮子了!
  16. 解决IE浏览器打印iframe页面时字体等样式缩小的问题
  17. c语言编译笑脸,C语言快速入门——笑脸绘图程序:窗口实现
  18. 感恩陪伴,链接未来 | Conflux杭州应用开发运营中心成立
  19. 大疆无人机自动避障技术盘点
  20. app渗透之Burp抓取app数据包

热门文章

  1. 【图解例说机器学习】模型选择:偏差与方差 (Bias vs. Variance)
  2. python中show函数的用法_jQuery如何使用动画show()方法
  3. 【STM32】 硬件IIC 驱动SSD1302(0.96 OLED模块) -- 3/4 OLED的命令表 学习
  4. excel 2007数据透视表教程
  5. 个人设计web前端大作业~响应式游戏网站源码(HTML+CSS+Bootstrap)
  6. 安装不文件不完全_【不完全IT】第4期 安卓刷机
  7. 关于负数的右移与无符号右移运算小结
  8. C语言课程设计. 根据学号等信息查询学生成绩
  9. VS2010 编译 SpiderMonkey 1.8.5 静态库版本
  10. 英语口语312之每日二十个英语单词