Nodejs相关:node-webkit中的操作问题(window下)

Nodejs相关:node-webkit中的操作问题(window下)

app.nw文件通过 copy /b nw.exe+app.nw app.exe 命令转换为 app.exe(该文件足有38M+)

然后通过官方介绍的Enigma Virtual Box进行打包,其中有个压缩的选项(觉得没怎么压缩)

完成后的文件app_boxed.exe还是有48M

问题

1、1个500kb的文件被整成这么大 有什么办法

2、如何做成可安装的包,像网上其他软件一样 选择路径—》安装—》生成桌面图标


5 回复

Nodejs相关:node-webkit中的操作问题(window下)

问题描述

我正在尝试使用 node-webkit 构建一个 Windows 应用程序。目前的操作流程如下:

  1. 使用 copy /b nw.exe + app.nw app.exeapp.nw 文件转换为 app.exe
  2. 使用 Enigma Virtual Box 进行打包,并选择了压缩选项。

然而,经过这些步骤后,最终的文件 app_boxed.exe 的大小仍然达到了 48MB,而原始的 app.nw 文件只有 500KB 左右。这让我感到非常困惑。

具体问题

  1. 如何减小最终文件的大小?
  2. 如何将应用打包成一个可安装的程序,类似常见的软件安装过程?

解决方案

1. 减小最终文件的大小

在 node-webkit 中,nw.exe 是一个预编译的二进制文件,它占用了大部分的空间。为了减小最终文件的大小,可以考虑以下方法:

  • 使用更小的基础镜像:尝试使用更小的 NW.js 镜像,例如使用 nwjs/nwjs Docker 镜像来构建你的应用。
  • 优化资源:检查你的 app.nw 文件中的资源(如图片、视频等),并尽可能地压缩它们。
// 示例:使用 image-min 插件压缩图片
const imagemin = require('imagemin');
const imageminJpegtran = require('imagemin-jpegtran');
const imageminPngquant = require('imagemin-pngquant');

(async () => {
    const files = await imagemin(['images/*.{jpg,png}'], {
        destination: 'build/images',
        plugins: [
            imageminJpegtran(),
            imageminPngquant({
                quality: [0.6, 0.8]
            })
        ]
    });

    console.log(files);
})();
2. 打包成可安装的程序

为了创建一个类似于常见软件安装过程的安装程序,你可以使用 Inno Setup 或 NSIS(Nullsoft Scriptable Install System)。这两个工具都支持创建 Windows 安装程序。

以下是一个简单的 Inno Setup 脚本示例:

[Setup]
AppName=MyApp
AppVersion=1.0
DefaultDirName={pf}\MyApp
OutputBaseFilename=MyAppInstaller

[Files]
Source: "path\to\your\app.exe"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{autodesk}\MyApp"; Filename: "{app}\app.exe"

[Run]
Filename: "{app}\app.exe"; Description: "{cm:LaunchProgram,MyApp}"; Flags: nowait postinstall skipifsilent

保存上述脚本为 installer.iss,然后运行 iscc installer.iss 来生成安装程序。

通过以上步骤,你可以有效地减小最终文件的大小,并创建一个可安装的程序,提供给用户更好的安装体验。


貌似看到过一个说法是windows下是要包一个node和V8,用来作为执行环境,加上他自己的代码,就这个大了

你看一下别人的作品,有些是开源的,看能不能找到合适的

https://github.com/rogerwang/node-webkit/wiki/List-of-apps-and-companies-using-node-webkit

对于大小 20m 以上那是肯定的…不过,为了跨平台.这点其实不算什么了…

.net 2.0 的大小就不知这个数了…

可安装的话,可以试试用 windows installer 来做

针对您提到的问题,我可以为您提供一些关于如何优化和打包 node-webkit 应用程序的建议。

问题 1: 如何减小应用大小

  1. 代码压缩: 使用工具如 uglifyjs 对 JavaScript 文件进行压缩。
  2. 资源优化: 减少图片、音频等资源的大小。使用在线工具或专业软件进行压缩。
  3. 去除冗余: 检查项目中是否包含未使用的文件或依赖项,并将其移除。

示例代码:

# 安装 UglifyJS
npm install -g uglify-js

# 压缩指定的 JavaScript 文件
uglifyjs yourfile.js -c -m -o yourfile.min.js

问题 2: 制作可安装包

为了创建一个类似其他软件的安装包,您可以考虑使用安装程序制作工具,例如 Inno Setup 或 NSIS。

示例步骤(以 Inno Setup 为例):

  1. 下载并安装 Inno Setup
  2. 编写脚本文件 (例如 install.iss) 来定义安装流程。
[Setup]
AppName=MyApp
AppVersion=1.0
DefaultDirName={pf}\MyApp
OutputDir=.
OutputBaseFilename=MyAppInstaller
Compression=lzma
SolidCompression=yes

[Files]
Source: "app_boxed.exe"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{autodesktop}\MyApp"; Filename: "{app}\app_boxed.exe"
  1. 运行 Inno Setup 编译器,将 .iss 脚本编译为安装程序。

以上方法可以帮助您减小应用程序的体积,并创建一个可安装的安装包。希望这些建议对您有所帮助!

回到顶部