NSIS安装制作基础教程[初级篇].docx_第1页
NSIS安装制作基础教程[初级篇].docx_第2页
NSIS安装制作基础教程[初级篇].docx_第3页
NSIS安装制作基础教程[初级篇].docx_第4页
NSIS安装制作基础教程[初级篇].docx_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

NSIS安装制作基础教程初级篇, 献给对NSIS有兴趣的初学者NSIS简介:NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System)的缩写,它是一个免费的 Win32 安装、卸载系统,它的特点:脚本简洁高效;系统开销小;当然进行安装、卸载、设置系统设置、解压文件等等更不在话下,几乎可以做所有的事情。更多的功能请阅读蓝色网际的NSIS帮助文档。对于制作NSIS的使用教程,蓝色网际是NSIS方面的专家,她的NSIS帮助文档就是一本NSIS的圣经,而对初学者来说,最头疼的莫过于一大堆看不懂的代码,对他们来说无异于一本天书。缘于此,特草此基础教程,希望NSIS专家们勿见笑,不当之处欢迎批评指正以期完善,也希望给初学者作个铺垫。工具:NIS EditNullsoft Installation System(NSIS)此两款软件都可以到世纪主站上下载到思路:脚本向导修改代码=个性化安装包步骤:I利用向导制作安装包:1.安装上述两款,启动NIS Edit,在“文件”菜单中“新建脚本:向导”=下一步”,如图1:附图2.设置应用程序信息,如软件名称、版本、出版人等,如图2。当然最一个网站可以留空,如果设置了,则安装包会生成一个对应网址的“Internet 快捷方式”。附图3.设置程序选项,如安装包图标、安装程序文件、安装包语言这里选“SimChinese”、用户图形界面及压缩方式等,我们可以选用默认值,也可以点击对应项目的按钮或下拉菜单更改设置,如下图3附图4.设置安装目录及授权信息,如图4后“下一步”:附图5.选定程序文件,即我们要打包的文件,可以使用默认的“Mainsection”,也可以根据需要进行更改或新建组别,如果组比较多时,你也可以设置是否“允许用户选择要安装的组件”,如图5。附图完毕后进行“添加文件”操作,选定我们要打包的文件,如图6,完成自动后返回的图5的界面,执行下一步操作。附图6.设置开始菜单中文件夹名称及快捷方式,这里我们使用默认值,如图7,按“下一步”:附图7.指定安装后要运行的程序,同上用默认值并设置相关运行参数及描述,如果你和我一样懒的话,或不想在安装运行任何程序,则留空即可,如图8:附图8.这步是有关卸载程序的相关信息,如卸载时的提示、卸载的图标等,如图9附图9.至此完成向导,如图10,钩选“保存脚本”、“转换文件路径到相关路径”及“编译脚本”附图提示保存脚本路径并自动编译脚本,我们可以按或F9运行安装程序进行预览,向导产生的安装包效果图如图11所示:附图II修改代码以个性化安装包:10.选择可修改之处:1)软件LOGO如图11A、安装包标题图11B、图11C、图12、图13图11见上楼图12如下附图图13如下附图2)闪屏界面11.修改代码1) 修改软件LOGO:在源代码“ MUI Settings”后面添加下列代码:以下是代码片段:!defineMUI_WELCOMEFINISHPAGE_BITMAPG:temppwr.bmp注释:引号内为位图的路径,位图大小大约为165*298效果图如图14所示附图2)修改安装包标题,在同上位置添加下列代码:以下是代码片段:!defineMUI_WELCOMEPAGE_TITLErnPDF2all5.35d汉化版注释:rn为换行标志效果图上楼如图14所示3)修改图11C中的说明,同上位置添加下列代码:以下是代码片段:!defineMUI_WELCOMEPAGE_TEXTpdf2all是一个转换器的集合,它能转换包括doc2pdf(WordtoPDF),xls2pdf(ExcelSheet到PDF),ppt2pdf(PowerPoint到PDF),mdb2pdf(Access到PDF),ps2pdf(PostScript到PDF),pdf2jpg(PDF到JPEG),pdf2bmp(PDF到BMP),pdf2tiff(PDF到TIFF),pdf2eps(PDF到EPS),pdfMerge(合并PDF文件),pdf2ppt(PDF到PowerPoint)。rnrn软件汉化:高芳銮(Raindy)rnrn$_CLICK效果图如图14所示4)对图12中的修改,在源代码:以下是代码片段:ShowInstDetailsshowShowUnInstDetailsshow后添加:以下是代码片段:BrandingText软件汉化:高芳銮(Raindy)效果图如图15所示附图5)在完成添加“汉化说明”,只要在源代码:以下是代码片段:;Finishpage后添加:以下是代码片段:!defineMUI_FINISHPAGE_SHOWREADME$INSTDIR汉化说明.txt!defineMUI_FINISHPAGE_SHOWREADME_TEXT汉化说明效果所示附图6)闪屏界面,可以在源代码中加入下列代码即可:A、普通效果以下是代码片段:Function.onInitSetOutPath$TEMPFile/oname=spltmp.bmpG:TempNsisressplash.bmpsplash:show2300$TEMPspltmpPop$0FunctionEnd效果图如此软件下载:pdf2all-setup.rarB、渐隐闪屏以下是代码片段:Function.OnInitInitPluginsDirFile/oname=$PLUGINSDIRsplash.bmpG:TempNsisressplash.bmpadvsplash:show1500800600-1$PLUGINSDIRsplashFunctionend7)背景音乐贯穿安装过程以下是代码片段:VarhmciFunction.OnInitInitPluginsDirSetOutPath$PLUGINSDIRFileG:TempNsisresmusic.mp3说明:源MP3的存放路径System:Callmsvfw32.dll:MCIWndCreate(i0,i0,i0x0070,t$PLUGINSDIRmusic.mp3)i.r0SendMessage$00x04650STR:playrepeatSystem:Calluser32.dll:ShowWindow(ir0,i0)StrCpy$hmci$0FunctionendSection;addyourcodesSendMessage$hmci0x001000Sectionend后语:以上仅是NSIS制作安装包最基本的操作,供初学者入门之用,故云“初级篇”。希望不会怡笑大方,更希望蓝MM、陈敏毅老大等NSIS高手的中高级教程:)相关资料下载以Pdf2allV5.35d为例,可直接点击下载全文的Word文档附在附件中NSIS.rar偶以Pdf2allV5.35d为例,制作了安装包制作动画演示可直接点击下载相关文件列表如下:动画演示pdf2all-movie.exe安装包的NSIS脚本代码PDF2all-nsis.nsi.txt成品的安装包pdf2all-setup.exe常见修改的代码code.txtNSIS基础教程CHM版NSIS安装制作基础教程(CHM格式)-特别感谢tracky感谢chenmy老大提供空间:)偶的闪屏图:附图下面摘引一些论坛的讨论,原帖点击进入:dujuan509渐现渐隐的代码:以下是代码片段:Function.OnInitInitPluginsDirFile/oname=$PLUGINSDIRsplash.bmpc:test.bmpadvsplash:show1500800600-1$PLUGINSDIRsplashFunctionend背景音乐(贯穿安装全过程):以下是代码片段:Function.OnInitInitPluginsDirSetOutPath$PLUGINSDIRFilec:a.mp3System:Callmsvfw32.dll:MCIWndCreate(i0,i0,i0x0070,t$PLUGINSDIRa.mp3)i.r0SendMessage$00x04650STR:playrepeatSystem:Calluser32.dll:ShowWindow(ir0,i0)StrCpy$hmci$0FunctionendSection;addyourcodesSendMessage$hmci0x001000Sectionend背景音乐2:以下是代码片段:Section/FunctionSetOutPath$PLUGINSDIRFile$WINDIRMEDIAchimes.wavBgImage:Sound/NOUNLOAD/WAIT$PLUGINSDIRchimes.wavBgImage:Clear/NOUNLOADSectionend/Functionend最后一种方法使用了 bgimage 插件,安装程序执行到该插件时会等待 wav 播放完再继续执行。raindy谢谢dujuan509兄如果闪屏效果渐隐背景音乐全程放在一起那代码该如何修改?偶两者无法兼得望不吝赐教dujuan509以下是代码片段:outfiletest.exeVarhmciFunction.OnInitInitPluginsDirSetOutPath$PLUGINSDIRFilec:a.mp3System:Callmsvfw32.dll:MCIWndCreate(i0,i0,i0x0070,t$PLUGINSDIRa.mp3)i.r0SendMessage$00x04650STR:playrepeatSystem:Calluser32.dll:ShowWindow(ir0,i0)StrCpy$hmci$0File/oname=$PLUGINSDIRsplash.bmpc:test.bmpadvsplash:show1500800600-1$PLUGINSDIRsplashFunctionendSection;addyourcodessleep5000SendMessage$hmci0x001000Sectionendraindy谢谢dujuan509兄已经学会了:)可惜背景音乐只能支持MP3格式如果能支持midi等就好了蓝色网际MIDI 请参考这个 DEMO附件midi.zip蓝色网际推荐一个 NSIS 的快速编辑器 - NotePad2。虽然不是 NSIS 专门编辑器不过有时候比 Venis 方便,因为 Venis 不支持文本块操作,而且 Venis 对语法高亮做得不是很好。NotePad2 的语法高亮是根据后缀名来确定的,只要你打开 NSI 文件不用任何设置就会自动语法高亮。其实 NotePad2 作为记事本替代者也非常不过,界面非常相似,而 NotePad2 功能强大了好多。你可以在/nsis/np2.exe下载我修改的版本,主要补全了 NSIS 语法高亮,原版由于很久没更新 NSIS 的语法高亮代码,所以有一些新增的 NSIS 指令不能高亮显示。并作了一些优化,做要是让它更像记事本贴个图:附图dujuan509引用(zkdpower 2005年01月25日 23时08分)我想问一下各位,如何把安装页面中的“Setup将安装”中的Setup改成别的字你指的是选择安装目录页面的提示文字吧?只需在以下是代码片段:!insertmacroMUI_PAGE_DIRECTORY前面添加一行:以下是代码片段:!defineMUI_DIRECTORYPAGE_TEXT_TOP你需要的文字蓝色网际引用(zjj1988101 2005年01月26日 09时49分)引用(蓝色网际 2005年01月26日 09时03分)用 NSIS 2.03 的吧,那个版本简体语言符合我们的习惯。请教蓝前辈NSIS的闪屏图片的格式支持几种格式?只支持位图吗?可以支持其他图片格式吗?这个插件支持 JPG、GIF附件newadvsplash.zip蓝色网际raindy 有时间的话看看我这个汉化补丁的 NSIS 脚本,然后写一篇教程,嘿嘿,写东西你比较拿手基本上包括了做补丁包含的大部分情况:自动查询原版软件安装目录并包含目录修正原版软件的备份和恢复,以及汉化补丁的卸载对原版进行 MD5 校验把汉化补丁应用到原版软件不同版本注册表的修正,主要是右键菜单数据库的汉化读取、修改、写入注册表二进制类型数据NSIS 做补丁的优点是生成文件比较小,而且还可以包含 N 个版本的补丁附件hb-acdsee7_pub1.nsi.zipraindy引用(水木鱼 2005年01月27日 17时10分)请问题头的图标是怎么加的设置了自定义安装图标就会自动显示的,不需要另外添加,自定义安装图标:以下是代码片段:!defineMUI_ICONG:TempNsisresPDFsetup.ico这一点和INNO不同,INNO中则需要在setup中设置:以下是代码片段:WizardSmallImageFile=G:软件测试尝试汉化安装包PDF2allsm.bmp其他需要个性化的地方,建议阅读一下蓝色网际翻译的NSIS帮助文档zkdpower请问各位如何改这些第一个就是如何把插入的headerimage图片放到右边(默认是在左边)第二个就是把headerimage上面的字改掉谢谢附图dujuan5091、在脚本开头增加一行:以下是代码片段:!defineMUI_HEADERIMAGE2、在 !insertmacro MUI_PAGE_LICENSE c:License.txt前增加两行:以下是代码片段:!defineMUI_PAGE_HEADER_TEXT111!defineMUI_PAGE_HEADER_SUBTEXT222蓝色网际你还是先看看 MUI 文档吧,界面的设置都作了说明/nsis/mui/index.htmlzkdpower请问蓝色网际,在你的MUI 文档中有“MUI_HEADERIMAGE_RIGHT令本应显示于左边的页眉图像显示于右面(当使用 RTL 语言时, 它将会显示于左边而不显示于右边).”这么一段话,请问何为RTL语言呢,本人愚拙,望指点蓝色网际RTL 就是 Right to Left,从右到左书写的语言,大概像阿拉伯这样的语言吧。restoolsvenis function 向导功能在 NISEdit 上完整实现,晚上或明天放出,不过需要人帮忙把向导脚本编写完整,因为写程序时只是拿了4个具代表性的 function 来作为测试,这是这次放出版本实现的功能。要知道 NSIS 的 funciton 有这么多啊。以下是代码片段:; NSIS 函数向导文件; 脚本解释; Textbox(文本框) 如果不写入这项 Texbox 默认使用 参数1(不带引号); 0:(不显示) 1:(不带引号) 2:(带双引号) 3:(多行显示); Checkbox(允许参数按钮) 如果不写入这项 Texbox 默认使用 参数0(必填参数); 0:(必填参数) 1:(可选择) 2:(将来使用); Button(选择参数填充按钮) 如果不写入这项 Button 默认使用 参数0(选择参数); 0:(不显示) 1:(浏览选择文件) 2:(浏览选择目录) 3:(选择参数) 4:(选择排序后的参数) 5:(选择可复合参数); 6:(选择已排序的可复合参数) 7:(可选择目录或文件); 标记: %LABELS% - 用在 Goto 这类函数中的 标记 参数; 函数: %FUNCTIONS% - 用在 Call 这类函数中的调用 参数; 以上两个常用变量是会自动检测 NSIS 脚本里面的已有标记和函数的;例子:;Abort - 函数名字;Help=取消安装,停止执行脚本,并且在状态显示里显示用户信息。 - 在函数向导对话框中旁边的简明帮助;NumArgs=1 - 函数共有几个参数;Arg1=用户信息 - 显示在参数顶上的提示语句;Button1=0 - 该按钮不显示;Checkbox1=0 - 该参数为必填项;Textbox1=2 - 该参数为带双引号的字符串;如果是多行字符例如简明帮助,如果你要强行换行,请用英文的逗号,如果你必须要显示英文的逗号,请用双引号括起整个字符串。;Help=Cancels the install, stops execution of script, and displays user_message in the status display.;AbortHelp=取消安装,停止执行脚本,并且在状态显示里显示用户信息。NumArgs=1Arg1=用户信息Checkbox1=0Button1=0Textbox1=2BringToFrontHelp=使安装程序窗口可见并把它带到其他窗口的最前端。NumArgs=0CreateShortCutHelp=创建一个指向“目标文件”的快捷方式“快捷文件.lnk”,可以带“参数”参数。NumArgs=8Arg1=快捷文件.lnkCheckbox1=0Button1=0Textbox1=2Arg2=目标文件Checkbox2=0Button2=1Textbox2=2Arg3=参数Checkbox3=1Button3=0Textbox3=2Arg4=图标文件Checkbox4=1Button4=1Textbox4=2Arg5=图标索引号Button5=0Checkbox5=1Textbox5=1Arg6=启动选项Button6=3Checkbox6=1Textbox6=1Options6=SW_SHOWNORMAL,SW_SHOWMAXIMIZED,SW_SHOWMINIMIZEDArg7=键盘快捷键Button7=0Checkbox7=1Textbox7=2Arg8=描述Button8=0Checkbox8=1Textbox8=2GotoHelp=如果指定了标记,则跳转到“要跳转的标记:”。NumArgs=1Arg1=要跳转的标记 | +偏移| -偏移| 用户变量(目标)Textbox1=1Checkbox1=0Button1=3Options1=%LABELS%CallHelp=调用“函数名”函数。如果在 Uninstall 区段,Call 仅能调用以“un.”开头的函数名。NumArgs=1Arg1=函数名 | :标记名Button1=3Checkbox1=0Textbox1=1Options1=%LABELS%,%FUNCTIONS%显示效果2.弹出函数编辑窗口:3.确定后,输入,这里一提的是,输入时,会自动根据上一行代码的缩进,自动在输入的函数行前面添加前导空格,以减少自己再输入前面的空格。=ISS2NSI v1.0a2=ISS2NSI is a tool for convert Inno Setup script files into NSIS script files.Usage:=Program:At the command prompt write: iss2nsi issscript.iss nsiscript.nsiif nsiscript.nsi is no specified then the converted script will besaved with the same name of the issscript.iss but with extension .nsi.NIS Edit Plugin:1- Close HM NIS Edit.2- Put hmne_iss2nsi.dll in the plugins directory(Default $PROGRAMFILESHMSoftNIS EditPlugins)3- Start HM NIS Edit.4- You will found a new item in the tools menu called Convert InnoSetup script.NOTE: Before compile the converted script please check it, becausecomplete compatibility is NOT available. I design this tool to convert myInno Setup scripts and is not tested with more complex scripts.The source code is included if you want to contribute to the projectfor make the converted script 100% compatible with the original.Please send my your modifications to Note that this project is a modification to the Inno Setup 3.0.6compiler and modifications to the Inno Setup source files are underthe Inno Setup license (see: srcis-srcis-license.txt).Note: the files in the srcis-src directory are unmodified Inno Setupsource files needed by the Compile.pas unit located in the src directory-hmne_iss2nsi.dll 把这个文件放到 NISEdit 目录下的 Plugins 中就可以使用,没有详细测试,不过如果是针对版本的话, Inno Setup 3.0.6 ,估计应该没问题吧。ISS2NSI.rar虽然版本太低,用来从 ISS 的脚本转向学习 NSIS 应该容易点吧。ISS2NSI 源码下载。没时间去看看它,只是把它编译成了一个DLL。有时间看看它是什么原理。ISS2NSI_Src.rarNISEdit 的增强版本,希望有人来帮帮忙,增加一下函数,否则这个版本也强不到哪里去。把里面的那些文件放入 NISEdit 的目录中,为了区分原版,程序改名为 VNISEdit。两个版本可以同时存在,不过你要把 VNISEdit 设为默认编辑器,才可以默认用它来打开。修正:1.添加一种菜单的皮肤。2.增加 NSIS 函数向导功能。(类似 Venis 中的 function 功能)4.改程序调用帮助时,不要把帮助窗口置顶,因为置顶会令到查看帮助时不能切换会编辑器窗口。最新功能(区段结构分析)左图是VNISEdit解释的,右图是Venis分析的。分析对象(makensis.nsi)全景图:试一下呗,分析速度比 Venis 好很多的。基本上感觉不到视图的闪动。线程实时分析,只要改动代码,视图会立刻作出反应。请问下面那些问题怎样做的,1、怎样控制自定义面的“下一步”按钮的可用与不可用2、怎样为自定义页面上的组件添加Change事件呢3、我在这个网站里下载的foobar汉化增强版的安装文件里看到页面“MUI_PAGE_COMPONENTS”是怎么做到的,就是怎么把那个页面的左边改为能显示描述内容和隐蔽一些文本colonel蓝色网际对于控制下一步按钮来说,有三个阶段分别是:页面初始化之前、页面初始化时、页面要关闭时。不同的阶段对应的插入函数不同。比如要在页面初始化之前禁止下一步按钮,MUI 界面可以这样以下是代码片段:!defineMUI_PAGE_CUSTOMFUNCTION_PREComponentPre!insertmacroMUI_PAGE_COMPONENTSFunctionComponentPreGetDlgItem$0$HWNDPARENT1EnableWindow$00FunctionEndcolonel那“2、怎样为自定义页面上的组件添加Change事件呢”,我自定义了一个配置页面,我想用户在完成配置才可激活“下一步”按钮,这个怎么做的呢蓝色网际需要给控件加上 NOTIFY 的标记。例子在我的签名里有。需要先了解 GetDlgItem 和 EnableWindow 指令的作用。colonel这个问题呢3、我在这个网站里下载的foobar汉化增强版的安装文件里看到页面“MUI_PAGE_COMPONENTS”是怎么做到的,就是怎么把那个页面的左边改为能显示描述内容和隐蔽一些文本怎样使“MUI_PAGE_COMPONENTS”中的树目录只能在点选复选框才被选中呢蓝色网际这个用 Resource Hacker 调整一下控件就行了。默认的 UI 文件是 NSISContribUIsmodern.exe到我的签名里下一个特别版的 makensis.exe。colonel我不想在组件选择页面中用 onMouseOverSection 来显示 描述 ,如果架设函数可以增加的话,我就想到这个 “回调 onMouseDownSection ”我是想通过组件目录里的 OnChange 事件来显示我不懂VC+吖,如果我会的话就可以像MM你那样去改它的代码了蓝色网际特别版的就是这样啊,当你点击组件的时候描述区域才会显示或改变。普通版的只要鼠标移上去就显示了。你没试过吗。colonel哦试到了,原来你是改了onMouseOverSection 回调,对啦,MM你有没有做过 组件的OnChange 事件吗?主要是用在自定义页面上的是用这个吗?Call shell32.dll:SHChangeNotify蓝色网际不知道你说的“组件的 OnChange 事件”是什么意思。是不是当组件选择更改的时候调用的函数呢?如果是的话那直接使用 Function .onSelChange 就行了。wq99各位好:我是新手,我在看function时,没发现参数的传入。可能我的思维方式不对。function Fnam

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论