当前位置: 首页 > ds >正文

一. NSIS介绍

概述

最近需要写一个安装程序,比对了一下现有的安装工具,最后选定了NSIS,最主要的原因一是开源、二是灵活。

下面把我的要求简单列举下:

1、需要检查系统环境是否满足要求

2、需要界面友好的安装过程

3、需要一些自定义界面,在安装过程中来获取一些必须的信息

4、需要根据界面的选择来执行或跳过一些安装过程

5、需要操作数据库

6、需要操作IIS

7、需要使用PowerShell命令设置AD/Exchange/Lync

8、需要操作注册表,用于标识安装步骤以用于卸载或回滚的执行

经过调查发现NSIS都能实现,但它有自己的一套脚本语言,需要学习成本,如果有编程基础这个其实不难,下载一个“NSIS用户手册”、一个"NSIS"(脚本编译)、一个“HM NIS Edit”(脚本编辑)一切就可以开始啦!

基本知识

那么首先,我们先看一下“NSIS用户手册”吧,你总得先了解一下NSIS这个东西的基本介绍和脚本的基本结构吧。

我把了解的最重要的东西列举一下,其他涉及到细节或遇到难题就可以随时查询用户手册或者google万能的网络:

1、安装程序的主体脚本文件 .nsi,可以包含一个或多个头文件 .nsh

头文件可以通过把它划分为一个或多个代码块来帮你编排你的脚本,你也可以在头文件里加入功能函数或宏,并且在多个安装程序里包含头文件,这样可以更容易的升级你的程序,并且使你的脚本很容易的让人看懂。

2、一个安装程序的基本结构包含应用程序的基本信息定义、头文件引用、安装程序属性设置、安装程序页面、区段(安装过程脚本)和函数(安装页面创建之前、显示前和离开前的代码)等

应用程序的基本信息定义:产品的名称、版本、发布者、网站等信息;头文件引用:!include ***.nsh;

安装程序属性设置:安装程序语言、安装程序名称、输出安装文件、默认安装目录等信息;

安装程序页面:内建页面(欢迎页面、许可页面、目录选择页面、组件选择页面、安装记录页面、完成页面)、自定义页面;

区段:安装程序执行的实体,每一个 NSIS 安装程序包含一个或多个区段;

函数:最终要的是页面的回调函数(每个内建页面有三个回调函数(预置函数、显示创建函数和离开函数)、自定义的页面仅有两个回调函数(创建函数和离开函数))、

再就是安装的回调函数(.onInit、.onInstFailed、.onInstSuccess等)、还可以有一些自定义的函数;

3、保存值和使用值

可以使用Var命令来声明变量,使用变量来保存值,所有定义的变量都是全局的,即使在区段或函数内定义。所以你可以声明变量、代码中对变量进行各种操作(赋值、比较、字符串操作等,使用变量需要加$),下面一个简单的例子:

Var str1
Var hasValue
Function StrOperStrCpy hasValue False     ; $hasValue = False${If} $hasValue == TrueMessageBox MB_OK "$str1"${EndIf}StrCpy $str1 "Hello,"     ; $str1 = Hello,StrCpy $str1 "$str1World" ; $str1 = Hello,WorldStrCpy hasValue True      ; $hasValue = True${If} $hasValue == TrueMessageBox MB_OK "$str1"${EndIf}
FunctionEnd

 另外一个保存值的方式是放入堆栈中,堆栈都知道是“先进后出”的,最重要的两个命令就是Push和Pop,下面一个简单的例子:

Var str1
Function StackOperPush "Hello"Pop $str1          ; $str1 = HelloPush "$str1 World" Pop $str1          ; $str1 = Hello WorldMessageBox MB_OK "$str1"
FunctionEnd

NSIS脚本有一些内置的变量,如:$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $R0, $R1, $R2, $R3, $R4, $R5, $R6, $R7, $R8, $R9;这些变量可以像用户变量一样使用,但不用声明这些变量;另外还有一些特殊含义的内置变量,如:$INSTDIR、$OUTDIR等。

NSIS脚本还有一些常量,如:$PROGRAMFILES,$DESKTOP,$WINDIR,$STARTMENU,$EXEDIR等等,有需要可以查看帮助文档

4、指令

NSIS脚本的执行是依靠一个个的指令,这些指令包括字符串操作指令、数学操作指令、文件操作指令、注册表读写指令、用户界面指令、流程控制指令等等,具体指令可以随时查看用户手册,另外你还可以通过插件来扩展它的能力,这些插件通常是一个DLL文件,关于插件以后章节会详细说明。

以上,我们通过快速浏览NSIS用户手册,了解了脚本的基本结构和基本语法方面的信息。下面,我们需要搭建NSIS的开发和编译环境。

编译环境

下载了NSIS最新的安装包,根据向导一步步安装即可,安装完成后会在系统目录上有NSIS目录,里面就有用户手册和一些脚本例子,另外就是在脚本文件.nsi点击右键会出来NSIS快捷菜单,如下图所示:

编辑/IDE工具

编译环境都好了,接下来就该说到编辑脚本的工具了,最简单的是用文本文件,其实任何可以编辑文本文件的工具都可以,但一是没有任何格式不好看,再就是对于一个才开始编辑NSIS脚本的新手来说一头雾水,不知从何下手啊,好了,工具来了,下载HM NIS Edit最新版本,这是一个针对NSIS的免费的编辑/集成开发工具,安装后就可以使用啦,我能告诉你它不光让脚本更容易读写,最最打动我的其实是它的新建脚本向导功能,我在无从下手时通过向导生成的脚本省了很多工夫,也通过这些脚本更深刻的理解了脚本的结构和一些语法信息,再就是通过菜单NSIS可以直接编译脚本,脚本编译过程的输出信息会在输出界面显示,错误直接定位,界面如下所示:

好了,基本介绍啰啰嗦嗦这么多,应该有点记忆了吧,下章我们就从制作一个简单的NSIS安装包开始吧!

http://www.xdnf.cn/news/11480.html

相关文章:

  • 初探BFF架构
  • AutoGPT怎么用?一文配置自己的AutoGPT!
  • JavaScript中object对象
  • 私藏的18个黑科技网站,想找什么软件就找什么软件!!!
  • Java里什么是POJO
  • Css---vertical-align 属性的用法与应用
  • 【整理】TAC码是什么?TAC码和IMEI有什么关系?
  • 数据结构-二维数组
  • HTTP代理和SOCKS代理
  • Fortran语言的入门与心得
  • BST(二叉搜索树)
  • finalize方法_finalize()方法详解
  • HLS RTSP RTMP的区别
  • java injection_injection(注入)
  • MySql下载和安装
  • Linux基础知识汇总,收藏
  • 推荐几个精致的web UI框架及常用前端UI框架(1),web开发进阶
  • 各类编程语言的历史以及现状发展情况
  • jquery实现移动端slotmachine抽奖游戏,中奖后并弹出地址填写框
  • 常见CMS系统总结
  • 【图割】最大流最小切割的最直白解读
  • Cadence Allegro如何修改原点位置
  • Win10 + Ubuntu 双系统完美避坑删除 Ubuntu 教程_win10和ubuntu双系统删除ubuntu(1)
  • 使用MFC实现WIN10的气泡提示
  • 显示农历天气时钟小部件下载_安卓最强桌面小部件:Zooper Widget
  • Hadoop之分块、分片与shuffle机制详解
  • 尼采:快乐的知识(上)
  • 与善淘网一起做慈善商店
  • 3D设计必备!5个免高质量的 HDRI 环境贴图网站
  • C语言中钩子函数使用讲解