`
duanwenguo
  • 浏览: 2201 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

用NSIS制作安装程序

阅读更多

最近在公司琢磨NSIS的东西,觉得这个开源小Tools真的非常的神奇,它可以把JAVA源代码制作成WINDOWS安装程序,配合Java Server Wrapper,就可以把我们的产品(Java代码写的)嵌入到Windows服务随机自启动了.
必大家都用过WinAMP 来播放MP3音乐,也都熟悉了WinAMP 的安装界面。它的安装程序小巧玲珑,简单直观。想为你自己编的程序制作一个这样的安装界面吗?完全可以,因为有免费的NSIS。它的全称是Nullsoft Installation System,和著名的WinAMP一样,都是出自Nullsoft公司之手,而且它也是免费的,不存在任何时间限制或功能限制。
NSIS安装程序使用‘MakeNSIS’程序来编译一个 NSIS 脚本(.NSI) 成为一个可执行的安装程序的。

makensis 命令的语法:
Makensis [/LICENSE] [/PAUSE] [/NOCONFIG] [/CMDHELP [command]][/Ddefine ...] [Script.nsi | -]
/LICENSE -显示许可协议页面。
/PAUSE -使 Makensis 在退出前暂停,当从 Windows 直接执行时有用(自动安装的外壳扩展名使用它)。
/NOCONFIG -禁止包含[在makensis.exe 的路径下]nsisconf.nsi。没有此参数,安装程序的默认值从 nsisconf.nsi 设置。查看 NSIS 配置文件。
/CMDHELP -打印基本的命令使用信息(若指定某命令),或全部命令(若未指定命令)。
使用 /D 开关一次或多次将添加符号到全部定义列表。
为脚本名指定一个破折号(-)将告诉 Makensis 使用标准的输入作为来源。
注意 NSIS 开发工具包安装程序可能已经设置了你的电脑,所以你可以在资源管理器里通过简单地右键点击一个 .nsi 文件并选择“编译”来编译它。

.NSI 脚本格式
一个 NSIS 脚本文件(.nsi) 只是一个有一系列命令的文本文件。
其中以 ; 或 # 开始的行是注释行。
非注释行的格式是 'command [parameters]' ,但在一个 ; 或 # 后的任何内容都视为注释。
作为数字的参数,使用十进制(数字)或十六进制(加前缀 0x ,例如0x12345AB),或八进制 (数字开始以 0,没有 x)。
要表示带有空格的字符串,使用引号。引号只有包含参数的特性,(若开始了一个参数)。引号可以是单引号、双引号、向后单引号。
例子:
MessageBox MB_OK "I'll be happy"
MessageBox MB_OK 'And he said to me "Hi there!"'
要延伸一个命令超过多行,在每行的末端使用反斜线符号用于连接到下一行。例如:
MessageBox MB_YESNO|MB_ICONQUESTION
"Remove all files in your NSIS directory? (If you have anything
you created that you want to keep, click No)"
IDNO NoRemoveLabel
若一个名为 "nsisconf.nsi" 的文件位于与 makensis.exe 相同的目录下,它将会被包含任何脚本之前 (除非使用了 /NOCONFIG 命令行参数)。

安装程序属性:
下面的命令调整安装程序的属性。这些属性控制安装程序的外观和功能,包括哪个页面存在于安装程序中,在每个页面的每个部分显示什么文本,安装程序如何命名,安装程序使用什么图标,默认的安装程序路径,输出什么安装程序文件以及更多。
除了 InstallDir,其它属性都不允许使用 $r 和 $n 以外的变量。
OutFile <install.exe>
指定 MakeNSIS 将生成的安装程序文件。这只是 MakeNSIS 制作的文件名称和位置,不影响安装程序的内容。
Name <name>
设置所安装的程序的名称。名称通常简单地使用产品名,像 'MyApp' 或 'CrapSoft MyApp'。
Caption <caption>
设置安装程序显示的标题栏。默认的是 'Name Setup',这里 Name 是由 Name 命令指定的。然而你可以用例如 'MyApp Installer' 或其它内容取代它。
Icon <path_to_icon.ico>
设置安装程序的图标。图标必须包含一个 32x32x16 色的图标资源 (它可以包含其他图标,但它们将被忽略)。
BGGradient [off] | [<top_color> <bottom_color> [<textcolor> | notext]]
指定是否使用梯度填充的背景窗口。若 'off',安装程序将不显示背景窗口。若不指定参数,默认使用蓝色梯度背景。你可以使用top_color 和 bottom_color 来制作一个梯度颜色。
. Top_color 和 bottom_color 用RRGGBB 指定(十六进制方式, 象在 HTML 里一样,只去掉前导符 '#',因为 # 用于表示注释)。'textcolor' 用于指定文本颜色,'notext' 用于关闭大字背景文本。
SilentInstall normal|silent|silentlog
指定是否安装程序将是寂静的。若是 'silent' 或 'silentlog',全部区段被静悄悄地安装,安装程序将没有任何画面显示。(出错时仍将显示 MessageBoxes ,脚本将仍可以显示它要的任何内容)。注意若设置为 'normal' 而用户以带 /S 开关的命令行方式运行,也将表现为 SilentInstall 'silent' 寂静方式。
CRCCheck on|off
指定是否安装程序安装前执行自身的CRC。可用的参数为 'on' 和 'off'。
InstallDir <efault_install_directory>
设置默认的安装路径。到变量区段查看可用在这里的变量
LicenseData <icense_data_file.txt>
指定一个文本文件,用作许可协议。注意文本必须是DOS 文本格式!
ComponentText [<text_goes_here>]
指定在组件列表上方的字符串。它可以是提醒用户实际将安装的内容。若不指定此参数,或者ComponentText 命令被忽略,将不显示组件页面,全部节将被安装。
InstType (/NOCUSTOM | <install_type_name>screen.width/2)this.style.width=screen.width/2;" border=0>
添加一个安装类型到安装类型列表,或者禁止自定义安装类型。最多可以有8种安装类型,每个都可以指定一个安装名称。每个类型都被编号,从1开始。第一个类型是默认的(一般是“典型安装”)。若指定了 /NOCUSTOM 开关,将禁止自定义安装,用户只能从已定制的安装类型中选择一个。
EnabledBitmap <bitmap.bmp>
设置组件页的列表框的可用状态。它必须是一个16色的位图(可以是任意尺寸,但最好是20X20大小。别的尺寸将被自动更改)。
DisabledBitmap <bitmap.bmp>
设置组件页的列表框的禁用状态。它必须是一个16色的位图(可以是任意尺寸,但最好是20X20大小。别的尺寸将被自动更改)。
DirShow show|hide
指定是否用户将看到目录选择页面。注意若指定为 'hide',安装程序将仍旧检查安装路径的合法有效性。若路径无效,将会显示目录选择页面。要完全禁止目录选择页面的显示,指定DirText 不加参数 (当安装程序安装内容到 $SYSDIR 时,这样很有用)。
DirText [<text>]
指定在目录选择区域上方的一个字符串。若未指定此命令或无参数,目录选择页将永不可见,即使DirShow show 被指定了。
InstallColors (/windows | (<foreground> <background>screen.width/2)this.style.width=screen.width/2;" border=0>)
设置安装信息画面的颜色(默认的是 00FF00 000000. 使用RRGGBB (十六进制,象在 HTML里那样,只是去掉前缀 '#',因为 # 用于注释)。注意若只指定了 "/windows" 参数,将使用默认的窗口颜色。
AutoCloseWindow true|false
设置当安装完成后,安装窗口是否自动关闭。可以是'false' 或 'true'。
ShowInstDetails hide|show|nevershow
设置是否显示安装程序的详细内容。可以是'hide' (默认值)以隐藏详细信息,但用户也可以查看。'nevershow'禁止用户查看它们。若设置了SetDetailsView,此参数将不起作用。
UninstallText <text>
指定在反安装程序的首页显示的文本。
UninstallExeName <exename.exe>
指定反安装程序的可执行名称。反安装程序将在安装完毕时创建在 $INSTDIR 。注意要创建一个反安装程序,必须在脚本里创建Uninstall 区段。
UninstallIcon <path_to_icon.ico>
设置反安装程序的图标。图标必须包含一个32x32x16 色的图标资源 (也可以包含其它图标,但它们都将被忽略)。

编译器标记(Compiler flags):
下面的命令更改编译器如何生成代码并压缩资料。这些命令在脚本的任何地方都可用。
SetOverwrite on|off|try|ifnewer
此命令决定是否覆盖任何已有的文件。若是'off', 将不覆盖已有文件,若是'try', 将覆盖可以写的文件,无法写入的文件被跳过。若是 'ifnewer', 将只覆盖旧文件。
SetCompress auto|force|off
决定是否压缩资料。若设置为'auto',若压缩后文件变小,将进行压缩。若为 'force',将始终压缩资料文件。
SetDatablockOptimize on|off
此命令告诉编译器是否做数据块优化。这样的话可能会节约部分空间。
SetDateSave on|off
设置文件日期/时间,决定是否保存文件最后的写入时间和日期,安装后文件的日期就是此日期。

区段(Section):
每个 NSIS 安装程序包含一个或多个区段。通常包括下面三行:
Section [<section_name>]
开始一个新区段。若 section_name 是空的或以一个 – 开始,那么这将是一个必需的区段,用户看不见,也无法禁止它。若区段名称是'Uninstall',它是一个特定的反安装区段。
SectionIn <section_index_list>
此命令指定当前区段在哪个安装类型启用。例如 1258 或 1,2,5,8 或 1-2-5-8 或 1 2 5 8 都可以说明当前区段在1,2,5,8安装类型里起用。
SectionEnd
此命令关闭当前打开的区段。

函数(Functions):
函数类似于区段,它包含一个或更多的指令。它不直接被安装程序调用,而是从区段里用 Call 命令调用。(注意:有部分特殊的 Callback 函数可以被安装程序直接调用)。
函数必须在区段外声明。
以 "." 开始(例如. ".Whatever"screen.width/2)this.style.width=screen.width/2;" border=0> 的函数名通常为 callback 函数保留。
以 "un." 开始的函数名是由反安装程序生成的函数。因此一般的安装区段或函数无法调用它。,反安装区段和反安装函数也无法调用一般函数。
它的一般格式如下:
Function <function_name>
创建并打开名为 function_name 的函数。
FunctionEnd
结束当前打开的函数。

**************************例子makensis.nsi******************************
;定义程序的辅版本
!define VER_MINOR "61"
;定义程序的主版本
!define VER_MAJOR 1
;关闭压缩与数据优化
!ifdef NO_COMPRESSION
SetCompress off
SetDatablockOptimize off
!endif
;关闭数据CRC校验
!ifdef NO_CRC
CRCCheck off
!endif
;字体文件
!ifdef PIG_LATIN
!include piglatin.nsh
!else ifdef CAPS
!include caps.nsh
!endif
;安装程序名
Name "NSIS"
;安装程序标题
Caption "Nullsoft 安装系统 - 安装"
;生成的安装程序名称
OutFile HA_nsis${VER_MAJOR}${VER_MINOR}.exe
;安装程序画面颜色
!ifdef uglyinstaller
BGGradient 000000 308030 FFFFFF
InstallColors FF8080 000000
InstProgressFlags smooth colored
!endif
;许可协议文件标题
LicenseText "在安装软件之前, 你必须先阅读下面的许可协议:"
;许可协议内容
LicenseData 汉化说明.txt
;安装组件标题
ComponentText "现在将安装 Nullsoft 安装系统 v${VER_MAJOR}.${VER_MINOR} 到你的计算机:"
;安装类型
InstType 典型安装
InstType "完整安装 (含源代码)"
;InstType /NOCUSTOM
;InstType /COMPONENTSONLYONCUSTOM
;不自动关闭窗口
AutoCloseWindow false
;显示详细的安装信息
ShowInstDetails show
;显示详细的反安装信息
ShowUninstDetails show
;选择安装目录
DirText "请选择一个安装 NSIS 的目录(或者使用默认目录):"
;覆盖目标目录里已有的文件
SetOverwrite on
;设置数据保存日期
SetDateSave on
;设置UPX压缩数据
!ifdef HAVE_UPX
!packhdr tmp.dat "upxupx --best --compress-icons=1 tmp.dat"
!endif
;设置安装目录
InstallDir $PROGRAMFILESNSIS
;增加安装注册键
InstallDirRegKey HKLM SOFTWARENSIS ""
;必须安装区段
Section "NSIS 发展系统 (必须安装)"
SectionIn 1 2
SetOutPath $INSTDIR
File makensis.exe
File makensis.htm
File license.txt
File 汉化说明.txt
SectionEnd
;推荐安装区段
Section "NSIS 脚本范例 (推荐安装)"
SectionIn 1 2
SetOutPath $INSTDIR
File nsisconf.nsi
File makensis.nsi
File example1.nsi
File example2.nsi
File viewhtml.nsi
File waplugin.nsi
File bigtest.nsi
File uglytest.nsi
File primes.nsi
File piglatin.nsh
File caps.nsh
File upgradedll.nsh
File functions.htm
File bitmap1.bmp
File bitmap2.bmp
File main.ico
File uninst.ico
SectionEnd
;开始菜单和桌面图标区段
Section "开始菜单 + 桌面图标"
SectionIn 1 2
SetOutPath $SMPROGRAMSNSIS
Delete "$SMPROGRAMSNSISNSIS Home Page.lnk"
WriteINIStr "$SMPROGRAMSNSISNSIS 主页.url"
"InternetShortcut" "URL" "http://www.nullsoft.com/free/nsis/"
CreateShortCut "$SMPROGRAMSNSIS卸载 NSIS.lnk"
"$INSTDIRuninst-nsis.exe"
CreateShortCut "$SMPROGRAMSNSISNSIS 使用说明文档.lnk"
"$INSTDIRmakensis.htm"
CreateShortCut "$DESKTOPMakeNSIS.lnk" "$INSTDIRMakensis.exe" '/CD /PAUSE'
SectionEnd
;启动时弹出画面区段
Section "启动屏幕支持"
SectionIn 1 2
SetOutPath $INSTDIR
File splash.exe
File splash.txt
IfFileExists $SMPROGRAMSNSIS 0 NoShortCuts
CreateShortCut "$SMPROGRAMSNSIS启动屏幕帮助.lnk"
"$INSTDIRsplash.txt"
NoShortCuts:
SectionEnd
;“安装成功”函数
Function .onInstSuccess
MessageBox MB_YESNO|MB_ICONQUESTION
"安装已经完成. 现在要查看自述文件吗?"
IDNO NoReadme
ExecShell open '$INSTDIRmakensis.htm'
NoReadme:
FunctionEnd
;反安装标题与反安装程序名
!ifndef NO_UNINST
UninstallText "现在将 NSIS 从你的系统中删除:"
UninstallExeName uninst-nsis.exe
;反安装区段
Section Uninstall
ReadRegStr $1 HKCR ".nsi" ""
StrCmp $1 "NSISFile" 0 NoOwn ; only do this if we own it
ReadRegStr $1 HKCR ".nsi" "backup_val"
StrCmp $1 "" 0 RestoreBackup ; if backup == "" then delete the whole key
DeleteRegKey HKCR ".nsi"
Goto NoOwn
RestoreBackup:
WriteRegStr HKCR ".nsi" "" $1
DeleteRegValue HKCR ".nsi" "backup_val"
NoOwn:
DeleteRegKey HKCR "NSISFile"
DeleteRegKey HKLM "SoftwareMicrosoftWindowsCurrentVersionUninstallNSIS"
DeleteRegKey HKLM SOFTWARENSIS
Delete $SMPROGRAMSNSIS*.lnk
Delete $SMPROGRAMSNSIS*.url
RMDir $SMPROGRAMSNSIS
Delete $DESKTOPMakeNSIS.lnk
Delete $INSTDIR*.*
RMDir /r $INSTDIRSource
RMDir $INSTDIR
; if $INSTDIR was removed, skip these next ones
IfFileExists $INSTDIR 0 Removed
MessageBox MB_YESNO|MB_ICONQUESTION
"删除你的 NSIS 目录中的所有文件吗? (如果你曾经自己
创建过文件, 如果想保存这些文件, 按'否')" IDNO Removed
Delete $INSTDIR*.* ; this would be skipped if the user hits no
RMDir /r $INSTDIR
IfFileExists $INSTDIR 0 Removed
MessageBox MB_OK|MB_ICONEXCLAMATION
"注意: $INSTDIR 目录不能被删除."
Removed:
SectionEnd
!endif

 

1
0
分享到:
评论

相关推荐

    用NSIS制作安装程序安装驱动.rar

    标题中的“用NSIS制作安装程序安装驱动”指的是使用Nullsoft Scriptable Install System(NSIS)这个开源的Windows系统下的安装脚本制作工具,来创建一个能够自动安装硬件驱动的安装程序。NSIS是一个功能强大的...

    用NSIS制作安装程序安装驱动

    在脚本的-Post部分增加安装驱动的命令,如下红色部分(注:在NSIS脚本中在双引号中输入引号的方法是$\",和C语言不同),installdriver后的第一个参数是inf文件的全路径,第二个参数是DeviceID(可以在设备管理器中...

    NSIS安装程序制作工具v3.09增强版.zip

    使用NSIS制作安装程序的流程大致如下: 1. 下载并安装NSIS:首先,你需要从官方网站或提供的下载地址获取NSIS的安装包,按照提示进行安装。 2. 编写脚本:使用文本编辑器创建NSIS脚本文件,如“Setup.nsi”,并定义...

    使用NSIS制作安装文件

    《使用NSIS制作安装文件》 NSIS(Nullsoft Scriptable Install System)是一款开源的Windows平台上的安装包制作工具,以其强大的脚本语言能力和小巧的体积受到开发者的喜爱。本教程将详细介绍如何使用NSIS来制作...

    NSIS安装程序制作程序

    在使用NSIS进行安装程序制作时,开发者通常会按照以下步骤操作: 1. **下载NSIS**:从官方网站或者像pc6下载站这样的资源网站获取NSIS的最新版本,例如NSIS_V2.46_20101210.exe。 2. **安装NSIS**:运行下载的exe...

    NSIS打包工具使用,制作安装包

    NSIS(Nullsoft Scriptable Install System)是一款开源的Windows系统下安装程序制作工具,它提供了安装、卸载、系统设置、文件解压缩等功能。NSIS的脚本语言和通常的编程语言有类似的结构和语法,但它是为安装程序...

    NSIS安装包制作教程详细版

    NSIS制作迅雷安装的脚本 迅雷5.7.2.371 DDR1.5版去广告版源代码说明 NSIS删除安装程序自身 帮助文件中关于静默安装的说明 NSIS实现静默安装的两种方法 nsis的附加任务代码 关于 NSIS 写入注册表的问题 少...

    nsis-3.0程序打包软件.rar

    使用NSIS制作安装程序的基本流程通常包括以下步骤: 1. 下载并安装NSIS:首先,你需要从官方网站或者其他可信源下载NSIS的安装包,并按照向导指示完成安装。 2. 编写安装脚本:NSIS使用一种名为NSIS Script的语言...

    NSIS(Nullsoft 脚本安装系统)安装程序

    NSIS 创建的安装程序可以进行安装、卸载、设置系统设置、解压文件等等。几乎可以做所有事情。因为它基于脚本文件,所以你可以完全控制你的安装程序的每个部分。它的脚本语言支持变量、函数、字串处理,就像是一个...

    NSIS+Duilib自定义安装程序

    在描述中提到的"NSIS+Duilib自定义安装程序",意味着开发者使用NSIS作为安装程序的基础框架,并利用Duilib来设计和实现个性化的安装界面,以提升用户体验。 具体操作步骤通常包括以下几个方面: 1. **环境准备**:...

    NSIS+Duilib 自定义安装程序

    NSIS(Nullsoft Scriptable Install System)是一款流行的开源安装制作系统,它允许开发者使用脚本语言创建Windows平台上的安装程序。NSIS提供了丰富的功能,包括文件复制、注册表操作、设置环境变量等,使得用户...

    NSIS安装包制作教程

    NSIS(Nullsoft Scriptable Install System)是一款流行的开源软件安装制作系统,被广泛用于创建Windows平台的安装程序。本教程将深入探讨如何使用NSIS来创建自己的安装包,旨在帮助初学者快速上手。 首先,我们...

    nsis安装打包软件

    在完成脚本编写后,使用NSIS编译器`makensis.exe`将脚本转换为可执行的安装程序。例如,如果脚本名为`mysetup.nsi`,则在命令行中运行`makensis mysetup.nsi`即可生成`setup.exe`文件。 对于新手来说,"hb-nsis-...

    基于NSIS Modern界面制作的网易云音乐安装包

    NSIS(Nullsoft Scriptable Install System)是一款开源的Windows平台下的安装脚本编译器,它允许开发者创建自定义的安装程序,具有高度可定制性和灵活性。NSIS的Modern界面风格为用户提供了简洁、现代的安装体验,...

    NSIS 制作安装程序指南&代码.zip

    该压缩包里面的*.nsi代码可以正常运行(注意:由于涉密问题,*.nsi所需要的的文档及APP、驱动等没有办法提供);world文档里面的内容可以在网上找到;*.nsi里面有注释,只是提供一下思路。

    d打包工具里面包含了NSIS脚本安装系统.zip及托盘的脚本代码.zip

    这个压缩包“d打包工具里面包含了NSIS脚本安装系统.zip及托盘的脚本代码.zip”显然提供了使用NSIS制作安装程序的相关资源,包括NSIS脚本和可能用于创建系统托盘图标的脚本代码。 首先,NSIS脚本安装系统是基于文本...

    安装程序打包NSIS.zip

    在"安装程序打包NSIS.zip"这个压缩包中,包含了使用NSIS和NSISEdit进行项目安装程序打包的相关资源。 NSISEdit是一个图形化的NSIS脚本编辑器,它提供了一个直观的界面,帮助用户创建、编辑和调试NSIS脚本,而无需...

    nsis轻便安装包制作工具

    安装此版本的NSIS后,用户可以使用其内置的脚本编辑器(如makensis.exe)来编写和编译NSIS脚本,创建自己的安装程序。 总的来说,NSIS轻便安装包制作工具是一个强大的解决方案,适用于那些希望快速、便捷地构建高...

Global site tag (gtag.js) - Google Analytics