【问题标题】:How to package a NW.js application on Windows如何在 Windows 上打包 NW.js 应用程序
【发布时间】:2016-10-05 13:11:03
【问题描述】:

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 上做过。官方文档的编写方式太混乱了,我无法理解。

【问题讨论】:

  • 第一步在所有平台上都是相同的,尽管命令不同。 .nw 文件是相同的。既然你已经在 Mac 上完成了,你应该做的是创建相同的文件。您甚至可以复制您在 Mac 中创建的 .nw 文件。

标签: javascript node-webkit nw.js


【解决方案1】:

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

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

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

$ npm install node-webkit-builder -g

模块安装完成后,您可以运行 nwbuild 命令,如下所示:

$ nwbuild [options] [path]

而 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
    

如果你的 cmd 当前在项目文件夹中打开,instread write full 项目路径,您可以使用点符号

【讨论】:

  • 这给了我一堆错误,构建文件夹最终为空
  • @William 我测试了这种方法,我使用 NW.js 0.12.3 并使用nwbuild -v 0.12.3 -p win32,win64 . 运行 nwbuild 没有错误。你得到什么错误?
  • 当我使用您提到的版本时,它似乎可以工作。当我使用默认版本时,它会引发错误并且找不到“ffmpegsum.dll”。网上看了很多人好像都有这个问题。
  • @William 没错。您需要编写当前安装的 NW.js 版本,它会工作
  • 当我明确输入 -v 0.15.1 (这是当前版本)时,它不起作用,我收到我提到的错误。当我输入 -v 0.12.3 它工作正常。
【解决方案2】:

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

在 XP 或 W7 下完美运行。

注意:只需根据需要搜索和替换“SourceDir”、“DestinDir”和“ProgName”的所有实例。

@echo off
title ProgName Compile & Run Script (c) 2016
cls
set FILETOZIP=C:\SourceDir\*.*
set TEMPDIR=C:\temp
: rmdir %TEMPDIR%
mkdir %TEMPDIR%
xcopy /s %FILETOZIP% %TEMPDIR%
cd C:\temp
copy /b *.* +,,
cd C:\DestinDir
echo Set objArgs = WScript.Arguments > Temp.vbs
echo InputFolder = objArgs(0) >> Temp.vbs
echo ZipFile = objArgs(1) >> Temp.vbs
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar) >> Temp.vbs
echo Set objShell = CreateObject("Shell.Application") >> Temp.vbs
echo Set source = objShell.NameSpace(InputFolder).Items >> Temp.vbs
echo objShell.NameSpace(ZipFile).CopyHere(source) >> Temp.vbs
echo wScript.Sleep 2000 >> Temp.vbs
del C:\DestinDir\ProgName.exe /f /s
CScript Temp.vbs  %TEMPDIR%  C:\DestinDir\ProgName.zip
ren C:\DestinDir\ProgName.zip ProgName.nw
copy /b nw.exe+ProgName.nw ProgName.exe
del C:\DestinDir\Temp.vbs /f /s
del C:\DestinDir\ProgName.nw /f /s
rmdir C:\temp /s /q
start ProgName.exe

【讨论】:

    【解决方案3】:

    nw-builder不支持02/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 存储库上获得更多有关使用和参数的文档。

    【讨论】:

      猜你喜欢
      • 2016-11-30
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 2015-12-03
      相关资源
      最近更新 更多