介绍
大多数应用程序都附带一个安装程序,它将所需的文件复制到正确的文件夹中,创建注册表项,并提供卸载例程以(希望)从计算机中彻底删除应用程序. 有多种解决方案可以为自主开发的应用程序配备安装程序。除了Install Shield或Wise等商业产品外,还有开源安装工具Nullsoft Scriptable Install System (NSIS)。在本教程中,我将展示使用 NSIS 创建安装程序的一些简单步骤
在第一部分中,将介绍一些基础知识,然后我们创建了第一个真正的安装程序。第二部分涵盖卸载主题和安装程序的其他对话框。在第三部分中,将为安装人员提供了更现代的外观
下载与安装
NSIS 可以从 NSIS官方 下载。如果你感觉全英文界面不适应或者不符合你的操作习惯,也可以在 我的博客 中下载简体中文版本! 然后启动下载的文件,它会安装 NSIS。一般情况下采用默认值完成安装即可。
基础与入门
NSIS 创建一个安装文件,其中包含所有要安装的文件和安装脚本。为此,您必须创建一个描述安装步骤的 NSIS 脚本。 NSIS 脚本是一个普通的文本文件,可以使用任何文本编辑器进行编辑。由于 NSIS 会在错误消息中标定受影响的代码行,因此使用可以显示行号的文本编辑器是必要的。
NSIS wiki有 专门针对 NSIS 的编辑器列表。我在本教程中 使用 简体中文版HM NISEdit
NSIS 脚本文件的文件扩展名为 .nsi。为了更好地阅读浏览与维护,NSIS 脚本还可以通过在头文件中存储函数或宏来分为多个文件。头文件文件扩展名叫 .nsh 然后在脚本中使用 !include 命令以集成头文件内容。
行注释以分号“;”开头,并在行尾结束。所有命令也在行尾结束。如果一个命令需要跨多行,必须在行尾添加一个反斜杠“\”。
Hello World!
我们创建的第一个“安装程序”脚本是著名的“Hello World”示例。为此,必须在文本编辑器中输入以下文本:
Name "Hello World"
OutFile "helloworld.exe"
Section "Hello World"
MessageBox MB_OK "Hello World!"
SectionEnd
该文本现在保存在文件名“helloworld.nsi”下。然后就可以启动编译器了。直接拖进编译器(如果没有 HM NIS Edit)或通过命令行运行下面的命令:
makensis "Hello World.nsi"
如果脚本能够编译且没有错误,则应该在脚本文件夹中创建一个名为“helloworld.exe”的可执行文件。启动此应用程序后,会出现一个安装程序窗口,上面会出现一个消息框,消息框内包含文本“Hello World!”
NSIS HelloWorld 安装程序
使用命令说明:
Name
设置安装程序的名称。通常,它与应用程序的名称相对应,例如“MyApp”。如果名称包含一个或多个“&”,则必须在第二个参数中指定带有双重“&”的名称,例如:
Name "Foo & Bar" "Foo && Bar"
OutFile
设置输出文件的名称。还可以包含路径,例如:
OutFile "C:\Temp\MyApp.exe"
Section
开始一个新区段。区段也可以是隐藏的、可选的或用于卸载程序。该区段由 SectionEnd 指令关闭。
MessageBox
显示带有指定选项(“显示确定按钮”)和指定文本的消息窗口
第一个“真正的”安装程序
要真正将某些内容写入硬盘并不需要太多步骤:
Name "First Installer"
OutFile "Myapp.exe"
InstallDir $PROGRAMFILES\Myapp
Page directory
Page instfiles
Section ""
SetOutPath $INSTDIR
File C:\Windows\system32\notepad.exe
SectionEnd
我们已经从 HelloWorld 安装程序中了解了 Name 和 OutFile 。InstallDir 设置默认安装路径。使用常量 $PROGRAMFILES 将指向系统已配置的程序文件夹。使用命令 Page 指定安装程序中要显示的页面。在这种情况下,首先显示安装目录查询与设置对话框。
然后是实际的安装对话框,后面将在其中复制文件。 在 Section 内部,使用 SetOutPath 确定并创建安装文件夹。使用File指定要提取到安装文件夹中的文件。
展望
在后面的第二部分教程中,我们将使我们的安装程序也能够卸载程序。此外,我们还将查看一些其他页面,并为用户提供选择安装特定部分的选项。
预计以后在第三部分中,我们将为安装程序配备 ModernUI,使其具有更现代的外观。
标签:脚本,入门教程,NSIS,安装程序,World,安装,Hello From: https://blog.csdn.net/shuijing_0/article/details/139883552