Столкновение CFBundleIdentifier при загрузке приложения macOS, разработанного с помощью Electron и созданного с помощью электронного компоновщика - PullRequest
0 голосов
/ 15 сентября 2018

В настоящее время я занимаюсь разработкой приложения Electron и могу сгенерировать .app и .pkg для операционных систем macOS. Хотя я могу запустить его из сгенерированного .app, при попытке загрузить .pkg ( mas ) я получаю следующую ошибку в AppStore Connect:

CFBundleIdentifier Collision - 
The Info.plist CFBundleIdentifier value 'org.phantomjs' of 'phantomjs'
is already in use by another application.

Я попытался обновить Электрон до последней стабильной версии (2.0.9) и обновить строитель электронов до последней версии ( 20.28.4) . Я попытался найти строку org.phantomjs в полученном .app , и мне не удалось найти Info.plist с этим идентификатором пакета

Здесь я прилагаю свой package.json на случай, если он будет полезен:

{
  "name": "myAppName",
  "version": "0.0.1",
  "author": "Me <me@mymail.com>",
  "description": "My Description",
  "license": "MIT",
  "main": "./dist/electron/main.js",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/****.git"
  },
  "scripts": {
    "build": "node .electron-vue/build.js && electron-builder",
    "build:dir": "node .electron-vue/build.js && electron-builder --dir",
    "build:clean": "cross-env BUILD_TARGET=clean node .electron-vue/build.js",
    "build:web": "cross-env BUILD_TARGET=web node .electron-vue/build.js",
    "dev": "node .electron-vue/dev-runner.js",
    "lint": "eslint --ext .js,.vue -f ./node_modules/eslint-friendly-formatter src",
    "lint:fix": "eslint --ext .js,.vue -f ./node_modules/eslint-friendly-formatter --fix src",
    "pack": "npm run pack:main && npm run pack:renderer",
    "pack:main": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.main.config.js",
    "pack:renderer": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.renderer.config.js",
    "postinstall": "npm run lint:fix"
  },
  "build": {
    "productName": "myAppName",
    "appId": "this.is.a.real.appid",
    "buildVersion": "5",
    "directories": {
      "output": "build"
    },
    "files": [
      "dist/electron/**/*"
    ],
    "dmg": {
      "contents": [
        {
          "x": 410,
          "y": 150,
          "type": "link",
          "path": "/Applications"
        },
        {
          "x": 130,
          "y": 150,
          "type": "file"
        }
      ]
    },
    "mac": {
      "icon": "build/icons/icon.icns",
      "category": "public.app-category.developer-tools",
      "target": [
        {
          "target": "mas"
        }
      ]
    },
    "mas": {
      "entitlements": "build/entitlements.mas.plist",
      "entitlementsInherit": "build/entitlements.mas.inherit.plist",
      "icon": "build/icons/icon.icns",
      "category": "public.app-category.developer-tools"
    },
    "win": {
      "icon": "build/icons/icon.ico",
      "target": [
        {
          "target": "nsis"
        },
        {
          "target": "appx"
        }
      ]
    },
    "linux": {
      "icon": "build/icons"
    },
    "fileAssociations": [
      {
        "ext": "myExtension",
        "name": "My Project",
        "description": "File containing a My Project.",
        "icon": "build/icons/Project.icns",
        "role": "Editor",
        "isPackage": true
      }
    ],
    "copyright": "Copyright © 2018 Me"
  },
  "dependencies": {
    "@appshuttle.io/bell": "0.0.12",
    "@appshuttle.io/pollock": "0.0.28",
    "@appshuttle.io/turing": "0.0.16",
    "@fortawesome/fontawesome-svg-core": "^1.2.2",
    "@fortawesome/free-brands-svg-icons": "^5.0.13",
    "@fortawesome/free-regular-svg-icons": "^5.0.13",
    "@fortawesome/free-solid-svg-icons": "^5.0.13",
    "@fortawesome/vue-fontawesome": "0.1.1",
    "axios": "^0.16.1",
    "electron-updater": "^3.0.3",
    "email-validator": "^2.0.4",
    "grunt": "^1.0.3",
    "nedb": "^1.8.0",
    "p5": "^0.6.1",
    "path": "^0.12.7",
    "spectre.css": "^0.5.3",
    "vue": "^2.3.3",
    "vue-color": "^2.4.6",
    "vue-electron": "^1.0.6",
    "vue-router": "^2.5.3",
    "vuedraggable": "^2.16.0",
    "vuex": "^2.3.1"
  },
  "devDependencies": {
    "babel-core": "^6.26.3",
    "babel-eslint": "^7.2.3",
    "babel-loader": "^7.1.5",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-env": "^1.7.0",
    "babel-preset-stage-0": "^6.24.1",
    "babel-register": "^6.24.1",
    "babili-webpack-plugin": "^0.1.2",
    "cfonts": "^1.2.0",
    "chalk": "^2.4.1",
    "copy-webpack-plugin": "^4.5.2",
    "cross-env": "^5.2.0",
    "css-loader": "^0.28.11",
    "del": "^3.0.0",
    "devtron": "^1.4.0",
    "electron": "^2.0.0",
    "electron-builder": "20.28.4",
    "electron-debug": "^2.0.0",
    "electron-devtools-installer": "^2.2.4",
    "eslint": "^4.19.1",
    "eslint-config-standard": "^10.2.1",
    "eslint-friendly-formatter": "^3.0.0",
    "eslint-loader": "^1.9.0",
    "eslint-plugin-html": "^3.1.1",
    "eslint-plugin-import": "^2.13.0",
    "eslint-plugin-node": "^5.1.1",
    "eslint-plugin-promise": "^3.8.0",
    "eslint-plugin-standard": "^3.1.0",
    "extract-text-webpack-plugin": "^3.0.0",
    "file-loader": "^0.11.2",
    "html-webpack-plugin": "^2.30.1",
    "mini-css-extract-plugin": "^0.4.1",
    "multispinner": "^0.2.1",
    "node-loader": "^0.6.0",
    "node-sass": "^4.9.2",
    "sass-loader": "^6.0.7",
    "style-loader": "^0.18.2",
    "url-loader": "^0.5.9",
    "vue-html-loader": "^1.2.4",
    "vue-loader": "^15.4.0",
    "vue-style-loader": "^3.0.1",
    "vue-template-compiler": "^2.4.2",
    "webpack": "^3.12.0",
    "webpack-dev-server": "^2.7.1",
    "webpack-hot-middleware": "^2.22.3"
  }
}

Заранее большое спасибо!

1 Ответ

0 голосов
/ 18 сентября 2018

Нашел решение (как упомянуто @countravioli в этом выпуске Github ):

Я обнаружил, что существует файл с именем app.asar.unpacked, который содержит несколько идентификаторов пакетов, как только .pkg был создан и подписан.Удаление этого файла в .app и последующее создание .pkg не работало для меня, поэтому я использовал Build Hook, как предложено в выпуске Github.Для предотвращения вставки файла в файл .pkg.Для этого я добавил хук в секцию сборки моего package.json в конце остального его содержимого:

package.json
{ //package.json Root ...
   build: {
      // build content ...
      "afterPack": "./afterPack.js"
   }
}

Затем создал файл с именем afterPack.js в папке, где мойpackage.json находится со следующим содержимым:

const fs = require('fs');
const fse = require('fs-extra');
const path = require('path');
module.exports = function (params) {
    const unpackFile = path.join(params.appOutDir, 'YOUR_APP_NAME.app/Contents/Resources/app.asar.unpacked');
    console.log('EXISTS?', fs.existsSync(unpackFile));
    console.log("REMOVE", unpackFile);
    fse.removeSync(unpackFile);
};

Я смог загрузить пакет в AppStore Connect без каких-либо проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...