AM电脑吧 - Win10精简版系统_Win11精简版_Win7旗舰版

Yes
查看: 8018|回复: 11
收起左侧

Inno Setup入门(一)——(十)

[复制链接]
ampc84

签到天数: 15 天

[LV.4]四枚内存条

id ②號 发表于 2012-01-13 00:04:10
Inno Setup入门(一)——最简单的安装脚本  
一个最简单的安装脚本:
1.最简单的安装文件脚本:

[setup]
AppName=Test
AppVerName=TEST
DefaultDirName="E:TEST"
AppVersion=1.0
[files]
Source: "F:desktopipmsg.exe"; DestDir: "{app}"

编译完成后在脚本文件所在的目录下生成一个Output的文件夹,其中包含了生成好的安装文件:

1280148194081219022.jpg
运行安装文件,一路安装到底,将会安装到在E:TEST下:

1061160662200357030.jpg
除了主安装程序,另外两个文件分别是我们的测试文件和卸载程序。
可见一个傻瓜化的安装文件就这么搞定了。


本文地址: https://www.ampc8.com/thread-5057-1-1.html
上一篇:过年了,发点喜庆一点的壁纸
下一篇:Inno Setup入门(十一)——(二十)
回复

举报

ampc815408

签到: Lazy

id rgjyjmh 发表于 2013-08-30 10:37:23
很好的入门资料,多谢楼主转载,辛苦了。

回复

举报

ampc8224

签到天数: 230 天

[LV.7]七个CPU

id dmqhcx88 发表于 2012-01-13 06:57:35
精品,学习了。
回复

举报

ampc84

签到天数: 15 天

[LV.4]四枚内存条

lz  楼主| ②號 发表于 2012-01-13 00:12:31
Inno Setup入门(十)——操作注册表  
有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过在安装程序中对注册表进行操作的结果。Inno Setup中通过[registry]段实现对注册表的操作。
本段说明:
参数列表:
参数
说明

Root
根键。必须是下列中的一个:
HKCR (HKEY_CLASSES_ROOT)
HKCU (HKEY_CURRENT_USER)
HKLM (HKEY_LOCAL_MACHINE)
HKU (HKEY_USERS)
HKCC (HKEY_CURRENT_CONFIG)

Subkey
子键名,可以包含常量

ValueType
值类型,必须是下列中的一个:
none
string
expandsz
multisz
dword
binary
如果指定了none (默认设置),安装程序将创建一个没有键值的键,在这种情况下,ValueName ValueData 参数将被忽略。

ValueName
要创建的值名,可以包含常量,如果是空白的,将写入到“默认”值

ValueData
值的数据

Permissions
指定登录注册表键ACL (访问控制列表) 的附加权限,该参数只在Windows 2000 或更高版本中有效,可用的参数是full、modify和read

Flags
是额外选项设置。多个选项可以使用空格隔开。支持下面的选项:
createvalueifdoesntexist
deletekey
deletevalue
dontcreatekey
noerror
preservestringtype
uninsclearvalue
uninsdeletekey
uninsdeletekeyifempty
uninsdeletevalue

下面的例子将会使得安装程序在操作系统启动后自动运行。
[setup]
;全局设置,本段必须
AppName=Test
AppVerName=TEST
DefaultDirName="E:TEST"
AppVersion=1.0
Compression=lzma2/max
ShowLanguageDialog=yes
[components]
Name: main; Description:"主程序(必选)";Types:full compact custom;Flags: fixed
Name: data; Description:"数据文件";Types:full
Name: help;Description:"帮助文件";Types:full compact
[files]
Source: "F:desktop        estipmsg.exe"; DestDir: "{app}";Components:main
Source: "F:desktop        estin.dat"; DestDir: "{app}";Components:data
Source: "F:desktop        esthelp.chm"; DestDir: "{app}" ;Components:help
Source: "F:desktop        esteadme.txt"; DestDir: "{app}";components:help;Flags:isreadme
[registry]
;本段处理程序在注册表中的键值
Root:HKLM;Subkey:SOFTWAREMicrosoftWindowsCurrentVersionRun;ValueType: string; ValueName:TEST;ValueData:{app}ipmsg.exe;Flags: uninsdeletevalue
一路Next到底,安装完成后可以检查注册表:
1906430017263003258.jpg
确实添加到注册表中去了,通过金山卫士也证实了这一点:
2245325889222298519.jpg
    由于使用的标志位是uninsdeletevalue,所以卸载软件将会自动删除该值,如果使用uninsdeletekey的话,该键下的其他值都会被删除,这不是一个很好的方法,除非你确定使用的是自己的专用键,否则不推荐使用。

