InnoSetup使用说明.docx
InnoSetup运用说明特别用途的标识行几个(MeSSageS)段的项事实上不是用于在屏幕上显示的,它们是用于在安装程序中指定所运用的字体和字型号的.这些可选项中的每一个都有一个前导下划税字符(*_->起先,谢畚阅DefaUltml文件头部的注驿的运用方法示例。(Registry¾这个段是可选的,他定义了一些注册发J姐用于在史制完文件之后创建在用户的系统中.下面是(Registry)段的-个示例0RegistryRoot:HKCU;Subkey:"SoftwareMyCompany"Flags:UninsdeletekeyifemptyRoot:HKCU;Subkey:"SoftwareMyCompanyMyProgram"Flags:UninsdeletekeyRoot:HK1.M;Subkey:"SoftwareMyCompany"Flags:UninsdeletekeyifemptyRoot:HK1.M;Subkey:"SoftwareMyC0mp3yMyProgram";Flags:UninsdeletekeyRoot:HK1.M;Subkey:"SoftwareMyCompanyMyProgram"VaIueType:string;VaIueName:"InstaIIPath"VaIueData:"(app)"下面列出了支持的参数;Root(必需的)说明:极健,必湎是下列各项之一:HKCR(HKEY_C1.A$ES_ROOT)HKCU(HKEY_CURRENT_USER)HK1.M<HKEY_1.OCA1._MACHINE>HKU(HKEY_USERS)HKCC(HKEY_CURRENTONFG)示例;Root:HKCUSubkey(必需的)说明:子键名称,可以包括常居。示例:Subkey:',SoftwareMyCompayMyProgram”VaIueType说明,键值的数据类型,必需是下列各项之一,nonestringexpandszmuftiszdwordbinary假如指定了none(孰认设置),安装程序将创建一个没有键值的键,在这种状况卜将忽视VaIueName和VaIueData参数.假如指定了String.安装程序将创建一个字符串(REG.SZ)值.假如指定了expand",安装程序将创建一个扩展字符串(REG_EXPAND_$Z依,这种数据类型主要用在WindowsNT上,包林也支持Windows928.假如指定了multi%安装程序将创建一个多行文本(REG_MUIT1.sZ)伯.假如指定了dword.安装程序将创建一个整数REG_DWORO)(ft,假如指定了binary,安装程序将创建一个二进制(REG.BINARY值,示例:VaIueType:stringVaIueName说明:要创建的城值的名称,可以包含常量.找如它是空的,将会写入"玳认"(Default)假中.假如VaIUeTyPe参数被设置为none,该参数将被忽视.示例:VaIueName:"Version"VaIueData说明:雄伯的数据。假如VaIUeTVpe参数是string,expands2或multsz,该多数是个可以包含常量的字符串.假如数据类型是dword,该参数可以是个十进制整数(例如“123D或者是一个十六进制整数(例如假如数招类型是binary,这是一个十六进制字节序列的形式:"OOffI234”,假如数据类型是none,该舂数被忽视。对于一个string,expandsz或者multisz类型的键值,在这个梦数中你可以运用一个特别的叫做olddata)的常量olddata常JN代去的是注册农世值原来的数据.假如你想要添加个字符串到一个己经存在的镀信时olddata常量时很有用的,例如,(。Iddata)mpp.假如该键值并不存在或者不是一个字符串类型,这时(olddata)常某会被睁默地删除.假如刚要被创建的裸伯是multisz类型,但是已经存在的灌值并不足多行文本(例如它是REG.SZ或REG_EXPANo_SZ)类型.这时ddata)常骑也会被静默地删除,反之亦然,对于一个multisz类型的犍值.在这个参数中你可以运用一个特别的叫做(break的常贽来嵌入换行(nulls).示例:VaIueData:"1.0"Flags说明:“标记",这个参数是一个附加的选项集合,可以多个选JS共同运用,运用空格分开多个选项.卜面列出了被支持的选项:Createvalueifdoesntexist当指定了此标记时,只有当相同名称的便值不存在时安装程序才会创建该键(ft.较如数据类型是none,或者同时指定了deletevalue标记将忽视该标记.deletekey当指定了此标记时,假如该项已存在.安装程序会首先尝试去删除它.包括其中的扬值和子键,然后窗如VaIueType不是none的话它将创建一个新的键和键值.deletevalue当指定了此标记时,假如该键值已存在,安装程序会首先尝试删除该键值。然后假如VaIueType不足none,并且该键不存在时它将创建该犍和新的键值.dontcreatekey当指定了此标记时,假如该读不存在于用户的系统中安装程序将不会试图创建该键或任何键值。假如改建不存在将不显示错误消息.典型地该标记同Uninsdeletekey标记结合运用,以便在安装时没有创建该犍时确保在州就期间删除该犍.noeor假如安装程序在创隹溟或键值时无论什么缘由失败不显示锚误消息,preservestringtype该标记只用于VSIueType参数为string或expandsz时.当指定了此标记并且该犍(ft不存在或者已存在的潴值不是字符申类型(REG_SZ或REG_EXPAND_SZ)时,该项将由VaIueType指定的类型创建.骰如该键tf在并且是一个字符串类型.该项招由及预先存在的母值相同的键值类型昔代.Uninsclearvalue当理序被卸载时,将设置该键值的数据为空的字符串类型REG.SZ).该标记不能同Uninsdeletekey标记一起运用.Uninsdeletekey当程序被卸我时,删除整个键,包括其下全都的键慎和子键,对于由Windows自身运用的读来说运用该标记明显不是一个好的办法,你应当将该标记应用到你自己的应用程序犍中.Uninsdeletekeyifempty当程序被卸载时,假如该键下没有其它键依和子键则将其删除,该标记可以结合Uninsdeletevalue标记一起运用。Uninsdeletevalue当程序和驳时删除该键值,该标记可以结合Uninsdeletekeyifempty标记一起运用.留意:对于InnoSetup1.1之前的版本,你可以及none数据类型起运用该标记则将会成为"deletekeyifempty"(如为空则删除该键)功能的标记.这个技巧现在已经不在被支持.你必需运用Uninsdeletekeyifempty标记来实现该功能.示例:Flags:Uninsdeletevalue公共参数Run&(UnInstaIIRun段(Run)段是UJ选的,指定匐息数埴的程序在胜利安装程序以后及显示结束时话框之前被执行“同样(UninstaIIRun段也是可选的,指定做日数届的程序在啊J极程序.的第一步时被执行.除非下面有其它说明.两个段共有相【可的语法,每个程序根据你的脚本端排的依次被执行,当出路(RUnMUninaallRUnl的项时,安装程序将会笄到当前的程序终止之后才处理下一个,当然除非运Hl了nowait标记.这是一个(Run段的示例,Run:,app)INIT.EXE"Parameters:*x"下面列出了支持的参数:(必需的)说明:要被执行的程序,或要被打开的文件/文件夹.假如不是一个.exe或文件,你必需在该项中运用Shellexec标记。该参数可以包含常就,示例::"appINIT.EXE,Parameters说明:程序可选的吩咐行参数,该参数可以包含常地.,示例:Parameters:"x"WorkmgDir说明;程序起始位置的书目.假如没有指定该参数或该参数是空的将不会变更任何特别的书目.该参数可以包含常用,示例:WorkingDir:"(app)'RunOnceId说明:只在(UninstalIRun段里面有效。假如相同的应用程序被安装招过了次,"run"顶将会费发出现在和载记录文件里面.通过将一个字符印赋值给RUnOnCeId,你可以确保一个独特的WninStaHRUn)或在卸载期间只被执行一次.例如.假如在卸驶记录中的“run”中有两个或者更多的带有RunOnceId彝数并被设置为"DeIService”的顶,则只孑jAi终一,个带有一个RunOnceid参数并被设置为"DdService"的项会被执行,其余的将被忽视留意RunOnceId参数是大小写敏感的.示例:RunOnceId:"DeIService"Flags说明:"标记",这个参数是一个附加的选项集合,可以买个选项共同运用,运用空格分开多个选项.下面列出了俄支持的选项;owait报如指定了该标记,将不会等待该项处理被结束运行之前就进行到下一个Run)项.或者结束安装程序.不能结合Waituntilidle标记一起运用.Shellexec物如不是一个可以干脆执行的文件(一个.exe或文件则该标记是必需的.当设跟了该标记时,可以是一个文件夹或者任何己注册的文件类型一一包括.hlpz.doc等等。文件将会被用户系统中的及该文件类型相关联的应用程序打开,就像用户在资源管理器中用鼠标双击该文件一样.当在中运用一个文件夹名称时,建议在后面加上一个反制杠字符(例如"group"),以确保可能有相同名称的程庠不会被执行。同样要留意文件夹只能在Windows9%NT4上被打开因为从那时起运用广个新的资源管理器的外壳.运用Shellexec标记有一个缺点,那就是无法等待该过程结束,因此,它始终就像被指定了nowalt标记一样操作。Skipifdoesntexist假如指定了该标记,Kl不存在安装程序将不会地示锵误消息.它只适用于(Run段.因为卸驶程序从来不显示错误消息在UninstaIIRun项执行失败时°runmaximued亚如指定了该标记.将会在一个最大化的窗口启动程序或文档.runminimized假如指定了该标记,将会在一个最小化的窗口启动程序或文档.Waituntilidle假如指定了该标记,它将料件出到该过程正在等待用户的输入并且没有未决的蜡入时.联而代之的是等待该过程的结束.(该标记诩用WaitForlnputIdieWin32函数J不能结核nowat一起运用.示例:Flags:nowait公共参数(UninstaIIDeIete段该段是可选的.该段是用来定义一些附加的除了那些被安装的成用程序之外的要被卸载程序刷除的文件或书目.运用该段来删除由你的应用程序创建的.INI文件是一个常用的方法。卸我程序在卸领过程的以终步处理这些项。这是一个(UninstaIIDeIetel段的示例:UninstaIIDeIeteType:files;Name:"winMYPROG.INI"下面列出了支持的参数;Type(必需的)说明:指出要被知我程序删除的是什么.必需是下列之-:filesName参数指定的是一个详细的文件的名称,或者是一个带有通配符的文件名。功能上类似于files,但是它还可以匹配书目名称,并且任何名称匹配的书目包括其中全部的文件和子书R都会被刚除,dirifempt当运用它时,Name参数必需是一个书目的名称,但是它不能包括通配符.只有在不包含任何文件和子书目的状况下该书目才能被剧除.示例:Type:filesName(必需的)说明:要被删除的文件或书目的名称。用总:不要试图通过在这里运用通配符去删除app书目下的全部文件,我剧烈建议你不要这样做的绿田他两个.首先.用户通常不会意识到可能还彳r他们放进应用程序书目中的数据文件将要被删除而不会得到警告(例如他们可能却犯应用程序只是为了要将它转移到一个不r可的照动器),出好是将其保留始终到最终用户的要删除时用手工的方法驯除:还有,假如由于用户的失误碰巧将程序安装到了一个错误的书目当中(例如C:WINDOWS)而这时去卸我它势必结果会损失惨笊.再次声明,千万不要这么做!示例:Name:"winMYPROG.NI"公共参数编译潺相关Setup:Btt$有效值:32说明:1.3成本以后已废弃.1.3以前的版本的InnoSetup有个16位的版本,编年器将检查Bits关键字以推断是否运用了正确的编译甥来端许脚本,以后InnoSetUP的更新的版本只有32位的版本可用.你将不再须要设置该关犍字,无论什么时候假如Bits被设式为T6”.编年器行将会失败并提示一个错误常息,(Setup):UseSetup1.dr有效值:yes或no玳认值:yes说明:告知安装程序编译器要创建的安装程序的类型,假如是yes,将把全新的安装程序数据编课成一个单独的SETUP.EXE(假如你情愿也可以重新命名为任何名称).假如是no,将把安装程序数据编译成至少三个文件:SETUP.EXE,SETUP-O和SETUP.1.你想运用no的仅有的理由也许是为了调试的目的。解息:不要在一个运用了多癌盘牛.成(DiSkSPanning=yes)的安装程序中运用UseSetup1.dr=no.当UseSetup1.dr是yes时,安装程序被红制到用户的临时(TEMP)书目并在那里运行,这不会发生在UseSetup1.dr是no的状况下,假如Windows试图去在磁盘上找寻setup.exe文件却不能找到,因为在卷动器中的是一个不同的微盘,所以会产生悟误的结果.Setup:BackCoIocBackColor2有效值:一个值形如Sbbggrr,这里的rr,gg和bb指定了两位的亮度值(以十六进制表示)分别为红色献色和蓝色.或者也可以是下列预定义的颜色名称之一:ClBlack(黑色),ClMaroon(暗红),ClGreen(绿色),cllive(Mt榄绿).ClNavy深被),ClPurpIe(紫色),ClTeaICiSW>»c<3ra(灰色),ClSIIver(浅灰),ClRed(红色,Ci1.ime(浅绿),ClYdIow(黄色),ClBIue(监色),ClFuchsia(紫红.CIAqUa(药绿),ClWhite(白色)。炊认(ft:BackCoIor为clBlue,BackColor2为ClBIack说明:BackColor关潴字自定的醐色被用在安装程序窗口背景渐变色的上面(或左面,假如BackcoIorDirection=Iefttoright).BackColor2指定的颜色被用在下面(或右面)假如BackSolid=yes则BackColor2的设置被忽视。示例:BackcoIor=ClBIueBackColor2=clBlackBackcoIor=SFFOOOOBackColor2=S00Setup:BackCoIorDirection行效(ft:toptobottomfIefttoright默认伯:toptobottom说明:确定了安装程中窗口的背责渐变色的渐变方向,假如BackCoIorDirection是toptobottom,将自上而下绘出,假如是lefttorhtr梢从左到右绘出.(Setup):BackSoIid有效(ft:yes或no默认值:o说明:它确定了安装程序窗口的背景色是运用第一颜色还是渐变色,例如是yes,背景色会是一单一颜色(颜色由BackCoIor指定.忽视BackCoIorZ).SetuplrAppName说明:这个必倦的关梃字指定了你正在安装的应用程庠的标题.不要包含版本号.那样应当运用AppVerName关键字.AppName在安装程序的全部过程始终被显示,位于安装程序屏幕的左上角和向好中。示例:AppName=MyProgram(Setup:AppVerName说明:这个必需的关键字的值应当和APPName的值相同(或相像,但是它还应当包含程庠的版本号.示例:AppVerName=MyProgramversion3.0Setup):Appld默认值:假如没有指定Appld或者它是空值,编译渊招会把AppName的值作为Appld来运用.说明:Appld的值是被存储在卸载记录文件(Unins?.dat)里面的,以便陆后的安装程序检查后确定是否可以被添加到一个特定的已存在的卸载记录.安装程序只有在已存在的和新记录中的Appld和当前的安装程序的Appld相同是才能添加到却载记录。举一个实际的例子,比方说你方两个安装程序,一个叫做£我的程序而另外-个叫做C我的程序1.1升媛版机要想把我的程序1.1升级版,添加到C我的程序的卸载记录中,你应当设置两个安装程序的Appld为相同的团Appld还确定了卸栽注册表键的实际名称,被InnoSetup在其末尾附加上"Sf(因此,假如Appld½,'MyProgranT.那么这个犍将会被命名为"MyProgram_isl").InnoSetup的早于1.3的版本的键的名称是基于AppVerName的值的,无论什么时候Appld都不会被显示出来,因此你要求特别盼讳的学觉很轻松.示例:AppId=MyProgramSetup):AppMutex说明:毅如用户要为当前的应用程序升级为新的版本.然而当前的应用程序正在运行,该关梃字就是用来防止这类事情的发生的,而且它也可以防止用户和我正在运行的应用程序.它指定了一个或多个同名互斥体的名称多个互斥体用逗号隔开),安装程序和卸软程序将会在启动时检交,假如存在,安装程序/卸栽程序将显示如卜的信息:I安装程序或卸载程序)检测到应用程序)现在正在运行。请马上关闭它的全部实例,然后单机'确定'接着或拧'取粉退出.”假如你要运用这个关键字就必需在你的应用程序中以该关键字指定的名称添加,个同名的互斥体。例如在DeIPhi和C中创建如下显示的同名互斥体.该代码应当在桢用程序启动是被执行.Delphi:CreateMutex(nil.False,'MyProgramsMutexName');C:CreateMutex(NU1.1.,FA1.SE,"MyProgramsMutexName*);并不是必意在应用程序被结束之前显示的箱致同名互斥体对象.系统会自动完成此功能,也不举荐你这样做,因为志向状态下同名互斥体时象必需存在直到进程被完全终止,留意在WindowsF同名互斥体是大小写做礴的。要想获得有关同幺互斥体的更多信息请参阅MSSDK帮助的CreateMUteX主跑.示例:AppMutex=MyProgramsMutexNameSetup:AppCopyrlght说明:可选的,它只跑用来在安奘程序屏悠的右下角显示一个版权消息.示例:AppcopYright=CopyrIght?1997MyCompany,Inc.(Setup):AppPubIisher,AppPubIisherUR1.AppSupportUR1.AppUpdatesUR1.AppVersion说明;全部这叫关键字都是用来在Windows20的限制面板“添加/州除程铲的“支持”对话框中彬示一些侑息.这些设置是可选的,并且在早期的WindoWS版本中是没有作用的.示例:AppPubIisher=MyCompany,Inc.AppPubIisherUR1.=AppVersion-1.S(Setup:DefauItDirName说明:这姑个必制的关键字,该值是默认的书目幺称,用于“选择书目页”向导,通常它有个书目常量前级。网如USePreViOUsAPPDir是yes(景认值)并I1.安装程序发觉已经安装了一个相同应用程序的早期版本,它将用从前选择的书目代称默认的书目名称.脚本苞例分析:先来省石段用INNoSETUP褥本向导创建的基木脚本的Setup)段:SetupAppName=Premiere6.5汉化补J.(程序名称)AppVerName=PremiGre6.5汉化补丁(程序名称+版本)APPPUbliSher浩子工作室Y开发单位或作者)APPPUbiSherUR1.-(开发单位或作者网址)APPSUPPonUR1.=(技术服务网址)APPUPdateSUR1.(更新升级网址)DefaultDirNam=pf)AdobePrmiere6.5”(数认安装路径.pf就是Trogramfiles"文件夹)DefauItGroupName=Premiere6.5汉化补一(默认添加在起先菜单中的项H名称)AllowNolcons=ys(创建快捷方式图标)1.icense汉匕许可文件.txt(显示许可协议)InfoBefore汉化/汉化说9.txt(显示软件说明)OUtPUtDir=成品-安装程序存放位置)OuiputBase6.5汉化补丁T安装程序名树SetupconFile->5t.i(安装程序图标)Conipression=Izma(压缩器:1.Zma)SolidcOmPreSSiOn=yes(压缩方式:一次性压缩)括号里内容是笔者添加的注称,我想大家应当能就理解,不过,作为汉化补丁,一履不须要创建起先菜单项F1.不须要创建快捷方式图标,不须要卸载功能,而要求具有自动找寻原程序安装位置的功能.这样可使补丁安装更便利快捷,因此作了如下修改:(1)去掠以下项目:DefauItGroupName=Premiere6.5汉化补一(默认添加在起先菜单中的项H名称)AllowNolcons=ys(创建快捷方式图标)(2)增加以下项目:DiSabIeDirPage=yes"(不用指定安装路径)DiSablePrOgramGrOUPPage=yes(不要添加起先菜单项Il)DirxistsWarning-no(不提示文件夹已存在)UninstaIIabIe=HO(不要知我程序)(3)修改以下项比原来的:DefaultDirName=(Pf)ZAdobeyPremiere6.5默认安装路径,pf就是"Programfiles”文件夹)关键问题是,这个路径是死的,一只你在安装Premiere6.5时更改了安装路径,比如有些人再爱把大程序安装到D盘.这么一来.原路径就无效了.结果您还得手动指定正确的路径,这样的安装程序就显得太“笨”了.那么,如何让补丁程序自动换得原程序的实际安笠路径呢?回答是;利用注册衣。大多数应用程序安装后都会向注册表的特定位词写入安装和卸载信息.因此,只要让安装程序提取这些信刖并转位自己的安装路径,就可实现自动定位功能.MnoSlup早就支持这个功能了,现在,我们把Premiere6.5的注册表信忠告知它就行了,请看修改后的:DefaUitDirName=reg:HK1.MSOFTWAREMIcrosofVWindOWSjCUrrentVerSiOnJUninStaMAdobePremiere6.5,InStalI1.OCaHOn(从注册友读取Premiere6.5的实际安装路径)接蓿来看看施本脚本的Files段,前面讲过,这段是用来定义要打包到安装程序里的文件的,因此,妾条清晰这几个名词:Source:文件的存放位置(来源)DestDk文件婺安装到什么地方(目标)Flags:一对文件的附加处理参数(标示)下面来行看详细内容:FilesSource:"DyiX<t7Preminfo.dll,:DestDir:"(app"Flags:ignoreversionSource:"D:/汉化/上程序产':DestDir:"app)"Flags:ignoreversionrecursesubdirsCreateallsubdirsSource:"W汉匕插件/*":DeStDir:'app":Flags:ignoreversionrecursesubdirsCreateallsubdirs生词注择:app这是个常发,代我程序安装路径,只要你在Sel响段中的DefaultDirName项中进行了设定,其他地方就可以用它来代替,可能有人会问,常最是什么?通俗地说就是同定词汇,它们用简洁的符号分别代表操作系统中的一些同定书目,使脚本简洁明白.详细内容可参在InnOSeIUP的帮助文本里的相关说明.Ignoreversion不理睬文件的版本向甥,Recursesubdirs-把主义件夹和子文件夹一块儿打包(一锅端)。Createallsubdirs-安装时创建相应的子文件夹.对Files段的修改:许多汉化补丁都是干脆用汉化过的文件去称换原文件.很少在原程序书目里创建新的文件夹,因此可以去掠Flags标示中的Createallsubdirs,在安装的时候执行某个可执行文件FilesSoUrCe:"你要执行的文件名"DestDir:"app'Flags:ignoreversion(Ieleteaftefinstall.Run:"app你要执行的文件名:DeSCriPtion:"Setup":Flags:SkipifsilentShellexec附:InnoSetup的安装脚本包含的主要段落:Setup段:安装和卸战程序的全局设置,如作者信息、安装行目、压缩方式、是否和我等。Types段:定义安装组件的类型,如"完全安奘"、最小安奘”、选择安装Components段:定义可供选择安奘的全部组件(Tasks段:定义安装期间全部由用户定制的任务.Dire段:定义用户想额外创建的书目.(Files段:定义要打包到安奘程序里的文件.(Icons段:定义要创建在起先菜单、史面或任务栏等位置的快捷方式和图标。INI段:定义向用户系统中JM文件中添加的新条目。(InstaIlDelete段:定义要在安装之前删除的文件或文件夹.(1.anguages段:定义安装程序中可运用的语言(适用于多国语言版.Registry段:定义安装过程中要读取、新建或删除的注册衣项“Run段:定义要在安装结束时运行的程序.UninstalIDelete段:定义妾在卸我时册除的其他丈件或文件夹,UninstaIIRun段;定义要在起先卸载前运行的程芹获得安装路径:(Code)varStrPth:string;StrPth:=EpandConstant('a');