使用电子打包器,我可以创建一个打包的'适用于各种架构和平台的JavaScript应用程序版本。但是,它不会将每个构建打包为一个我可以分发的单个二进制文件。
在寻找替代方案时,我发现了EncloseJs,但它不是免费的(我更喜欢免费解决方案)。
我找到的另一个是electron-boilerplate,它只创建一个* .deb,* .app或Windows安装程序,但不会创建一个可运行该程序的可执行文件。
是否可以使用Electron创建单个可执行文件?
答案 0 :(得分:7)
是的,它(现在)可能。选择任何模块来生成单个exe文件: electron-builder,electron-forge或windows-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将所有内容捆绑成一个二进制文件,但为什么要这样做呢?大多数应用程序包含许多文件和文件夹,并且没有任何问题。