转自Castor博客

回复

举报

ampc84

签到天数: 15 天

[LV.4]四枚内存条

lz  楼主| ②號 发表于 2012-01-13 00:10:43
Inno Setup入门(九)——修改安装过程中的文字显示  

前面说到过可以使用不用的语言文件实现不同的显示方式,方便与国际接轨,事实上即使没有语言文件也可以实现修改。[Messages] 段用于定义安装程序和卸载程序中显示的消息。一般不需要创建 [Messages] 段,因为所有的消息在Inno SetupDefault.isl文件 (或在[Languages] 段指定的语言选项) 中已经包含。但是可以通过覆盖默认的消息,打造自己的消息显示界面。打开Inno Setup目录下的该文件,其中button的定义如下:
; *** Buttons
ButtonBack=< &Back
ButtonNext=&Next >
ButtonInstall=&Install
ButtonOK=OK
ButtonCancel=Cancel
ButtonYes=&Yes
ButtonYesToAll=Yes to &All
ButtonNo=&No
ButtonNoToAll=N&o to All
ButtonFinish=&Finish
ButtonBrowse=&Browse...
ButtonWizardBrowse=B&rowse...
ButtonNewFolder=&Make New Folder
可以在[Messages]段中覆盖修改这些消息。一个例子如下:
[setup]
;全局设置,本段必须
AppName=Test
AppVerName=TEST
DefaultDirName="E:TEST"
AppVersion=1.0
Compression=lzma2/max
ShowLanguageDialog=yes
[components]
Name: main; Description:"主程序(必选)";Types:full compact custom;Flags: fixed
Name: data; Description:"数据文件";Types:full
Name: help;Description:"帮助文件";Types:full compact
[files]
Source: "F:desktop        estipmsg.exe"; DestDir: "{app}";Components:main
Source: "F:desktop        estin.dat"; DestDir: "{app}";Components:data
Source: "F:desktop        esthelp.chm"; DestDir: "{app}" ;Components:help
Source: "F:desktop        esteadme.txt"; DestDir: "{app}";components:help;Flags:isreadme
[Messages]
BeveledLabel=Castor
ButtonNext=继续吧(&F)>
ButtonBack=返回吧(&B)<
ButtonCancel=退出吧(&C)
ButtonInstall=安装吧(&I)!
ButtonFinish=搞定(&X)~~
运行效果如下:
724235115078275718.jpg
BeveledLabel 消息的特殊用途是可以用于指定显示在向导窗口和卸载程序窗口左下角的文本行,如下图中的Castor
724235115078275724.jpg

724235115078275725.jpg

回复

举报

ampc84

签到天数: 15 天

[LV.4]四枚内存条

lz  楼主| ②號 发表于 2012-01-13 00:09:34
Inno Setup入门(八)——有选择性的安装文件  

这主要使用[Components]段实现,一个演示的代码如下:
[setup]
;全局设置,本段必须
AppName=Test
AppVerName=TEST
DefaultDirName="E:TEST"
AppVersion=1.0
Compression=lzma2/max
ShowLanguageDialog=yes
[Components]
Name: main; Description:"主程序(必选)";Types:full compact custom;Flags: fixed
Name: data; Description:"数据文件";Types:full
Name: help;Description:"帮助文件";Types:full
[files]
Source: "F:desktop        estipmsg.exe"; DestDir: "{app}";Components:main
Source: "F:desktop        estin.dat"; DestDir: "{app}";Components:data
Source: "F:desktop        esthelp.chm"; DestDir: "{app}" ;Components:help
Source: "F:desktop        esteadme.txt"; DestDir: "{app}";Flags:isreadme
运行生成的安装包,效果如下:
2726648099397107086.jpg
通过标志位设置为fixed,将确保主程序必定安装,另外,中文包中翻译出现了点错误,呵呵,“清除”写成了“清楚”。

