Не могу добавить значок в приложение Electron с помощью Electron Builder

Я сделал приложение с помощью Electron и пытаюсь упаковать его с помощью Electron Builder.

Ссылка на репозиторий

Не содержит папку node_modules: здесь

У меня есть папка build с моим icon.ico в ней, а мой package.json выглядит следующим образом:

{
    "name": "attendant",
    "productName": "Attendant",
    "version": "0.1.0",
    "description": "A simple app to streamline web development by allowing you index.html to open on a live server in the default browser",
    "main": "main.js",
    "scripts": {
        "start": "electron .",
        "pack": "electron-builder --dir",
        "dist": "electron-builder"
    },
    "devDependencies": {
        "electron": "^8.0.1",
        "electron-builder": "^22.3.2"
    },
    "build": {
        "appId": "com.attendant",
        "win": {
            "icon": "./build/icon.png",
            "title": "Attendant",
            "msi": true
        }
    }
}

Однако я получаю следующую ошибку:

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Есть идеи, почему это происходит и как это исправить?

Со следующим package.json:

{
    "name": "attendant",
    "productName": "Attendant",
    "version": "0.1.0",
    "description": "A simple app to streamline web development by allowing you index.html to open on a live server in the default browser",
    "main": "main.js",
    "scripts": {
        "start": "electron .",
        "pack": "electron-builder --dir",
        "dist": "electron-builder build"
    },
    "devDependencies": {
        "electron": "^8.0.1",
        "electron-builder": "^22.3.2"
    },
    "build": {
        "appId": "com.attendant",
        "directories": {
            "buildResources": "build"
        },
        "win": {
            "icon": "build/icon.png",
            "title": "Attendant",
            "msi": true
        }
    }
}

Я получаю сообщение об ошибке:

yarn dist
yarn run v1.22.0
warning package.json: No license field
$ electron-builder build
  • electron-builder  version=22.3.2 os=10.0.18363
  • loaded configuration  file=package.json ("build" field)
  • author is missed in the package.json  appPackageFile=C:\Users\alexr\Documents\GitHub\attendant-app\app\package.json
  ⨯ Invalid configuration object. electron-builder 22.3.2 has been initialised using a configuration object that 
does not match the API schema.
 - configuration.win should be one of these:
   object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? } | null
   -> Options related to how build Windows targets.
   Details:
    * configuration.win has an unknown property 'title'. These properties are valid:
      object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, 
generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? }
    * configuration.win has an unknown property 'msi'. These properties are valid:
      object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, 
generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? }
     How to fix:
     1. Open https://www.electron.build/configuration/win
     2. Search the option name on the page (or type in into Search to find across the docs).
       * Not found? The option was deprecated or not exists (check spelling).
       * Found? Check that the option in the appropriate place. e.g. "title" only in the "dmg", not in the root. 
  stackTrace=























                                                                   ValidationError: Invalid configuration object. electron-builder 22.3.2 has been initialised using a configuration object that does not match the API schema.   























                                                                    - configuration.win should be one of these:  























                                                                      object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? } | null























                                                                      -> Options related to how build Windows targets.























                                                                      Details:























                                                                       * configuration.win has an unknown property 'title'. These properties are valid:























                                                                         object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? }























                                                                       * configuration.win has an unknown property 'msi'. These properties are valid:























                                                                         object { additionalCertificateFile?, appId?, artifactName?, asar?, asarUnpack?, certificateFile?, certificatePassword?, certificateSha1?, certificateSubjectName?, compression?, cscKeyPassword?, cscLink?, detectUpdateChannel?, electronUpdaterCompatibility?, extraFiles?, extraResources?, fileAssociations?, files?, forceCodeSigning?, generateUpdatesFilesForAllChannels?, icon?, legalTrademarks?, protocols?, publish?, publisherName?, releaseInfo?, requestedExecutionLevel?, rfc3161TimeStampServer?, sign?, signAndEditExecutable?, signDlls?, signingHashAlgorithms?, target?, timeStampServer?, verifyUpdateCodeSignature? }























                                                                        How to fix:























                                                                        1. Open https://www.electron.build/configuration/win























                                                                        2. Search the option name on the page (or type in into Search to find across the docs).























                                                                          * Not found? The option was deprecated 
or not exists (check spelling).























                                                                          * Found? Check that the option in the appropriate place. e.g. "title" only in the "dmg", not in the root.















































                                                                       at validate (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\@develar\schema-utils\dist\validate.js:50:11)























                                                                       at validateConfig (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\util\config.ts:229:3)























                                                                       at Packager._build (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\packager.ts:342:5)























                                                                       at Packager.build (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\packager.ts:337:12)























                                                                       at executeFinally (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\node_modules\builder-util\src\promise.ts:12:14)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Редактировать номер 2

