如何在捆绑电子应用程序之前对其进行编码(对于Mac)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在捆绑电子应用程序之前对其进行编码(对于Mac)?相关的知识,希望对你有一定的参考价值。
我正在为Mac OS X开发一个Electron应用程序。我试图在将其作为.app
捆绑之前在本地开发时测试其自动更新功能。
我有一个我的应用程序的初始版本Foo.app
,以及.dmg
和.zip
,使用electron-builder
模块,用作更新。我托管了这些文件。我已经验证他们安装并正确运行。我有一个在本地运行的Squirrel服务器,它将返回指向.zip
的正确JSON有效负载。
为了在本地开发我的应用程序,我使用Webpack来转换我的网络资产,并使用electron@1.4.4
在Electron中启动这些资产。换句话说,在本地开发时,我不会发布捆绑的.app
;我正在启动一个开发服务器并在Electron中提供这些资产。该过程类似于运行$ electron .
。
在此行调用自动更新挂钩时会发生此问题:
autoUpdater.setFeedURL(feedURL)
此行引发电子错误,表示:
"Could not get code signature for running application."
好的,所以我进行搜索,看到有一些指南可以解释如何对应用程序进行编码签名:
- http://jbavari.github.io/blog/2015/08/14/codesigning-electron-applications/
- https://github.com/electron-userland/electron-osx-sign/wiki/1.-Getting-Started
- https://discuss.atom.io/t/electron-app-signing-procedure/19124
但是,这些表明我应该编码签署.app
。正如我所说,我试图在将其捆绑为.app
之前测试自动更新。我不想一次又一次地重建,直到我自动更新正常工作。
所以我做了另一个搜索,看到有几个论坛问题与我要求的或多或少相同:
- https://discuss.atom.io/t/problem-with-auto-updater/14537
- https://discuss.atom.io/t/could-not-get-code-signature-for-running-application/30405
- https://github.com/electron/electron/issues/7476
我无法通过挖掘这些线程来解决问题。我希望有人可以在捆绑之前给我一个明确的解决方案来签署Electron应用程序。
对于答案,我希望得到所有这些答案的明确答案:
- 是否可以在将其捆绑为
.app
之前对我的Electron应用程序进行编码?即,我将用$ electron .
启动的文件? - 如果有,怎么样?
- 如果没有,为什么?有没有办法加快测试?
远射,我还没有证实这一点。
Squirrel.Mac检查当前正在运行的应用程序[1]的签名,这是运行打包应用程序时的AppName.app/Contents/MacOS/AppName
可执行文件。这基本上是重命名的电子可执行文件。
但是当你运行electron .
时,它将从你的node/bin
目录运行可执行文件。默认情况下未对Electron进行签名,因此如果您对其进行签名,则自动更新程序可能会成功进行证书检查。
所以基本上:
- 找电子:
which electron
- 将工作目录更改为电子路径
- 用
codesign -s "Developer ID Application: YourCompanyName" electron
签署电子 - 使用
codesign -dvvv electron
验证代码签名
希望这应该削减它。
以上是关于如何在捆绑电子应用程序之前对其进行编码(对于Mac)?的主要内容,如果未能解决你的问题,请参考以下文章