NSIS 安装包实现

工具
  • NIS Edit v2.0.3
  • NSIS v3.03
思路:

脚本向导+修改代码=个性化安装包

  • 步骤:

    1.安装上面两款软件,启动NIS Edit,在“文件”菜单中“新建脚本:向导”->下一步”,如图1:
    图片来自网上

2.设置应用程序信息,如软件名称、版本、出版人等,如图2。如果设置了应用程序网站,则安装包会生成一个对应网址的“Internet 快捷方式”。
这里写图片描述

3.设置程序选项,如安装包图标、安装程序文件、安装包语言[这里选“SimChinese”]、用户图形界面及压缩方式等,选用默认值,也可以点击对应项目的按钮或下拉菜单更改设置,如下图3
这里写图片描述

4.设置安装目录及授权信息,如图4后“下一步”:
这里写图片描述

5.选定程序文件,即我们要打包的文件,可以使用默认的“Mainsection”,也可以根据需要进行更改或新建组别,如果组比较多时,可以设置是否“允许用户选择要安装的组件”,如图5
这里写图片描述

6.完毕后进行“添加文件”操作,选定我们要打包的文件,如图6,完成自动后返回的图5的界面,执行下一步操作。
这里写图片描述
7.设置开始菜单中文件夹名称及快捷方式,这里我们使用默认值,如图7,按“下一步”:
这里写图片描述

8.指定安装后要运行的程序,同上用默认值并设置相关运行参数及描述,不想在安装运行任何程序,则留空即可,如图8
这里写图片描述
9.这步是有关卸载程序的相关信息,如卸载时的提示、卸载的图标等,如图9
这里写图片描述

10.勾选“保存脚本”、“转换文件路径到相关路径”及“编译脚本”,如图10
这里写图片描述

问题解决方案

1.用NSIS做安装程序,在卸载信息提示部分出现乱码
方案一
使用Notepad++编写脚本,编码格式使用ANSI
方案二
编码格式使用UTF-8(有BOM),在脚本最前面加上Unicode true
2.使用相对路径

Var PROJECT_PATH

Section “MainSection” SEC01

;获取 $INSTDIR 的上一级目录

GetFullPathName $0 ../../../

DetailPrint PROJECT_PATH

SetOutPath “$INSTDIR”

File “${PRODUCT_DIR_ROOT_NAME}\CapClient.bat”
SectionEnd

3.打包文件移除不需要的文件

移除掉Bin/Interpreter目录下的Linux,Unix目录

File /r /x “Linux” /x “Unix” “${PRODUCT_DIR_ROOT_NAME}\Bin*”

4.卸载程序检查当前程序是否在运行
下载FindProcDLL
放到C:\Program Files (x86)\NSIS\Plugins(软件的安装目录)里面

Function .onInit
FindProcDLL::FindProc “xxx.exe”
Pop $R0

IntCmp $R0 1 0 no_run

MessageBox MB_ICONSTOP “安装程序检测到 ${PRODUCT_NAME} 正在运行,请关闭之后再卸载!”

Quit
no_run:
FunctionEnd

5.检测程序多次安装,通过注册表的方式

Function .onInit
ClearErrors
ReadRegStr $UNINSTALL_PROG ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} “UninstallString”
IfErrors done

ReadRegStr $OLD_VER ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} “DisplayVersion”
MessageBox MB_ICONSTOP “检测到本机已经安装了 ${PRODUCT_NAME},请卸载后再安装”
Quit
done:
FunctionEnd

6.解决win7卸载程序快捷方式卸载不彻底
创建快捷方式时

RequestExecutionLevel user
Section -AdditionalIcons

SetShellVarContext all
CreateShortCut “$SMPROGRAMS\Capsheaf\Website.lnk” “$INSTDIR\${PRODUCT_NAME}.url”
CreateShortCut “$SMPROGRAMS\Capsheaf\Uninstall.lnk” “$INSTDIR\uninst.exe”

SectionEnd

删除快捷方式时

RequestExecutionLevel admin
Section Uninstall

SetShellVarContext all
Delete “$SMPROGRAMS\Capsheaf\Uninstall.lnk”
Delete “$SMPROGRAMS\Capsheaf\Capsheaf.lnk”

SectionEnd

NSIS安装包制作教程 分为三个目录:基础,插件,脚本 NSIS System 插件 NSIS VPatch 3.1插件 NSIS InstallOptions 2 插件 NSIS Modern UI(新式用户界面)插件 NSIS的Modern UI插件 NSIS里特殊符号的表达方法 两组件互斥 NSIS 常用小问题合集 资源替换式的美化包制作方式代码 安装完毕后如何刷新文件关联 教你如何编程调用 NSIS 的插件 NSIS安装程序概要 实现 NSIS 自定义页面中的控件操作代码 如何使用NSIS实现多目录安装设置 如何用NSIS在加入注册表 用NSIS 制作自己的安装程序 bluewind 的 wmp9 nsis安装脚本 NSIS安装脚本简明教程 取得winamp的NSIS脚本的教程 迅雷5.7.3.389 AYU增强版的安装脚本 NSIS制作迅雷安装的脚本 迅雷5.7.2.371 DDR1.5版去广告版源代码说明 NSIS删除安装程序自身 帮助文件中关于静默安装的说明 NSIS实现静默安装的两种方法 nsis的附加任务代码 关于 NSIS 写入注册表的问题 少轻狂制作Windows优化大师的安装脚本 aipc编写的nsis极点安装脚本 官方 NSIS 插件全集 全方位掌握NSIS的使用 NSIS语言里怎样安装一个.inf文件? 如果要关联某个文件给程序应该怎么做? 如何避免显示解压缩进度框? 关于检测操作系统的问题 在结束页面添加运行程序选项 NSIS的botton二选一如何实现NSIS灵活应用用逻辑库 NSIS调用inf安装驱动后的卸载问题 NSIS的组件互斥代码 在NSIS中如何禁止一个组件组的父项的点击事件 关于打破 NSIS 的 8192 字节限制的更简单方法 NSIS 自定义页面结合组件选择安装 一个关于组件跟自定义页面的控制问题 如何把安装的卸载程序放到其他目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值