如何将Electron应用程序打包成单个可执行文件?

时间:2016-04-09 09:39:24

标签: executable electron

使用电子打包器,我可以创建一个打包的'适用于各种架构和平台的JavaScript应用程序版本。但是,它不会将每个构建打包为一个我可以分发的单个二进制文件。

在寻找替代方案时,我发现了EncloseJs,但它不是免费的(我更喜欢免费解决方案)。

我找到的另一个是electron-boilerplate,它只创建一个* .deb,* .app或Windows安装程序,但不会创建一个可运行该程序的可执行文件。

是否可以使用Electron创建单个可执行文件?

4 个答案:

答案 0 :(得分:7)

是的,它(现在)可能。选择任何模块来生成单个exe文件: electron-builderelectron-forgewindows-installer

答案 1 :(得分:3)

尝试使用TPanel。它将建立可投入生产的electron-builder -p --win。我是用.exe

做的

对于可发布的内部版本,您需要在electron-builder@21.2.0文件中使用发布提供程序,请考虑给定的示例。

package.json

将给定的pulishing配置作为root属性添加到package.json中。您需要在运行构建时导出Github个人访问令牌(这里是Doc)。

您可以按照给定的方式从"build": { "appId": "com.trinityinfosystem.electron.exchange.stream", "productName": "Accurate", "copyright": "Copyright © 2018 Trinity InfoSystem", "mac": { "category": "public.app-category.utilities", "icon": "assets/icon.icns", "target": [ "zip", "dmg" ], "publish": [ "github" ] }, "win": { "publisherName": "Trinity InfoSystem", "publish": [ "github" ], "target": [ "nsis" ] }, "linux": { "target": [ "AppImage", "tar.gz" ] }, "dmg": { "background": "assets/background.png", "icon": "assets/icon.icns", "title": "Accurate Installer" }, "nsis": { "oneClick": false, "perMachine": false, "allowToChangeInstallationDirectory": true, "installerIcon": "assets/icon.ico", "installerSidebar": "assets/sidebar.bmp", "uninstallerSidebar": "assets/sidebar.bmp", "license": "assets/agreement.html", "createDesktopShortcut": true, "createStartMenuShortcut": true }, "publish": [ { "provider": "github", "owner": "vkiranmaniya", "repo": "accurate", "vPrefixedTagName": true, "private": true, "releaseType": "draft" } ] }, 将令牌导出为env变量,

main.js

如果要使用GitHub设置自动更新,则可以使用给定的模块并调用process.env.GH_TOKEN = 'YOUR_PERSONAL_ACCESS_TOKEN_HERE'; 方法checkForUpdates()

from main.js

现在,您可以运行命令const electron = require("electron"); const updater = require("electron-updater"); const autoUpdater = updater.autoUpdater; autoUpdater.on('checking-for-update', function () { sendStatusToWindow('Checking for update...'); }); autoUpdater.on('update-available', function (info) { sendStatusToWindow('Update available.'); }); autoUpdater.on('update-not-available', function (info) { sendStatusToWindow('Update not available.'); }); autoUpdater.on('error', function (err) { sendStatusToWindow('Error in auto-updater.'); }); autoUpdater.on('download-progress', function (progressObj) { let log_message = "Download speed: " + progressObj.bytesPerSecond; log_message = log_message + ' - Downloaded ' + parseInt(progressObj.percent) + '%'; log_message = log_message + ' (' + progressObj.transferred + "/" + progressObj.total + ')'; sendStatusToWindow(log_message); }); autoUpdater.on('update-downloaded', function (info) { sendStatusToWindow('Update downloaded; will install in 1 seconds'); }); autoUpdater.on('update-downloaded', function (info) { setTimeout(function () { autoUpdater.quitAndInstall(); }, 1000); }); function checkForUpdates(){ const data = { 'provider': 'github', 'owner': 'vkiranmaniya', 'repo': 'exchange', 'token': 'YOUR_PERSONAL_TOKEN_HERE' }; autoUpdater.setFeedURL(data); autoUpdater.checkForUpdates(); } function sendStatusToWindow(message) { console.log(message); } module.exports = { checkForUpdates, } 来构建一个可自动更新的独立.exe文件。使用electron-build -p --win--mac定位要构建的特定平台。

答案 2 :(得分:1)

我不确定是否有更新的解决方案,但 您可以使用BoxedApp,尽管您必须购买它,但是您可以搜索免费版本。

您也可以使用WinRAR,通过创建SFX存档将您的项目打包为单个exe。这是How To Make Portable Application using WinRAR上的视频。

缺点: 启动应用程序将花费更长的时间。

注意: 使用上述任何一种方法之前,您都必须先打包项目。

PS: 仅在Windows上测试。

希望获得帮助。

答案 3 :(得分:0)

不是,但没关系。

我怀疑有很多桌面应用程序只包含可执行文件。通常,您将拥有大量资源文件。电子是一样的:它附带一个“单个可执行”文件,启动Electron和许多其他文件。当您使用电子打包器时,您将获得一个可启动应用程序的可执行文件,但它与许多资源文件(例如您的Javascript代码)捆绑在一起。我想你可以尝试使用某种bin packer将所有内容捆绑成一个二进制文件,但为什么要这样做呢?大多数应用程序包含许多文件和文件夹,并且没有任何问题。