打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
nwjs项目打包exe程序

上一篇文章说到基于nsis制作exe程序,详情请看

本文主要会详细介绍制作exe的完整步骤和流程,包括exe改名,换图标等

1. 环境搭建

安装nsis-3.0-setup.exe,点击下载

安装成功后,右键选择nsi文件会显示如下

2. workplus项目包准备(绿色版程序)

基于nwjs开发完成的整个项目包,包括node_modules, dll模块等,如下

2.1 exe名字修改

默认exe的名字使用产品名称WorkPlus, 如果要对其修改不是简单的右键重命名,因为项目中有用到sqlite3,而sqlite3的node模块在经过nw-gyp编译后生产的node_sqlite3.node依赖了nwjs默认的nwjs.exe这个名字,这样就会导致只有nwjs.exe能加载node_sqlite3.node

准备工具rid.exe, 点击下载

把rid.exe拷贝的workplus目录下,打开命令行工具,进入rid.exe所在的目录,执行命令

rid.exe node_modules\sqlite3\lib\binding\node-webkit-v0.12.3-win32-ia32\node_sqlite3.node

如上图所示,可以看到依赖的是WorkPlus.exe

修改成对应的依赖名,如下命令

rid.exe node_modules\sqlite3\lib\binding\node-webkit-v0.12.3-win32-ia32\node_sqlite3.node WorkPlus.exe iWork.exe

还需要对screenshot-binding.node用同样的方式进行修改

完成上面修改后,直接把exe名字重命名成对应名字即可。

2.2 exe图标修改

基于Resource Hacker这个工具,可以直接修改exe的图标

1. 把exe拖放到Resource Hacker工具里面2. 点击Icon, 右键选中Replace icon, 需要提供ico格式的图片,这个可以通过在线工具转换,如http://convertico.com/3. 替换完保存即可,有时候exe的图标还显示旧的,可以返回上一层再进入或者重新打开文件夹

2.3 角标托盘图标修改

替换如下四个图片即可,图片包括两种状态有无新消息

2.4 api地址修改

在workplus目录下进入app/scripts/constants, 修改constant.js

SERVER_URL: API地址,必须以/结尾MEDIA_SERVER_URL: 媒体API地址,必须以/结尾MEDIA_SERVER_URL_IS_HTTPS: 是否HTTPSSERVE_NO_ADMIN_BASE_URL: 服务号跳转地址,即管理后台地址,如http://workplus.yuexiu.com:8001/workplus

3. nsis脚本

第二步中要修改的都完成后,就进入打包制作流程
nsis脚本下载, 点击下载

把nsis脚本和workplus目录放在同一层级,右键nsis脚本,点击Compile NSIS Script

构建成功后会生成workplus-setup.exe,可以点击界面上Test Installer进行测试

3.1 桌面快捷方式,开始菜单等入口重命名

基于nsis制作好的程序默认快捷方式和开始菜单入口的名字都是WorkPlus,如需修改可直接修改nsis脚本

具体请看nsis脚本,里面有注释

4 Change Log

2016.11.22

优化app在未退出的情况下,用户卸载或安装写文件失败的问题

目前使用最粗暴的方式,检测到WorkPlus.exe还在运行的话,直接弹框提示用户,要求提出app后在进行相应的操作

基于nsis的第三方插件FindProcDLL实现检测程序是否在运行,点击下载插件
拷贝ANSI和Unicode目录下的FindProcDLL.dll到nsis安装目录下的plugins对应的目录里

在workplus-setup.nsi脚本文件最后面添加如下代码

;开始安装时检查是否正在运行Function .onInit  FindProcDLL::FindProc "WorkPlus.exe"  Pop $R0  IntCmp $R0 1 0 no_run  MessageBox MB_ICONINFORMATION "安装程序检测到 WorkPlus 正在运行,请退出程序后重试"  Quit  no_run:   FunctionEnd;开始卸载时检查:Function un.onInit  FindProcDLL::FindProc "WorkPlus.exe"  Pop $R0  IntCmp $R0 1 0 no_run  MessageBox MB_ICONINFORMATION "卸载程序检测到 WorkPlus 正在运行,请退出程序后重试"  Quit  no_run:FunctionEnd

2016.12.12

实现网页调起客户端程序,打开聊天会话

将下面脚本合并到onInit函数里

  Var /GLOBAL protocol  StrCpy $protocol "workplus"  Var /GLOBAL app  StrCpy $app "$INSTDIR\workplus\WorkPlus.exe"   SetRegView 64  WriteRegStr HKCR "$protocol" "" "URL:$protocol Protocol"  WriteRegStr HKCR "$protocol" "URL Protocol" ""  WriteRegStr HKCR "$protocol\shell\open\command" "" "$\"$app$\" $\"%1$\""    SetRegView 32  WriteRegStr HKCR "$protocol" "" "URL:$protocol Protocol"  WriteRegStr HKCR "$protocol" "URL Protocol" ""  WriteRegStr HKCR "$protocol\shell\open\command" "" "$\"$app$\" $\"%1$\""

如下

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用NSIS制作64位安装包步骤
怎样去掉桌面图标小箭头
如何将网页封装打包成可执行的.exe程序
利用URL Protocol实现网页调用本地应用程序
node
Node-Webkit打包
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服