回复

举报

ampc84

签到天数: 15 天

[LV.4]四枚内存条

lz  楼主| ②號 发表于 2012-01-13 00:08:52
Inno Setup入门(七)——提供安装语言选项  
Inno Setup安装目录下有一个Languages的文件夹,该文件夹提供了可供使用的语言,通过在脚本中加入[languages]段,可以实现该项功能,实现代码如下:
[setup]
;全局设置,本段必须
AppName=Test
AppVerName=TEST
DefaultDirName="E:TEST"
AppVersion=1.0
Compression=lzma2/max
ShowLanguageDialog=yes
[languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Name: "cs"; MessagesFile: "compiler:LanguagesChineseSimp.isl"
[files]
Source: "F:desktop        estipmsg.exe"; DestDir: "{app}";
Source: "F:desktop        estin.dat"; DestDir: "{app}"
Source: "F:desktop        esthelp.chm"; DestDir: "{app}"
Source: "F:desktop        esteadme.txt"; DestDir: "{app}";Flags:isreadme
上例中需要提到的是[setup]段中需要加入ShowLanguageDialog=yes,其实不加也是可以的,因为ShowLanguageDialog默认是yes
安装过程中会根据用户的选择采用不同的语言界面:
1318147315937156941.jpg
1807069350484343934.jpg
最后需要说明的是compiler:他提供了编译器所在目录的路径。






回复

举报

ampc84

签到天数: 15 天

[LV.4]四枚内存条

lz  楼主| ②號 发表于 2012-01-13 00:08:10
Inno Setup入门(六)——在程序目录下创建文件夹  
创建文件夹可以使用[dirs]段实现,代码如下:
[setup]
;全局设置,本段必须
AppName=Test
AppVerName=TEST
DefaultDirName="E:TEST"
AppVersion=1.0
[files]
Source: "F:desktop        estipmsg.exe"; DestDir: "{app}";
Source: "F:desktop        esteadme.txt"; DestDir: "{app}";Flags:isreadme
[dirs]
Name:"{app}WorkDir"
安装好之后会在安装目录下创建一个新的文件夹WorkDir
2879770486727994041.jpg
当然这个文件夹是空白的,一般可用来作为初始工作的目录或者保存结果的目录。
另外,上面的这种情况下,如果卸载程序,该文件夹会被如何处理呢?
1.如果文件夹是空白的,该文件夹会被删除。
2.如果文件夹非空,该文件夹会被保留
这是默认的方式,如果需要自己定制,可以使用标志位,合法的标志位如下表:

标志位
说明

deleteafterinstall
告诉安装程序照常创建目录,但当安装完成 (或中断) 后,如果它是空的,则删除它

setntfscompression
允许该文件夹按NTFS方式压缩

uninsalwaysuninstall
告诉卸载程序如果目录是空的,允许删除该目录,这也是默认的方式

uninsneveruninstall
告诉卸载程序不要删除该目录

unsetntfscompression
不允许该文件夹按NTFS方式压缩


回复

举报

ampc84

签到天数: 15 天

[LV.4]四枚内存条

lz  楼主| ②號 发表于 2012-01-13 00:07:23
Inno Setup入门(五)——添加readme文件  

这个实现起来很简单,就是在[files]段中的某个预先作为readme的文件后面添加标志位isreadme
[setup]
;全局设置,本段必须
AppName=Test
AppVerName=TEST
DefaultDirName="E:\TEST"
AppVersion=1.0
[files]
Source: "F:\desktop\test\ipmsg.exe"; DestDir: "{app}";
Source: "F:\desktop\test\readme.txt"; DestDir: "{app}";Flags:isreadme
安装过程最后一步将会有如下一个选项:
可以让用户决定是否查看readme文件。

回复

举报

您需要登录后才可以回帖 登录 | 验证注册

Powered by AMpc8.Com (晋ICP备13003365号ghs 晋公网安备 14090202000112号 |GMT+8, 2024/4/30 07:36 |
快速回复 返回顶部 返回列表