Приложение 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", 

и попробуй еще раз.

Другие вопросы по тегам