Я получаю следующую ошибку:

yarn run v1.22.0
warning package.json: No license field
$ electron-builder build
  • electron-builder  version=22.3.2 os=10.0.18363
  • loaded configuration  file=package.json ("build" field)
  • author is missed in the package.json  appPackageFile=C:\Users\alexr\Documents\GitHub\attendant-app\app\package.json
  • writing effective config  file=dist\builder-effective-config.yaml
  • packaging       platform=win32 arch=x64 electron=8.0.1 appOutDir=dist\win-unpacked
  • asar usage is disabled — this is strongly not recommended  solution=enable asar and use asarUnpack to unpack 
files that must be externally available
  ⨯ cannot execute  cause=exit status 1
                    errorOut=Fatal error: Unable to commit changes

                    command='C:\Users\alexr\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.5.0\rcedit-x64.exe' 'C:\Users\alexr\Documents\GitHub\attendant-app\app\dist\win-unpacked\Attendant.exe' --set-version-string FileDescription Attendant --set-version-string ProductName Attendant --set-version-string LegalCopyright 'Copyright © 2020 Attendant' --set-file-version 1.1.0 --set-product-version 1.1.0.0 --set-version-string InternalName Attendant --set-version-string OriginalFilename '' --set-icon 'C:\Users\alexr\Documents\GitHub\attendant-app\app\dist\.icon-ico\icon.ico'
                    workingDir=
  ⨯ C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE  stackTrace=

                                                  Error: C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE

                                                      at ChildProcess.<anonymous> (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\node_modules\builder-util\src\util.ts:239:14)

                                                      at Object.onceWrapper (events.js:313:26)

                                                      at ChildProcess.emit (events.js:223:5)

                                                      at maybeClose (internal/child_process.js:1021:16)

                                                      at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)

                                                  From previous event:

                                                      at processImmediate (internal/timers.js:439:21)

                                                  From previous event:

                                                      at WinPackager.signApp (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\winPackager.ts:357:27)

                                                      at WinPackager.doPack (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\platformPackager.ts:243:16)

                                                      at WinPackager.pack (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\platformPackager.ts:114:5)

                                                      at Packager.doBuild (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\packager.ts:444:9)

                                                      at executeFinally (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\node_modules\builder-util\src\promise.ts:12:14)

                                                      at Packager._build (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\packager.ts:373:31)

                                                      at Packager.build (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\src\packager.ts:337:12)

                                                      at executeFinally (C:\Users\alexr\Documents\GitHub\attendant-app\app\node_modules\app-builder-lib\node_modules\builder-util\src\promise.ts:12:14)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

спасибо за поддержку до сих пор


person Alex Hawking    schedule 18.02.2020    source источник
comment
Вам нужна только конфигурация Windows или? и я надеюсь, что вам не нужен установщик. Верно?   -  person Gokulakannan T    schedule 18.02.2020
comment
Попробуйте абсолютный путь вместо относительного пути   -  person Gokulakannan T    schedule 18.02.2020


Ответы (2)


"build":{
    "productName":"yourProductName",
    "appId":"org.yourProductName",
    "dmg":{
        "contents":[
            {
                "x":130,
                "y":220
            },
            {
                "x":410,
                "y":220,
                "type":"link",
                "path":"/Applications"
            }
        ]
    },
    "win":{
        "target":[
            "nsis",
            "msi"
        ]
    },
    "linux":{
        "target":[
            "deb",
            "rpm",
            "snap",
            "AppImage"
        ],
        "category":"Development"
    },
    "directories":{
        "buildResources":"resources",
        "output":"release"
    },
    "files: ["resources/**/*"], // including buildResources folder in order to use this in the code
        },"

Я приложил пример конфигурации электронного строителя, который я настроил для своего проекта раньше. Пожалуйста, учтите эту часть

"directories": {
    "buildResources": "resources",
    "output": "release"
}

buildResources должен включать файлы ресурсов, например значки. Если вы не собираетесь устанавливать это buildResources вручную, то по умолчанию будет build. output указывает, где будет упакованное приложение после упаковки, и это необязательно для вашей проблемы. Как бы то ни было, я настроил проект на создание артефактов выпуска в папке выпуска.

В этом проекте я сохраняю значки в корневом каталоге проекта, как показано ниже. Я не знаю, где находятся ваши файлы значков, поэтому я прикрепил структуру проекта, которая работает с этой конфигурацией сборки.

