在Windows上使用Electron Packager无法正常工作

5
我用Electron在Windows上编写了一个小应用程序,其中包含检查注册表以获取有关某些已安装软件的信息的功能,并且我需要在另一台机器上运行该应用程序进行测试。因此,我正在尝试打包我的应用程序。
首先,重要的是要注意,当我在项目的根目录中运行>electron .时,它可以正常运行。
我尝试手动打包应用程序,将我的应用程序放置在resources\app文件夹下并运行Electron.exe。但它不起作用。Electron应用程序在任务管理器中启动,然后很快退出。没有任何错误或警告。没有对话框或其他任何内容。
我安装了electron-packager模块,并尝试使用它来打包应用程序。但它什么也不做。没有控制台输出,它只是坐在那里一段时间然后退出。当它退出时,没有打包的应用程序。什么也没变。我尝试了electron-builder并得到了同样的结果。
我对Node.js还比较陌生,所以我怀疑我可能只是做错了什么。这是我的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

据我所见,我所做的还没有问题。而且正如我所说的,在使用Electron CLI (electron .) 运行时,它工作得非常好。因此,我很困惑。我只能推测package.json可能出了问题。是否存在问题?当运行打包程序时,为什么我没有看到任何控制台输出?


1
你有一个相当复杂的目录结构。由于你是新手,我建议先从一切都是平面的开始,就像在 electron.atom.io 上的快速入门应用程序一样。首先让它正常工作。(对我来说它很好用。)然后,开始使用更复杂的树形结构变得更加精细。 - Marc Rochkind
1
你尝试过使用electron-packager的API打包应用程序,而不是使用命令行吗? - Paulo Galdo Sandoval
2个回答

3

我会给你留下我打包应用程序的脚本,其中使用了 electron-packager 的 API。也许你可以使用这个脚本来构建你的 .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);
});

在这里,您可以查看此脚本可用的所有选项:链接


这个脚本运行成功了。非常感谢!我不知道为什么CLI没有工作。 :/ - Luke
不错,我也遇到了CLI的同样问题。 - Paulo Galdo Sandoval
1
@PauloGaldoSandoval 这个链接已经不再使用了。 - Liakos

-3

我也尝试了builder,但它也没有任何作用。我想它也使用electron-packager,对吧? - Luke
如果OP在使用错误的打包工具时,告诉他使用另一个打包工具会是一个好答案。但是electron-packager是一种完全可接受的解决方案,并且对我而言效果很好。(我还不知道答案...还在努力中。) - Marc Rochkind
@MarcRochkind的问题被标记为electron-builder :) - develar
@Luke 是的,electron-builder使用了electron-packager,但在底层,API是不同的。所有的配置都是在package.json中的build键下完成的。 - develar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接