如何使用appdmg工具进行代码签名?

时间:2019-03-22 14:40:14

标签: macos code-signing dmg

如此处https://github.com/LinusU/node-appdmg所述,以创建dmg。

我没有为“代码签名”添加任何示例。

有人用它来创建dmg谁可以帮助我知道在这两个占位符中提供什么?我仍然想知道第二个是可选的。

{
  "title": "My App",
  "icon": "app.icns",
  "icon-size": 108,
  "background": "Resources/SplashScreen/dmg-background.png",
  "contents": [
    { "x": 450, "y": 150, "type": "link", "path": "/Applications" },
    { "x": 150, "y": 150, "type": "file", "path": "/My App.app" }
  ],
  "code-sign": [
     { "signing-identity" : ""},
     { "identifier" : ""}   
  ]
}

2 个答案:

答案 0 :(得分:0)

好吧,我从未使用过node-appdmg,但是文档中说:

  

代码签名(对象,可选)-对DMG进行代码签名的选项   signing-identity(字符串,必填)-用于对生成的DMG进行签名的身份

     

identifier(字符串,可选)-明确设置嵌入在代码签名中的唯一标识符字符串

您可以使用以下命令列出代码签名身份:

security find-identity -v -p codesigning

1) 4E8D512C8480FAC679947D6E50190AE9BAB3E825 "3rd Party Mac Developer Application: Developer Name (DUCNFCN445)"
2) 8B0EBBAE7E7230BB6AF5D69CA09B769663BC844D "Mac Developer: Developer Name (DUCNFCN445)"
3) 4E8D512C8480AAC67995D69CA09B769663BC844D "iPhone Developer: App Developer (DUCNFCN445)"
4) 65E24CDAF5B3E1E1480818CA4656210871214337 "Developer ID Application: App Developer (DUCNFCN445)"
   4 valid identities found

因此您可以指定这样的身份:

{ "signing-identity" : "Developer ID Application: App Developer (DUCNFCN445)"},

对于“标识符”,您可以参考此technical note。它说:

  

签名标识符也嵌入在DR中,如果未明确提供,则默认使用Info.plist中的CFBundleIdentifier。就代码签名而言,该标识符没有任何意义,除了作为使DR唯一的手段之外。

您的.dmg将没有捆绑包标识符。就我而言,它似乎默认为.dmg的名称(因此,我的.dmg为myproduct.dmg,默认标识符为myproduct)。

签名后,您可以像这样查看签名:

codesign -dv /path/to/myproduct.dmg

您将看到标识符:

  

Executable = / path / to / myproduct.dmg

     

Identifier = myproduct

     

Format =磁盘映像

     

...等等

答案 1 :(得分:0)

格式错误,应该是:

{
  "title": "My App",
  "icon": "app.icns",
  "icon-size": 108,
  "background": "Resources/SplashScreen/dmg-background.png",
  "contents": [
    { "x": 450, "y": 150, "type": "link", "path": "/Applications" },
    { "x": 150, "y": 150, "type": "file", "path": "/My App.app" }
  ],
  "code-sign": {
    "signing-identity" : "Developer ID Application: xxx",
    "identifier" : "<Your BundleID>"
  }
}