введите описание изображения здесь

person tpikachu    schedule 20.02.2020
comment
спасибо за ответ, теперь я получаю следующую ошибку: ⨯ Application entry file "main.js" in the "C:\Users\alexr\Desktop\app-test\release\win-unpacked\resources\app.asar" does not exist. Seems like a wrong configuration. - person Alex Hawking; 21.02.2020
comment
@Alex Hawking Убедитесь, что main.js существует в вашем корневом каталоге. - person tpikachu; 21.02.2020
comment
Вы можете увидеть main: main.js в своем package.json. - person tpikachu; 21.02.2020
comment
Этот main должен указывать на электрон main.js - person tpikachu; 21.02.2020
comment
У меня "main": "main.js" в моем package.json и моем main.js в том же каталоге, что и мой yarn.lock (основной каталог) - person Alex Hawking; 21.02.2020
comment
@AlexHawking у вас есть репо на github? Могу я проверить структуру вашего проекта? если ты не против? - person tpikachu; 21.02.2020
comment
Да, конечно, я загружу его, в настоящее время он локальный, ага, спасибо за вашу помощь - person Alex Hawking; 21.02.2020
comment
Я добавил ссылку на репо в ответ - person Alex Hawking; 22.02.2020
comment
@AlexHawking Я создал пул-реквест и проверил это. - person tpikachu; 22.02.2020
comment
Или вы можете просто скопировать указанную выше конфигурацию сборки в свой package.json. - person tpikachu; 22.02.2020
comment
У меня такая же ошибка ⨯ Файл записи приложения main.js в /Users/zestgeek1/Desktop/mng-agent/dist/mac/mng-agent.app/Contents/Resources/app.asar не существует. Похоже на неправильную конфигурацию. stackTrace = - person Love Trivedi; 19.01.2021
comment
моя структура папок {my-project -dist -node_modules -release-builds -resources -index.html -main.js -package-lock.json -package.json} - person Love Trivedi; 19.01.2021

Я только что просмотрел ваши журналы и обнаружил ошибку ниже,

configuration.win has an unknown property 'title'. These properties are valid:

Название приложения должно быть указано в свойстве productName. Ключевое слово title недействительно согласно документу.

Кроме того, я выяснил, что в конфигурациях сборки отсутствует buildResources. Я рекомендую использовать .ico файл для значков вместо png изображений.

"scripts": {
    "start": "electron .",
    "pack": "electron-builder --dir",
    "dist": "electron-builder build"
},
"build": {
    "productName": "Attendant",
    "appId": "com.experiment.attendant",
    "directories": {
        "buildResources": "build"
    },
    "files": [
      "build/**/*",
    ],
    "win": {
        "asar": false,
        "target": "nsis",
        "icon": "build/icon.ico"
    },
    "nsis": {
      "installerIcon": "build/icon.ico",
      "installerHeaderIcon": "build/icon.ico",
      "deleteAppDataOnUninstall": true
    },
}

Для получения дополнительных конфигураций,

  1. Общие конфигурации
  2. Конфигурации Windows

См. Рабочий пример для конфигураций Windows и Linux. GITHUB

person Gokulakannan T    schedule 18.02.2020
comment
@AlexHawking Приведенных журналов ошибок недостаточно. Добавьте полные журналы сбоев, которые, возможно, помогут нам найти проблему. - person Gokulakannan T; 19.02.2020
comment
Я бегу yarn dist - person Alex Hawking; 19.02.2020
comment
@AlexHawking, Можете ли вы отредактировать свой вопрос с полными логами терминала? - person Gokulakannan T; 19.02.2020
comment
@AlexHawking, я обновил ответ на основе отредактированного вопроса. - person Gokulakannan T; 19.02.2020
comment
Я попробовал ваше предложение и теперь получаю сообщение об ошибке, обновленное в моем вопросе, также спасибо за вашу помощь. - person Alex Hawking; 20.02.2020
comment
@AlexHawking, файл иконки должен быть в формате .ico. См. ссылку под fileAssociations. - person Gokulakannan T; 20.02.2020
comment
Преобразуйте файл .png в файл .ico и убедитесь, что файл присутствует в папке сборки. Кроме того, я соответствующим образом отредактировал ответ - person Gokulakannan T; 20.02.2020
comment
@AlexHawking, github.com/gokulakannant/text-to-speech. Это мой рабочий экспериментальный проект на electronicjs. Здесь все конфигурации windows и linux работают. Вы можете пройти через конфигурации сборки package.json - person Gokulakannan T; 20.02.2020