我正在为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应用程序。
要获得答案,我希望能够对所有这些做出明确答复:
.app
之前对其进行编码?即,我将使用$ electron .
?答案 0 :(得分:1)
远射,我还没有证实这一点。
Squirrel.Mac检查当前正在运行的应用程序[1]的签名,这是运行打包应用程序时的AppName.app/Contents/MacOS/AppName
可执行文件。这基本上是一个重命名的电子可执行文件。
但是当你运行electron .
时,它将从你的node/bin
目录运行可执行文件。 Electron未默认签名,因此如果您签名,则自动更新程序可能会通过证书检查成功。
基本上如此:
which electron
codesign -s "Developer ID Application: YourCompanyName" electron
codesign -dvvv electron
希望这应该削减它。