Приложение Electron не будет установлено, если имя отличается от названия продукта
Я использую electron-forge
создать мое электронное приложение и создать распространяемые файлы для Моего проекта. Однако я столкнулся со странной ошибкой. мой name
поле в package.json
Я бы status-client
и мой тоже productName
поле.
С этими значениями, когда я запускаю электронную программу Forge, я получаю свой исполняемый файл, а затем могу установить его как чудо-кнопку и найти свое приложение в Utilities
раздел в Ubuntu.
Однако проблема возникает, когда я меняю productName
поле в моем package.json
file.The исполняемый файл будет создан, я могу установить его, но если я ищу свое приложение с новым именем, я не могу найти его где-либо.
Вот мой новый package.json
:
{
"name": "status-client",
"productName": "Foo",
"version": "1.0.4",
"description": "Monitor when your raspberry pi goes online and when offline with desktop notifications",
"main": "src/index.js",
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"lint": "eslint src"
},
"keywords": [],
"author": "Manos Kounelakis <pkounelios@gmail.com>",
"license": "MIT",
"config": {
"forge": {
"make_targets": {
"win32": [
"squirrel"
],
"darwin": [
"zip"
],
"linux": [
"deb"
]
},
"electronPackagerConfig": {
"packageManager": "npm"
},
"electronWinstallerConfig": {
"name": "status_client"
},
"electronInstallerDebian": {},
"electronInstallerRedhat": {},
"github_repository": {
"owner": "",
"name": ""
},
"windowsStoreConfig": {
"packageName": "",
"name": "statusclient"
}
}
},
"dependencies": {
"electron-compile": "^6.4.1"
},
"devDependencies": {
"babel-plugin-transform-async-to-generator": "^6.24.1",
"babel-preset-env": "^1.6.0",
"babel-preset-react": "^6.24.1",
"electron-prebuilt-compile": "1.7.5",
"eslint": "^3.19.0",
"eslint-config-airbnb": "^15.1.0",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-jsx-a11y": "^5.1.1",
"eslint-plugin-react": "^7.2.0"
}
}
С помощью вышеупомянутого package.json я получаю исполняемый файл и устанавливаю его, но если я ищу в моих программах Foo
Я ничего не получаю.
Вот оригинал package.json
:
{
"name": "status-client",
"productName": "status-client",
"version": "1.0.4",
"description": "Monitor when your raspberry pi goes online and when offline with desktop notifications",
"main": "src/index.js",
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"lint": "eslint src"
},
"keywords": [],
"author": "Manos Kounelakis <pkounelios@gmail.com>",
"license": "MIT",
"config": {
"forge": {
"make_targets": {
"win32": [
"squirrel"
],
"darwin": [
"zip"
],
"linux": [
"deb"
]
},
"electronPackagerConfig": {
"packageManager": "npm"
},
"electronWinstallerConfig": {
"name": "status_client"
},
"electronInstallerDebian": {},
"electronInstallerRedhat": {},
"github_repository": {
"owner": "",
"name": ""
},
"windowsStoreConfig": {
"packageName": "",
"name": "statusclient"
}
}
},
"dependencies": {
"electron-compile": "^6.4.1"
},
"devDependencies": {
"babel-plugin-transform-async-to-generator": "^6.24.1",
"babel-preset-env": "^1.6.0",
"babel-preset-react": "^6.24.1",
"electron-prebuilt-compile": "1.7.5",
"eslint": "^3.19.0",
"eslint-config-airbnb": "^15.1.0",
"eslint-plugin-import": "^2.7.0",
"eslint-plugin-jsx-a11y": "^5.1.1",
"eslint-plugin-react": "^7.2.0"
}
}
Теперь с последним package.json я получаю свой исполняемый файл. Я могу установить его и когда я ищу в моих программах status-client
Я найду его.
Я не получаю никаких ошибок во время работы electron-forge make
Есть идеи, почему это происходит?
2 ответа
Это потому что /usr/bin/<name>
является символической ссылкой на /usr/lib/<name>/<name>
но исполняемый файл находится на /usr/lib/<name>/<productName>
,
Это делается здесь: https://github.com/unindented/electron-installer-debian/blob/master/src/installer.js#L232
options.bin
установлено в pkg.name по адресу: https://github.com/unindented/electron-installer-debian/blob/master/src/installer.js#L12
Мы можем исправить эту символическую ссылку, установив bin
собственностью electronInstallerDebian
:
{
"name": "application-name",
"productName": "Application Name",
...
"config": {
"forge": {
...
"electronInstallerDebian": {
"bin": "Application Name"
}
...
}
...
}
...
}
Одна проблема, которую я вижу, это:
{
"name": "application-name",
заменить "_"
"name": "application_name",
и попробуй еще раз.