首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电子公证问题未签署所有二进制文件

电子公证问题未签署所有二进制文件
EN

Stack Overflow用户
提问于 2020-10-02 08:41:00
回答 1查看 2.4K关注 0票数 3

我在电子公证方面有奇怪的问题。我遵循了这个页面上的教程:https://kilianvalkhof.com/2019/electron/notarizing-your-electron-application/

它看起来很彻底,所以我不知道我错过了什么。在notarize.js之前,一切都很好:

代码语言:javascript
复制
require('dotenv').config();
const { notarize } = require('electron-notarize');

exports.default = async function notarizing(context) {
  const { electronPlatformName, appOutDir } = context;  
  if (electronPlatformName !== 'darwin') {
    return;
  }

  const appName = context.packager.appInfo.productFilename;

  return await notarize({
    appBundleId: 'com.oriolgomez.beatstar',
    appPath: `${appOutDir}/${appName}.app`,
    appleId: process.env.APPLEID,
    appleIdPassword: process.env.APPLEIDPASS,
  });
};

公证日志如下所示:{ "logFormatVersion":1,"jobId":“de0d8e6d-2f5b-4937-b2eb-124b0e81281”,“状态”:“无效”,"statusSummary":“归档包含关键验证错误”,"statusCode":4000,"archiveFilename":"beatstar.zip","uploadDate":"2020-10-02T08:02:04Z","sha256":sha256 "ticketContents":null,“问题”:{“严重性”:“错误”,“代码”:空,“路径”:"beatstar.zip/beatstar.app/Contents/MacOS/beatstar",“消息”:“二进制文件没有使用有效的开发人员ID证书签名。”,"docUrl":null,“docUrl”:"x86_64“},{”严重性“:”错误“,”代码“:null,”"beatstar.zip/beatstar.app/Contents/Frameworks/beatstar Helper (GPU)..app/Content/MacOS/beatstar Helper (GPU)",“消息”:“二进制文件没有使用有效的开发人员ID证书签名。”、"docUrl":null、"docUrl":null、"x86_64“}、{”严重性“:”错误“、”代码“:null、"path":path Framework.Framework/Versions/A/Framework.framework、"message":”二进制文件没有用有效的开发人员ID证书签名“、”docUrl“:null、"x86_64“},{”严重程度“:”错误“,”代码“:空,”路径“:"x86_64”消息:“二进制文件没有用有效的开发人员ID证书签名。”,"docUrl":null,“体系结构”:“x86_64”},{“严重性”:“错误”,“代码”:null,“路径”:"beatstar.zip/beatstar.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libEGL.dylib",“消息”:“二进制文件没有使用有效的开发人员ID证书签名。”,"docUrl":null,"x86_64“},{”严重性“:”错误“,”代码“:null,“路径”:"beatstar.zip/beatstar.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libvk_swiftshader.dylib",“消息”:“二进制文件没有使用有效的开发人员ID证书签名。”,"docUrl":null,"x86_64“},{”严重性“:”错误“,”代码“:null,“路径”:"beatstar.zip/beatstar.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib",“消息”:“二进制文件没有使用有效的开发人员ID证书签名。”,"docUrl":null,"x86_64“},{”严重性“:”错误“,”代码“:null,“路径”:"beatstar.zip/beatstar.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libswiftshader_libGLESv2.dylib",“消息”:“二进制文件没有使用有效的开发人员ID证书签名。”,"docUrl":null,"x86_64“},{”严重性“:”错误“,”代码“:null,“路径”:"beatstar.zip/beatstar.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib",“消息”:“二进制文件没有使用有效的开发人员ID证书签名。”,"docUrl":null,"x86_64“},{”严重性“:”错误“,”代码“:null,“路径”:"beatstar.zip/beatstar.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Helpers/chrome_crashpad_handler",“消息”:“二进制文件没有使用有效的开发人员ID证书签名。”,"docUrl":null,"x86_64“},{”严重性“:”错误“,”代码“:null,”路径“:"beatstar.zip/beatstar.app/Contents/Frameworks/Squirrel.framework/Versions/A/Squirrel",“消息”:“二进制文件没有用有效的开发人员ID证书签名。”,"docUrl":null,"docUrl":null,"x86_64“},{”严重性“:”错误“,”代码“:null,”path“消息:”二进制文件没有用有效的开发人员ID证书签名“,”docUrl“:null,"x86_64“},{”严重程度“:”错误“,”代码“:空,”路径“:"x86_64”消息:“二进制文件没有用有效的开发人员ID证书签名。”,"docUrl":null,“体系结构”:“x86_64”},{“严重性”:“错误”,“代码”:null,“路径”:"beatstar.zip/beatstar.app/Contents/Frameworks/Mantle.framework/Versions/A/Mantle",“消息”:“二进制文件没有使用有效的开发人员ID证书签名。”,"docUrl":null,"x86_64“},{”严重性“:”错误“,”代码“:null,"path":"beatstar.zip/beatstar.app/Contents/Frameworks/beatstar Helper.app/Content/MacOS/beatstar Helper,“消息”:“二进制文件没有用有效的开发人员ID证书签名。”、"docUrl":null、"docUrl":null、"x86_64“}、{”严重性“:”错误“、”代码“:null、"path":.app/Content/MacOS/beatstar Helper (插件)、"message":”二进制文件没有用有效的开发人员ID证书签名。“,”docUrl“:空,"x86_64“},{”严重性“:”错误“,”代码“:空,”路径“:x86_64 Helper (Renderer)..app/Content/MacOS/beatstar Helper (Renderer)","message":”二进制文件没有用有效的开发人员ID证书签名“,"docUrl":null,”docUrl“:"x86_64”}}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-26 15:13:50

我不知道我遇到这件事的原因是否和你的一样,但我发现,如果这对其他人有帮助的话。

在手动公证应用程序(使用电子公证)之前,请确保您正在签署应用程序的证书类型是正确的。您特别需要一个Developer ID Application证书(最后一个):

我以前使用过Apple Distribution,但是公证失败了。您所看到的文件列表可能是Apple检查的最初几个文件,它们是用不正确的证书类型签名的(请不要引用我的话),所以失败了。

无论哪种方式,一旦我生成了一个Developer ID Application证书,就可以这样定义我的应享权利:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.cs.allow-jit</key>
    <true/>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.apple.security.cs.allow-dyld-environment-variables</key>
    <true/>
    <key>com.apple.security.cs.disable-library-validation</key>
    <true/>
  </dict>
</plist>

并在我的build部分的package.json中使用此配置。

代码语言:javascript
复制
    "mac": {
      "category": "public.app-category.developer-tools",
      "icon": "assets/icon.png",
      "hardenedRuntime": true,
      "gatekeeperAssess": false,
      "entitlements": "assets/mac/entitlements.plist",
      "entitlementsInherit": "assets/mac/entitlements.plist"
    },
    "afterSign": "./scripts/notarizeApp.js",

我能让公证开始工作。

这就是我的notarizeApp脚本的样子,FWIW:

代码语言:javascript
复制
const path = require('path')
var notarize = require('electron-notarize')

module.exports = async function (params) {
  // Notarization only applies to macOS
  if (process.platform !== 'darwin') {
    return
  }

  let appId = '<your-app-id>'
  let appPath = path.join(
    params.appOutDir,
    `${params.packager.appInfo.productFilename}.app`
  )

  try {
    console.log(`  • Notarizing`)
    await notarize.notarize({
      appBundleId: appId,
      appPath: appPath,
      appleId: process.env.APPLE_ID_EMAIL,
      appleIdPassword: process.env.APPLE_ID_PASSWORD,
    })
  } catch (error) {
    console.error(error)
  }
}

这个应用程序非常有用,可以检查公证是否成功( https://eclecticlight.co/taccy-signet-precize-alifix-utiutility-alisma/ )

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64168569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档