lxw112190

lw.Web2App

lw.Web2App 是网页打包工具,把 HTML、Vue、React、Vite 静态项目打成 Windows/Linux 单文件桌面应用,无需 Node 或 Electron。

v0.2.7
发布于
2026年9月5日
129
星标
409
下载
同步于
1 天前

最新版本

v0.2.72026年9月5日 09:54
下载慢?可在上方随时切换镜像源

项目说明

项目概述

lw.Web2App 把 HTML、Vue、React、Vite 的静态产物变成单个桌面 EXE 或 ELF 应用,全程不需要 Node.js、Rust、.NET,也不往里塞 Electron。它用 C++ 写成,Windows 端复用系统自带的 WebView2 Evergreen Runtime,Linux 端复用 GTK3 与 WebKitGTK 4.1,生成的应用体积小、启动快。Windows 10/11 x64 为稳定版,Ubuntu 22.04/24.04 x86_64 已进入 Linux Beta。

一次打包,网页项目直接变成可分发的单文件原生桌面程序。

项目 内容
平台 Windows 10/11 x64、Ubuntu 22.04/24.04 x86_64
语言 C++(MIT 许可证)
输入 本地静态目录或 http/https 在线网址
输出 单文件 EXE(Windows)或 ELF(Linux)
运行依赖 目标机器无需 Node.js、Rust、.NET 或 Electron

主要功能

  • 双端打包:本地静态目录与在线网址都能打成单文件应用,GUI 与 CLI 双形态
  • 图形界面:Windows 双栏布局支持 Per-Monitor V2 高 DPI,应用名、版本号、图标、窗口尺寸可视化设置
  • 本地交互:勾选 Native IPC 后,可信页面通过 window.lw.invoke() 调用文件选择、窗口控制、系统托盘等能力,按方法逐项授权
  • 后台代理:/lw_proxy/ 前缀把请求同源转发到固定 HTTP 后台,老系统不用改 CORS,还支持断点下载
  • SPA 兼容:适配 Vue Router、React Router 的 history 模式,启动页自动扫描排序
  • 完整性与签名:资源 ZIP 与 Manifest 联合 SHA-256 校验,Windows 可用证书存储区证书做 Authenticode 签名
  • 单实例:Windows 用 Named Mutex、Linux 用 flock,二次启动自动前置已有窗口

工作原理

打包时,工具把资源 ZIP、Manifest JSON 和 80 字节 Footer 依次追加到 Runner 的 PE/ELF 文件尾部,形成自包含的单文件应用。运行时,程序从自身末尾读到 Footer 就切换到应用模式,只索引 ZIP 中央目录、请求时才解压对应文件,热点小资源进 32 MiB LRU 缓存。本地内容由只监听 127.0.0.1 的 HTTP 服务提供,严格校验 Host,拒绝绝对路径、盘符与 .. 等危险条目,降低 ZIP 炸弹风险。

适用人群

  • 想把网页项目分发成桌面应用的开发者
  • 给内部系统做 EXE 包装的企业 IT
  • 不接受 Electron 体积的前端工程师
  • 需要把在线系统固定成桌面入口的用户

快速上手

  1. 从 Releases 下载 lw.Web2App.exe(Windows)或对应 Ubuntu 便携包
  2. 打开图形界面,左侧选择本地网页目录或在线网址,右侧填应用名称、图标与窗口尺寸
  3. 需要本地能力时勾选「启用本地交互(Native IPC)」,在权限窗口逐项授权
  4. 点生成,产物默认输出到打包器目录下的 out/MyWebApp.exe,成功后自动打开资源管理器
  5. 运行生成的应用,F11 切换全屏、Esc 退出

系统要求

项目 要求
Windows 10 1809+ / 11 x64,WebView2 Evergreen Runtime
Linux Ubuntu 22.04 / 24.04 x86_64,GTK3、WebKitGTK 4.1、OpenSSL 3
源码构建 需 Visual Studio 2022 与 CMake 3.22+

注意事项

  • 平台边界:不支持 Windows 7/8,Linux 不承诺 Debian、Mint、ARM64 或 AppImage
  • 数据目录:WebView2 用户数据在 %LOCALAPPDATA%/lw.Web2App/apps//,删除后 Cookie 与 localStorage 重置
  • 排障入口:白屏先看应用日志 app.log,未生成应用目录再看 launcher.log,日志单文件 2 MiB 保留 5 个
  • 代理限制:后台代理仅支持 http:// 目标,暂不支持 WebSocket 与 NTLM/Kerberos
  • 在线模式:打包在线网址不保存网站内容,运行时需联网

历史版本

排序