如何在捆绑电子应用程序之前对其进行编码(对于Mac)?

时间:2017-01-17 15:08:49

标签: javascript macos electron

我正在为Mac OS X开发一个Electron应用程序。我试图在本地开发时测试其自动更新功能,在将其捆绑为.app 之前。

我有一个已构建的应用程序初始版本Foo.app,以及.dmg.zip,使用electron-builder模块作为更新。我托管了这些文件。我已经验证他们安装并正确运行。我有一个在本地运行的Squirrel服务器,它将返回指向.zip的正确JSON有效负载。

为了在本地开发我的应用程序,我使用Webpack来转换我的Web资产,并使用electron@1.4.4在Electron中启动这些资产。换句话说,在本地开发时,我没有启动捆绑的.app;我正在启动一个开发服务器并在Electron中提供这些资产。该过程类似于运行$ electron .

在此行调用自动更新挂钩时会出现问题:

autoUpdater.setFeedURL(feedURL)

此行引发电子错误,表示:

"Could not get code signature for running application."

好的,所以我进行搜索,看到有一些指南可以解释如何对应用程序进行编码签名:

但是,这些表明我应该对.app进行编码。正如我所说,我试图在之前测试自动更新,我将其捆绑为.app。我希望不要一次又一次地重建,直到我自动更新正常工作。

所以我做了另一次搜索,看到有几个论坛问题与我的问题大致相同:

我无法通过挖掘这些线程来解决问题。我希望有人可以在捆绑之前给我一个明确的解决方案来签署Electron应用程序。

要获得答案,我希望能够对所有这些做出明确答复:

  • 是否可以在将我的Electron应用程序捆绑为.app之前对其进行编码?即,我将使用$ electron .
  • 启动的文件
  • 如果是,怎么样?
  • 如果没有,为什么?有没有办法加快测试呢?

1 个答案:

答案 0 :(得分:1)

远射,我还没有证实这一点。

Squirrel.Mac检查当前正在运行的应用程序[1]的签名,这是运行打包应用程序时的AppName.app/Contents/MacOS/AppName可执行文件。这基本上是一个重命名的电子可执行文件。

但是当你运行electron .时,它将从你的node/bin目录运行可执行文件。 Electron未默认签名,因此如果您签名,则自动更新程序可能会通过证书检查成功。

基本上如此:

  1. 查找电子:which electron
  2. 将工作目录更改为电子路径
  3. 使用codesign -s "Developer ID Application: YourCompanyName" electron
  4. 签署电子邮件
  5. 使用codesign -dvvv electron
  6. 验证代码签名

    希望这应该削减它。