0

我正在使用electron-forge创建电子应用程序并为我的项目创建可分发文件。但是我遇到了一个奇怪的错误。我namepackage.jsonid中的领域,我的领域status-client也是如此productName

当我运行 electron-forge make 时,有了这些值,我得到了我的可执行文件,然后我可以像魅力一样安装它,并Utilities在 Ubuntu 的部分中找到我的应用程序。

但是,当我更改文件中的productName字段时,问题就来了。package.json将创建可执行文件我可以安装它,但是如果我用新名称搜索我的应用程序,我无法在任何地方找到它。

这是我的新的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我会找到它。

我在运行 Any Ideas 时没有收到任何错误,electron-forge make 为什么会这样?

4

2 回答 2

0

我能看到的一个问题是:

   {
     "name": "application-name",

用。。。来代替 ”_”

"name": "application_name", 

然后再试一次。

于 2018-02-07T02:57:16.173 回答
0

那是因为/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"
            }
            ...
        }
        ...
    }
    ...
}
于 2018-02-06T15:28:42.313 回答