Windows 上的 Electron Packager 啥都不做

Posted

技术标签:

【中文标题】Windows 上的 Electron Packager 啥都不做【英文标题】:Electron Packager On Windows Does NothingWindows 上的 Electron Packager 什么都不做 【发布时间】:2017-01-06 15:19:53 【问题描述】:

我在 Windows 中使用 Electron 编写了一个小应用程序,并具有一些功能可以检查注册表以获取有关已安装的某些软件的信息,我需要在另一台机器上运行该应用程序进行测试。所以,我正在尝试打包我的应用程序。

首先,重要的是要注意,当我在项目的根目录中运行 >electron . 时,它运行时没有任何问题。

我已经尝试手动打包应用程序,方法是将我的应用程序放在resources\app 文件夹下并运行 Electron.exe。它不起作用。 Electron 应用程序在退出之前在任务管理器中启动。没有任何错误或警告。没有对话或任何东西。

我已经安装了 electron-packager 模块,并尝试使用它来打包应用程序。但是,它什么也没做。没有控制台输出,它只是在退出前坐了一会儿。当它退出时,没有打包的应用程序。什么也没有变。我尝试了 electron-builder 并得到了相同的结果。

我一般是节点新手,所以我怀疑我只是做错了什么。这是我的 package.json(我还没有完全理解它的目的):


  "name": "welcome",
  "version": "0.1.0",
  "description": "",
  "main": "main.js",
  "scripts": 
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron .",
    "compile": "node .\\node_modules\\webpack\\bin\\webpack.js",
    "prep": "robocopy . releases\\app /XD node_modules releases blah /S /MIR /XF *.jsx \"webpack.config.js\" && robocopy node_modules\\winreg releases\\app && robocopy node_modules\\path releases\\app",
    "package": "asar pack .\\releases\\app .\\releases\\app.asar",
    "build": "electron-packager releases\\app WelcomeApp --ignore=node_modules --platform=win32 --arch=x64 --output=releases"
  ,
  "author": "",
  "license": "ISC",
  "babel": ,
  "dependencies": 
    "electron": "^1.3.4",
    "path": "^0.12.7",
    "react": "^15.3.0",
    "react-dom": "^15.3.0",
    "winreg": "^1.2.1"
  ,
  "devDependencies": 
    "babel-core": "^6.13.1",
    "babel-loader": "^6.2.4",
    "babel-preset-es2015": "^6.13.1",
    "babel-preset-react": "^6.11.1",
    "electron-builder": "^5.34.1",
    "electron-packager": "^7.7.0",
    "webpack": "^1.13.1"
  

我的目录结构如下

Welcome
|____app
|     |____src
|     |     |____dist
|     |     |     |____bundle.js
|     |     |____react
|     |     |     |____components
|     |     |     |     |____installation.jsx
|     |     |     |     |____...
|     |     |     |     |____software.jsx
|     |     |     |____index.jsx
|     |     |____util
|     |           |____data.js
|     |____app.html
|____node_modules
|     |____...
|____main.js
|____package.json
|____webpack.config.js

从我所看到的来看,我正在做的事情没有问题。就像我说的,当使用电子 cli (electron .) 运行时,它工作得非常好。所以,我很茫然。我只能假设 package.json 可能有问题。有问题吗?为什么我在运行打包程序时看不到任何控制台输出?

【问题讨论】:

你有一个相当复杂的目录结构。由于您是 electron-packager 的新手,我会从一切平面开始,就像在 electron.atom.io 上的 Quick Start 应用程序一样。先让它工作。 (它对我来说很好用。)然后,开始使用更复杂的树结构变得更精细。 您是否尝试过使用 electron-packager 的 API 而不是命令行来打包您的应用程序? 【参考方案1】:

我会给你我的脚本,说明我如何使用电子打包器的 API 打包我的应用程序,也许你可以用它来构建 your.exe。

'use strict';
var packager = require('electron-packager');
var options = 
    'arch': 'ia32',
    'platform': 'win32',
    'dir': './',
    'app-copyright': 'Paulo Galdo',
    'app-version': '2.1.6',
    'asar': true,
    'icon': './app.ico',
    'name': 'TierraDesktop',
    'out': './releases',
    'overwrite': true,
    'prune': true,
    'version': '1.3.4',
    'version-string': 
        'CompanyName': 'Paulo Galdo',
        'FileDescription': 'Tierra de colores', /*This is what display windows on task manager, shortcut and process*/
        'OriginalFilename': 'TierraDesktop',
        'ProductName': 'Tierra de colores',
        'InternalName': 'TierraDesktop'
    
;
packager(options, function done_callback(err, appPaths) 
    console.log("Error: ", err);
    console.log("appPaths: ", appPaths);
);

您可以在此处查看可以在此脚本中使用的所有选项:link

【讨论】:

这个脚本有效。非常感谢!我不知道为什么 CLI 不起作用。 :// 很好,我在使用 CLI 时遇到了同样的问题 @PauloGaldoSandoval 该链接已不再使用。【参考方案2】:

你不需要electron-packagerelectron-builder作为一个完整的解决方案就足够了,见https://github.com/electron-userland/electron-builder#quick-setup-guide

【讨论】:

我也试过builder,也没啥作用。我认为它也使用电子包装器,不是吗? 告诉 OP 使用不同的打包程序如果他使用了错误的打包程序将是一个很好的答案,但是电子打包程序是一种完全可以接受的做事方式,它对我有用。 (我还不知道答案……仍在努力。) @MarcRochkind 问题标记为electron-builder :) @Luke 是的,electron-builder 使用 electron-packager,但在底层,API 是不同的。所有配置均使用package.json 中的build 键完成。

以上是关于Windows 上的 Electron Packager 啥都不做的主要内容,如果未能解决你的问题,请参考以下文章

url 方案:根据请求打开 Windows 应用程序 [Electron]

设置 browserWindow 始终在顶部,即使其他应用程序/游戏全屏 [Electron,Windows 操作系统]

Electron 主进程和渲染进程

桌面上的Flutter:Electron又多了个对手

Electron - 如何在 linux 上创建深度链接

Electron 词汇术语表