排三走势图彩经网|使用NSIS制作便携软件

 

使用NSIS制作便携软件:以PotPlayer Portable为例

前言

正如上一篇文章所言,我推荐大家使用P.A.L来制作便携软件,重新制作轮子是没有必要的。关于便携软件的多个难点,例如多实例、进程控制、非正常退出恢复、临时复制到本地运行、环境变量、路径替换等等,在P.A.L中都有相当成熟的解决方案,用户只用填写一个ini,而不需要考虑便携软件是怎样运行的。省时省力、稳定可靠是其优点。但是,有的时候我们不得不编写一段自定义代码 (custom code)才能实现某些要求,或者你是个代码狂人,喜欢看到自己指尖的代码编译成屏幕上运行的程序,那么就必须接触P.A.L的母体——NSIS。

Nullsoft 脚本安装系统(Nullsoft Scriptable Install System)是一个开放源代码的安装程序制作工具,(Nullsoft 也是WinAmp的制作方)。使用一种制作安装程序的语言来制作一种从不需要安装的程序——PortableApps,再适合不过了。因为从本质来讲,Portableapps的运行原理,其实就是在程序启动时进行一次“安装”,在程序结束后进行一次“卸载”(当然这个时间一般非常快)。PortableApps Launcher的主要对象无非是注册表项与文件,而处理这些,正是NSIS的长项。NSIS语言简明易懂,特别擅长处理windows系统中的进程、注册表与文件。以下以PotPlayer Portable为例,浅谈使用NSIS制作便携软件的一般流程。

要做什么?

通过虚拟机观察得知,当PotPlayerMini.exe同目录存在PotPlayerMini.ini时,PotPlayer将配置保存在此ini中,否则,则将配置保存在注册表中。

因此,我们可以有两种选择:让PotPlayer保存配置在注册表,并在结束时导出为reg文件;或者保证其运行时目录下存在PotPlayerMini.ini,在结束后将PotPlayerMini.ini移至 Data 目录(程序与配置分离原则)。后一种选择的优点是,PotPlayer Portable 可以与系统中安装的PotPlayer 或其它位置的PotPlayer Portable 同时运行,不会互相干扰。因此我选择了保存配置进 ini 的方案。

另外,我希望PotPlayer Portable首次运行时显示XMP-Gray-Tab 这个皮肤,而不是默认的棒子文皮肤。因此,需要创建一个DefaultData。

前期准备:

创建 PotPlayerPortable 文件夹,创建 App\AppInfo ,App\DefaultData , App\PotPlayer ,Sources 。如右图。

将PotPlayer 程序文件放在 App\PotPlayer 目录中。

在 App\DefaultData 中创建 PotPlayerMini.ini ,写入:

 

提取 PotPlayer 图标,保存为:App\AppInfo\appicon.ico 。

在 Source\中创建 PotPlayerPortable.nsi ,开始敲代码吧。以下分为3段讲解这个nsi文件。

定义变量:

将固定的文件、注册表项以变量的形式在文件头部声明,不但可以少敲些文字,也有利于减少笔误。

运行阶段

恢复工作:

Restore 函数:之所以不将 Restore 写入 Section ,而是写成 Function ,是为了方便“CheckGoodExit”段的调用。

完成:

就是这么简单。打开NSIS,选择 Compile NSI scripts ,把保存的nsi文件拖进去,编译成功后,在 PotPlayerPortable 根目录则会生成 PotPlayerPortable.exe。

如果你希望制作的便携软件更好地在福建快三走示图PortableApps.com 软件平台运行,可以参考上一篇文章编写appinfo.ini。

请注意,以上的代码只是最基础的示例,如果你希望制作更加强大、完善的便携软件,以下材料也许有帮助。

也许有帮助的材料:

吉林快三走势图组合 甘肃快三遗漏图 吉林快三和值走势图 湖北快三开奖结果今天 安徽快三遗漏数据查询 江苏快三快乐彩
福建快三基本走势图 江西快三计算 广西快三预测 青海快三开奖历史查询 江苏快三数据遗漏 今天青海快三走势图
江苏快三今天 广西快三输的倾家荡产 广西快三推荐大圣 甘肃快三走势图今天 江苏快三彩票 河北快三开奖·
甘肃十一选五开奖结果 福建快3官网 贵州十一选五开奖 2018年香港开奖结果 上海天天彩选4开奖结果查询
内幕贴士 江苏快三开奖结果今天 六盒彩84期免费资料 吉林时时彩大小走势图 广东11选五开奖记录