前言
近期有一场景,希望使用独立的exe
程序封装内置浏览器并默认打开某一web
项目而不是给出一个url
,与此同时,最好能弱化浏览器的存在以增强程序的“独立感”。经过在网上的探索,发现了Nativefier
这一工具可以近乎完美的解决问题。
实现
一、安装Node环境
打开node官网并进行下载安装最新版node:https://nodejs.org/en
安装过程一直默认安装,点击下一步,不要修改安装路径
以管理员模式运行命令行窗口,输入指令:
npm -v
应出现安装的node
版本。
二、安装环境
(1)以管理员运行命令行窗口
(2)输入指令,即可自动安装(如果安装没有出现问题,不需要执行 3、4两个步骤)
npm install nativefier -g
(3)如果安装过程中发现一直卡在了一个提示:sill idealTree buildDeps
,这是因为无法获取原始源,只需要修改源地址为淘宝源即可。按下Ctrl+C取消下载,然后输入指令:
npm config set registry https://registry.npm.taobao.org
(4)修改后,重新执行:npm install nativefier -g
指令即可
到此,环境安装完毕。
三、exe打包
(1)找到你想要打包的地址,比如:https://www.soarli.top/
(2)输入指令:
nativefier --name "测试打包" "https://www.soarli.top/"
(3)打包成功,打包后的文件在如图所示路径下。
四、运行测试
双击exe运行测试,测试成功:
参数与配置项
nativefier –name “blog” “https://www.xxx.cn/”
nativefier –icon <path>:设置图标 icon参数
Windows环境下为.ico文件
Linux下为.png
Mac下 icon参数可以是a .icns或.png文件
--app-copyright :应用的版权信息
-p, --platform <value>:指定输出不同系统的应用,可选参数linux、windows、osx。
-m, –show-menu-bar:指定是否应该显示菜单栏。
--disable-context-menu:禁用上下文菜单
--disable-dev-tools:停用Chrome开发者工具
--clear-cache:防止应用程序在两次启动之间保留缓存。
--tray:托盘,防止用户点击右上角关闭按钮后直接关闭程序,而是缩小到右下角的托盘中。
--always-on-top:总是在最前面显示。
--maximize:开始的时候最大化。
--full-screen:使打包的应用全屏启动。
--app-version <value>:应用程序的发行版本。
–width <value>:打包应用程序的宽度,默认为1280px。
–height <value>:打包应用程序的高度,默认为800px。
–min-width <value>:打包应用程序的最小宽度,默认为0。
–min-height <value>:打包应用程序的最小高度,默认为0。
–max-width <value>:打包应用程序的最大宽度,默认为无限制。
–max-height <value>:打包应用程序的最大高度,默认为无限制。
–x <value>:打包的应用程序窗口的X位置。
–y <value>:打包的应用程序窗口的Y位置。
-a, --arch <value> 处理器架构
//示例
nativefier --name "软件名称" "http://xx.xx.xx.xx:8080" --min-width 1920 --min-height 1080 --full-screen -x 0 -y 0 --icon "F:\icon.ico"
这里打包的是托盘,防止用户点击右上角关闭按钮后直接关闭程序,而是缩小到右下角的托盘中的exe.
nativefier "https://px.xxxx.com/static/admin/#/login" --name "软件名称" --tray --icon D:\Users\012472\Desktop\8ffdba72d5991781c47e2bf42025551.ico --file-download-options "{\"saveAs\": true}"
修复bug & 优化体验
下载文件体验糟糕
默认情况下,用户在客户端里面下载文件后没有任何反应,给人的感觉是类似于微信内置浏览器,无法下载。
但是实际上并不是这样的,它会自动下载到系统的默认下载路径下。
为了优化这个场景体验,我们可以找到resources\app\lib\main.js
大约4380
行
if (options.saveAs) {
item.setSaveDialogOptions({defaultPath: filePath});
} else {
item.setSavePath(filePath);
}
在if (options.saveAs)
判断条件添加一个叹号就可以if (!options.saveAs)
:
这样一来,用户在涉及文件下载的场景,程序每次都会问其要下载到哪里。
独立封装
到现在,虽然有了exe
运行方式,但是要想对外分发,得连带一大堆dll
等资源一起甩出去才可以,不然别人无法打开。
我希望能拿出一个单exe
文件便于传播,但是找了许久没找到官方给出相关教程,于是只好采用自解压包的形式来实现。
一、全选文件打包rar
全选并压缩为一个rar
文件:
二、打开,选择自解压格式
三、点高级选项
四、配置相关参数
点击确定即可完成。
参考资料:
将在线网站打包为exe程序直接运行_网站打包exe-CSDN博客
Nativefier—使用—快速将网站打包成桌面程序-CSDN博客
nativefier/API.md 在 master ·nativefier/nativefier ·GitHub的
GitHub - nativefier/nativefier: Make any web page a desktop application
nativefier打包桌面应用的时候,程序内下载文件自定义路径 - 织梦OK (imtr.cn)
基于electron的一键制作网站客户端工具,nativefier入门教程 (newsn.net)
Nativefier: 将任何网页转换成桌面应用程序-CSDN博客
用WinRAR将exe与所依赖的dll与资源打包成一个exe_winrar合并exe+dll-CSDN博客
nativefier打包桌面应用的时候,程序内下载文件自定义路径 - 织梦OK (imtr.cn)
版权属于:soarli
本文链接:https://blog.soarli.top/archives/747.html
转载时须注明出处及本声明。