Кодирование сборки Windows с помощью electronic-builder на Mac не работает

У меня возникает проблема с подписью кода сборки Windows .exe на Mac с использованием сертификата .p12, созданного Apple и хранящегося в связке ключей Mac.

Моя версия электронного сборщика: 20.28.1 И целевая сборка, которую я пытаюсь запустить, - это сборка Windows ia32.

Кодирование отлично работает для приложения Mac. Но при попытке подписать сборку Windows она не может ее подписать.

Если возможно, я хотел бы попробовать подписать сборку Windows на машине с macOS, поскольку я читал, что это возможно в документации (надеюсь, я правильно прочитал?)

После попытки кодирования я проверяю сборку, используя: codesign -dv [path/to/app/appname].exe

И всегда получайте (только для сборки Windows приложение Mac подписывает нормально): code object is not signed at all

Я занимаюсь сборкой как для Mac, так и для Windows, но на данный момент я создаю для Windows только архитектуру ia32. Вот как выглядит моя конфигурация сборки в моем package.json

"build": {
    "appId": "[my-app-id]",
    "files": [
      "public/**/*",
      "node_modules/**/*",
      "package.json"
    ],
    "directories": {
      "buildResources": "build/resources"
    },
    "mac": {
      "category": "public.app-category.productivity",
      "target": [
        "dmg",
        "zip"
      ],
      "publish": {
        "provider": "s3",
        "bucket": "[BUCKET_NAME]",
        "path": "my-path"
      }
    },
    "win": {
      "target": [
        {
          "target": "nsis",
          "arch": [
            "ia32"
          ]
        }
      ],
      "publish": {
        "provider": "s3",
        "bucket": "[BUCKET NAME]",
        "path": "my-path"
      }
    },
    "extends": null
  },

А вот как выглядит мой файл .env, куда я загружаю переменные окружения для electronic-builder:

export ENV_NAME=staging

export CSC_NAME='[certificatename]' #example 1A3JKJD89O
export CSC_LINK=./path/to/mycert/cert.p12
export CSC_KEY_PASSWORD='my-passowrd'
export WIN_CSC_LINK=./path/to/mycert/cert.p12
export WIN_CSC_KEY_PASSWORD='my-passowrd'
export CSC_IDENTITY_AUTO_DISCOVERY=true
export DEBUG=electron-builder

export AWS_ACCESS_KEY_ID=[AWSKEYID]
export AWS_SECRET_ACCESS_KEY=[AWSSECRETACCESSKEY]
export AWS_S3_ENDPOINT=[S3ENDPOINT]

И, наконец, вот команда пряжи, которую я запускаю, чтобы упаковать сборку (это в скрипте пряжи)

export $(grep -v '^#' ./path/t/my/env/file/staging.env | xargs) && electron-builder -p never -mw --ia32 

Я не уверен, что мне здесь не хватает? Кто-нибудь знает, что мне еще нужно делать? Спасибо! :)


person Antonio de Perio    schedule 19.08.2018    source источник


Ответы (2)


Насколько я понимаю, вам нужно использовать совместимые сертификаты:

https://www.electron.build/code-signing

Чтобы подписать приложение в Windows, существует два типа сертификатов:

Сертификат подписи кода EV

Сертификат подписи кода

Лично получить правильный сертификат было сложно. Сертификат, который будет работать в Windows, получить непросто, мне пришлось оформить много документов, чтобы это сделать. Я надеюсь, что эта статья облегчит вам жизнь: https://blog.dcpos.ch/how-to-make-your-electron-app-sexy

Переходим в раздел: Подписанные установщики

Цитата из статьи:

Чтобы получить сертификат подписи Windows, мы рекомендуем Digicert. Документация для подписи приложений Windows на удивление плохая. Если вы выберете не того поставщика, они попросят вас отправить им нотариально заверенные документы. Это делает процесс получения сертификата медленным и утомительным. Digicert проще: они просто отправляют вам пароль по сертифицированной почте, вы идете в почтовое отделение, показываете свой идентификатор, чтобы забрать его, и бац, вы получаете сертификат подписи.

person galusben    schedule 19.08.2018
comment
Спасибо, gba, я получил стандартный сертификат от DigiCert, и это сработало. Спасибо! - person Antonio de Perio; 31.08.2018
comment
@AntoniodePerio. Вы получали какое-либо предупреждение о неизвестном редакторе в Windows после его подписания? - person Sergio Quintero; 19.07.2019
comment
@SergioQuintero нет, я этого не делал. В другом контексте я отказался от подписания и создания сборки Windows на Mac. У меня возникло слишком много проблем с полученным .exe, и было намного проще собрать Windows в Windows. Вероятно, это рекомендуемый путь, которым я бы пошел, если вы сейчас смотрите сборки окон Electron. Это также рекомендованное решение от компании-разработчика электроники. - person Antonio de Perio; 25.07.2019

Для тех, у кого возникли проблемы с получением сертификата для использования на вашем Mac, вот что сработало для меня: (в итоге я получил его через Windows, слишком беспорядочно получать сертификат через Mac)

  1. Используйте IE 11 в Windows, чтобы ЗАПРОСИТЬ сертификат (он должен автоматически сгенерировать его через предпочитаемый вами веб-сайт поставщиков сертификатов (я использую Comodo, так как вам не нужно ждать, пока они отправят USB-накопитель)
  2. После того, как они выдадут вам сертификат, используйте ссылку электронной почты, отправленную вам поставщиками сертификатов, и откройте в том же браузере, через который вы ее запросили. На нем должно быть написано «успех», но визуально ничего другого не произойдет.
  3. Откройте настройки IE, найдите сертификаты в «содержимом» и экспортируйте их как .PFX С закрытым ключом. (вам нужно будет указать пароль)
  4. Скопируйте сертификат на свой Mac и откройте в связке ключей.
  5. Наконец, теперь вы можете экспортировать его в формат .p12 и сохранить в своем каталоге, как указано в вашем приложении, и создать / подписать приложение с помощью вашей команды сборки.

Если кто-нибудь знает способ попроще, поделитесь, пожалуйста!

person Ryan    schedule 17.04.2021