如何在Windows上打包NW.js应用程序

时间:2016-06-06 02:20:52

标签: javascript node-webkit nw.js

I am reading the instructions for how to package a NW.js app并且措辞混乱,毫无意义。我强调了矛盾的词沙拉部分。

  

创建一个zip文件(内置于XP,Vista和7中)复制全部   将您的文件放入zip文件,保留目录结构并制作   确保package.json文件位于根目录中(如果你做的话)   一个zip文件包含一个包含你的东西的文件夹,然后它不是   开始工作)将文件扩展名从.zip重命名为.nw。默认情况下,   文件扩展名可能被隐藏。你需要(按alt),转到文件夹   选项并取消选中"隐藏已知文件类型的扩展名"能够   重命名拉链。

是否有一个简单的逐步指令集来说明如何做到这一点? 我在线查看,无法找到任何Windows操作系统。目标是创建一个可执行文件(.exe),其中隐藏了用户隐藏的应用程序内部。

我之前在Mac上做过但从未在Windows上做过。编写官方文档的方式太过令人困惑,而且我无法理解。

3 个答案:

答案 0 :(得分:8)

为此,您可以使用https://github.com/nwjs/nw-builder

  

让您通过cli为mac,win和linux构建NW.js应用程序。它会   下载最新版本的预建二进制文件,解压缩,   创建一个release文件夹,为指定创建app.nw文件   目录并复制它所属的app.nw文件。

首先,使用以下命令全局安装node-webkit-builder模块:

$ npm install node-webkit-builder -g

安装模块后,您可以按如下方式运行nwbuild命令:

$ nwbuild [options] [path]

路径是项目文件夹的路径,而选项是以下代码中描述的选项:

-p Operating System to build ['osx32', 'osx64', 'win32', 'win64']
-v NW.js version [default: "latest"]
-r Runs NW.js project [default: false]
-o The path of the output folder [default: "./build"]
-f Force download of node-webkit [default: false]
--quiet Disables logging

一些例子:

  1. 运行项目(在当前平台上):

    $ nwbuild -v [version of your nw.js] -r /path/to/the/project
    
  2. 为Win32或/和Win64平台构建项目(可执行文件(.exe)):

    $ nwbuild -v [version of your nw.js] -p win32,win64 /path/to/the/project
    
  3.   

    如果你的cmd当前在项目文件夹中打开,那么instread会写满   您可以使用点符号

    来创建项目的路径

答案 1 :(得分:1)

欢迎您使用我的批处理文件自动执行所有操作。它编译,更新要包含的所有文件的时间戳,并运行您的应用程序进行测试。

在XP或W7下完美运作。

注意:只是搜索&替换" SourceDir"," DestinDir"和" ProgName"的所有实例根据需要。

$ docker pull scrapinghub/splash
$ docker run -p 5023:5023 -p 8050:8050 -p 8051:8051 scrapinghub/splash

答案 2 :(得分:0)

nw-builder02/July/2016 release之前不支持NW.js最新版本(版本> 0.12),它现在支持,但仍处于alpha / beta状态。

您可以尝试使用nwjs-builder,简单而强大(通过withFFmpeg选项使用ffmpeg预建支持),您可以在命令行中使用,如果您想将其用作模块,则可以作为模块使用并使用(例如)使用gulp自动构建,您可以执行以下操作:

var gulp = require('gulp'),
    glp = require('gulp-load-plugins')(),
    del = require('del'),
    nwb = require('nwjs-builder'),
    argv = require('yargs').alias('p', 'platforms').argv,
    paths = {
        build: './build',
        src: './src',
        images: './src/images'
    },
    detectCurrentPlatform = function () {
        switch (process.platform) {
        case 'darwin':
            return process.arch === 'x64' ? 'osx64' : 'osx32';
        case 'win32':
            return (process.arch === 'x64' || process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432')) ? 'win64' : 'win32';
        case 'linux':
            return process.arch === 'x64' ? 'linux64' : 'linux32';
        }
    };

gulp.task('build', ['clean:build'], function () {
    return new Promise(function (resolve, reject) {
        nwb.commands.nwbuild(paths.src, {
            version: '0.15.4',
            platforms: argv.p ? argv.p : detectCurrentPlatform(),
            withFFmpeg: true,
            production: true,
            macIcns: paths.images + '/icon.icns',
            winIco: paths.images + '/icon.ico',
            sideBySide: false,
            //outputFormat: 'ZIP',
            outputDir: paths.build
        }, function (err) {
            if (err) {
                reject(err);
            }
            return resolve();
        });
    });
});

gulp.task('clean:build', function () {
    return gulp.src(paths.build, {
        read: false
    }).pipe(glp.clean());
});

清单中所需的依赖项(调整所需的版本):

"devDependencies": {
    "del": "^2.2.1",
    "gulp": "^3.9.1",
    "gulp-clean": "^0.3.2",
    "gulp-load-plugins": "^1.2.4",
    "nwjs-builder": "latest",
    "yargs": "^4.7.1"
}

您可以在主GitHub存储库上获得更多关于use和args的文档。