我有一个电子应用程序,它最初是随个人开发人员的证书一起分发的。
我现在想使用我组织的证书签署该应用程序的下一个更新,但是当我这样做时,现有安装(在自动更新时)会抛出一个错误,即不满足代码要求。
有没有办法用旧证书和新证书正确签署电子应用程序?我想防止我现有的用户被打断。
任何帮助表示赞赏!
谢谢
我有一个电子应用程序,它最初是随个人开发人员的证书一起分发的。
我现在想使用我组织的证书签署该应用程序的下一个更新,但是当我这样做时,现有安装(在自动更新时)会抛出一个错误,即不满足代码要求。
有没有办法用旧证书和新证书正确签署电子应用程序?我想防止我现有的用户被打断。
任何帮助表示赞赏!
谢谢
我们遇到了类似的情况,MacOS 的 Electron 应用程序使用自动更新,我们需要切换到新证书,而不是让每个人都手动下载并重新安装应用程序。自动更新过程需要识别新证书。理所当然,如果新证书不被识别,旧版本将拒绝更新。
我们的策略是:
designated requirement应用程序的(或 DR),当使用旧证书签名时,使用codesign -d -v -r - <path-to-app>designated requirement使用新证书签名时查看应用程序的designated requirement包含两个证书的组合放入electron-builder-requirements.txt文件中identifier在组合designated requirement字符串中包含electron-builder-requirements.txt的electron-builder.yaml(在下面添加一行)mac:requirements: electron-builder-requirements.txtelectron-builder-requirements.txt文件具有包含两个证书信息的 DR 的旧版本应用程序将允许自动更新到使用任一证书的新版本。
我发现这份关于手动签署代码的文档有助于理解“指定要求”。
更新:这是文件的一个示例electron-builder-requirements.txt(出于隐私目的,我修改了一些字母/数字):
designated => certificate leaf = H"2323ce6b0XXXXXXXX39f2064be999999997272b1" or anchor apple generic and certificate 1[field.1.2.840.199995.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.199995.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = "6ZXXXXXXUY"