#node.js #electron #electron-forge
#node.js #electron #electron-forge
Вопрос:
Я пытаюсь создать исполняемое приложение Electron. Я разрабатываю на хост-платформе openSUSE Leap 15.1 (Linux). Я пытаюсь выполнить сборку для win32, но выдает следующую ошибку:
2020-11-04 08:44:08> Unhandled exception: System.IO.FileNotFoundException: Could not load file or assembly 'PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
File name: 'PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
at Squirrel.Update.Program.main (System.String[] args) [0x00060] in <9e2ab352f8944769b3794933dd42e8f9>:0
2020-11-04 08:45:20> Unhandled exception: System.IO.FileNotFoundException: Could not load file or assembly 'PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
File name: 'PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
at Squirrel.Update.Program.main (System.String[] args) [0x00060] in <9e2ab352f8944769b3794933dd42e8f9>:0
Вот мой файл package.json:
{
"name": "mailer-boy",
"version": "1.0.0",
"description": "An email client for IMAP server",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" amp;amp; exit 1",
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@electron-forge/cli": "^6.0.0-beta.54",
"@electron-forge/maker-deb": "^6.0.0-beta.54",
"@electron-forge/maker-rpm": "^6.0.0-beta.54",
"@electron-forge/maker-squirrel": "^6.0.0-beta.54",
"@electron-forge/maker-zip": "^6.0.0-beta.54",
"electron": "^10.1.5",
"electron-winstaller": "^4.0.1"
},
"dependencies": {
"base64-stream": "^1.0.0",
"electron-squirrel-startup": "^1.0.0",
"html-to-text": "^6.0.0",
"node-imap": "^0.9.6",
"underscore": "^1.11.0"
},
"config": {
"forge": {
"packagerConfig": {},
"makers": [
{
"name": "@electron-forge/maker-squirrel",
"config": {
"name": "mailer_boy"
}
},
{
"name": "@electron-forge/maker-zip",
"platforms": [
"darwin"
]
},
{
"name": "@electron-forge/maker-deb",
"config": {}
},
{
"name": "@electron-forge/maker-rpm",
"config": {}
}
]
}
}
}
И вот команды, которые я пробовал:
> npm run make --targets @electron-forge/maker-squirrel
> npm run make --platform linux --targets win32
Приведенные выше команды продолжали игнорировать цель и просто создали приложение для Linux (после добавления пакетов deb и rpm). Я также пробовал это:
winstaller.js
const createWindowsInstaller = require('electron-winstaller').createWindowsInstaller
const path = require('path')
getInstallerConfig()
.then(createWindowsInstaller)
.catch((error) => {
console.error(error.message || error)
process.exit(1)
})
function getInstallerConfig () {
console.log('creating windows installer')
const rootPath = path.join('./')
const outPath = path.join(rootPath, 'out')
return Promise.resolve({
appDirectory: path.join(outPath, 'mailer-boy-linux-x64'),
authors: 'Abrar H Galib',
noMsi: true,
outputDirectory: path.join(outPath, 'windows-installer'),
exe: 'mailerboy.exe',
setupExe: 'MailerboyInstaller.exe',
});
}
Выполнение приведенного выше с Node.js выдает ошибку, указанную выше. Как я могу настроить таргетинг на Win32 со своей платформы? Я пропускаю какие-либо зависимости? Я установил dotnet-sdk, dotnet-runtime, но это не помогло. Спасибо.
Редактировать
В итоге я использовал ноутбук Windows друга для создания приложения для Windows. Это было несколько болезненно. Я бы очень хотел знать, возможно ли создание для Windows и macOS даже из Linux. В противном случае будет несколько неудобно (а также бесполезно) продолжать использовать Electron.