NWJS从0.37.3升级至0.56.0后丢失Google App ID的解决方案咨询
解决方案
方法1:保留原有chrome.runtime.id
NWJS 0.40+版本调整了应用ID的生成规则,原有仅在manifest中配置key的方式需要配合签名打包才可生效:
- 准备好生成原有key对应的私钥文件(.pem格式),该文件是你最初生成Chrome应用密钥时的对应私钥,和manifest里的公钥是配对关系
- 打包时给nw-builder添加
--crx-key参数指定私钥路径,示例命令:
nwbuild --crx-key ./your-private-key.pem .
- 确认manifest中
key字段值和旧版本完全一致,无多余换行、空格或转义字符,完成以上操作后生成的应用就会沿用原有chrome.runtime.id。
方法2:强制指定用户数据目录(最稳妥,无需修改ID)
如果不想处理签名逻辑,可以直接固定应用的用户数据存储路径,只要路径和旧版本一致,所有本地文件、数据库、设置都不会丢失,和ID是否变化无关:
- 修改manifest中的
chromium-args配置,追加--user-data-dir参数,示例:
"chromium-args": "--ignore-certificate-errors --user-data-dir=\"<旧版本数据存储路径>\""
各系统默认旧版数据存储路径:
- Windows:
C:\Users\<用户名>\AppData\Local\<旧应用名称> - macOS:
~/Library/Application Support/<旧应用名称> - Linux:
~/.config/<旧应用名称>
你也可以通过NWJS的Node.js API动态获取系统默认路径,适配不同用户的设备环境。
备选迁移方案
如果上述两种方法都无法直接适配,你可以利用nodejs: true的权限,在新版应用第一次启动时,主动读取旧版数据目录的所有内容,复制写入到新版应用的默认数据目录中,完成数据迁移后再启动业务逻辑。
内容的提问来源于stack exchange,提问作者Fabiano Taioli
相关产品推荐
相关产品推荐

