基于NW.JS全屏无边框程序将HTML打包成可执行文件.EXE

本文详细介绍了如何使用NW.js将Web应用打包成桌面应用,包括下载、安装、配置package.json文件、打包成.nw文件及转换为.exe文件的全过程。同时提供了两种封包方法,以实现独立运行的可执行文件。
一、介绍/下载/安装打包软件NW.js

NW.js 官网:nwjs.io
NW.js中文网:nwjs.org.cn
在这里插入图片描述
诚如中文网站所说,对于国内用户,下载速度慢过乌龟,大多数会下载失败,建议使用淘宝NPM镜像下载:
https://npm.taobao.org/mirrors/nwjs/

NW.js分两个版本:

  • normal版:正式发布版
  • SDK版:带chrome调试器的,方便调试使用

依各自需要使用,不需要调试,只是用于打包/去边框,可直接下载发布版

这里演示下载0.45.0的发布版:
https://npm.taobao.org/mirrors/nwjs/v0.45.0/nwjs-v0.45.0-win-x64.zip
下载的是个压缩包,直接解压即可,需要可配置一下环境变量,不懂直接忽略也行,不影响后续操作
在这里插入图片描述

想入门的可以去中文官网了解开发文档快速入门手册:
https://nwjs.org.cn/doc/user/Getting-Started.html
只要打包封包直接跳过看下文即可

二、打包操作

在需要打包文件中新建文件:package.json,里面的内容是:
可根据需求进行更改,不涉及可默认
在这里插入图片描述

	"main": "index.html", 	//打包程序入口
	"name": "cloud",		//字符串必须是小写字母或者数字,可以包含"." 或者"_"或者"-" ,不允许带空格,必须唯一
	"description": "demo app of node-webkit",	//描述
	"version": "1.0.0",		//版本
	"keywords": [ "demo", "node-webkit" ],		//关键字
	"window": {				//窗体配置
	"title": "node-webkit", //窗体的标题
	"icon": "link.png",		//窗体的ico图标
	"toolbar": false,		//是否要工具栏
	"frame": true,			//bool值。如果设置为false,程序将无边框显示 也就是没有系统默认的关闭,最小化,全屏按钮
	"width": 1000,			//窗口的大小:宽
	"height": 800, 			//窗口的大小:长
	"position": "mouse", 	//字符串。窗口打开时的位置,可以设置为“null”、“center”或者“mouse”。
	"min_width": 400,		//最小宽度
	"min_height": 200,		//最小高度
	"max_width": 9999,		//最大宽度
	"max_height": 9999,		//最大高度
	"as_desktop" :false,	//是否作为桌面背景窗口显示
	"resizable":true,		//是否允许调整窗口大小
	"always-on-top":true,	//窗口是否置顶
	"fullscreen":false,		//是否全屏显示 
	"show_in_taskbar":true,	//是否显示任务栏图标 
	"show":true, 			//如果设置为false,启动时窗口不可见
	"kiosk":false 			//是否使用kiosk模式。如果使用kiosk模式,应用程序将全屏显示,并且阻止用户离开应用
},
	"webkit": {
		"plugin": true,		//bool值,是否加载插件,如flash,默认值为false。
		"java":false, 		//bool值 是否加载java applets
		" page-cache":false //是否启用页面缓存
	}
}

再选中全部文件,压缩成 .zip 文件(.rar文件不能),并将后缀改为:.nw
在这里插入图片描述
把刚刚的.nw用nw.exe打开,会出现你的网页(有配置环境变量/懂得路径操作的可以不用打开这一步),其实打开就相当于是预览成效,并定位打包程序路径

nw.exe就是刚刚下载的NW.js里面解压出来的文件
在这里插入图片描述

接下来就是打包成EXE
CMD打开命令提示符,CD定位到nw.exe所在的文件夹,输入:

copy /b nw.exe+文件的名字.nw 打包后生成的文件名字.exe

这里吾输入的是:

copy /b nw.exe+Ring.nw Ring.exe

至此打包完成,在nw.exe所在文件目录下已生成可执行文件Ring.exe

该可执行文件依赖于目录下的其他文件,若需要单独运行,还得继续封包

NW.exe 的默认图标通过配置文件是无法修改的,需要用工具 Resource Hacker 来修改
在这里插入图片描述

纯小白在线打包:http://www.krpano.tech/

<think>好的,用户的问题是关于nw.js打包HTMLexe后出现“无法访问文件”的错误。我需要先分析可能的原因,然后根据提供的引用资料找到解决方案。首先,用户可能没有正确配置入口文件。根据引用[1],main字段在package.json中必须指向正确的JSHTML文件。如果路径不对,可能导致无法加载资源。其次,打包后的文件路径可能没有调整,引用[2]提到需要修改main.js中的loadFile路径为打包后的dist目录。另外,资源文件如locales可能没有被正确包含,引用[4]指出在Inno Setup中需要正确配置文件夹和文件,尤其是递归子目录。还有图标替换可能导致的问题,但用户的问题更可能和路径有关。最后,权限问题或杀毒软件拦截也是可能的原因,需要检查。综合这些因素,应该分步骤检查配置文件和资源路径,确保所有依赖文件都被正确打包。同时,代码中的相对路径可能需要调整,使用__dirname来确保正确解析。需要提醒用户检查这些方面,并参考相关的引用资料进行修正。</think>### nw.js 打包后‘无法访问文件’问题的原因及解决方案 #### 一、主要原因分析 1. **入口文件配置错误** 未在`package.json`中正确指定入口文件路径,或打包后未同步修改路径。 示例错误配置: ```json "main": "./src/main.js" // 实际打包后文件结构变化导致路径失效[^1] ``` 2. **资源文件未正确包含** 本地化文件(如`locales`目录)、静态资源未加入打包配置: ```ini ; Inno Setup 脚本若未包含关键资源 [Files] Source: "locales\*"; DestDir: "{app}\locales"; Flags: ignoreversion recursesubdirs # 缺少此配置会导致语言包缺失[^4] ``` 3. **路径引用方式错误** 代码中使用相对路径而未考虑打包后的文件层级: ```js // 错误方式 mainWindow.loadFile('index.html') // 正确方式(假设打包后文件在dist目录) mainWindow.loadFile(path.join(__dirname, './dist/index.html'))[^2] ``` #### 二、具体解决方案 1. **修正package.json配置** ```json { "name": "nw-app", "main": "./dist/index.html", // 显式指定HTML入口 "scripts": { "build": "nwbuild --platforms win64 ./src" } } ``` 2. **完善打包配置文件**(以Inno Setup为例) ```ini [Files] ; 包含所有必须文件 Source: "dist\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs Source: "node_modules\*"; DestDir: "{app}\node_modules"; Flags: recursesubdirs Source: "locales\*.pak"; DestDir: "{app}\locales"; Flags: ignoreversion ``` 3. **代码路径优化**(使用绝对路径) ```js const path = require('path'); // 加载窗口时使用 mainWindow.loadFile(path.resolve(__dirname, 'index.html')); // 加载本地资源时 fetch(path.join(process.cwd(), 'data.json')); ``` 4. **验证文件完整性** 通过ResourceHacker检查最终exe包含的文件结构[^4]: ``` 1. 打开生exe文件 2. 查看是否包含html/css/js等资源文件 3. 检查版本信息等元数据 ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值