electron - 在 Electron-Builder 应用程序中使用带有 sqlite3 的 sqlcipher
问题描述
背景
我正在尝试在 Electron 应用程序中使用 sqlite3 和 sqlcipher 加密我的 sqlite 数据库。
在 sqlite3 npm 页面上
它说要像这样安装构建,
纱线添加 sqlite3@4.0.8 --build-from-source --sqlite_libname=sqlcipher --sqlite=
brew --prefix
--runtime=electron --target=4.0.0 --dist-url= https://atom.io/download /电子
我已经用 home brew 安装了 sqlcipher。
brew install sqlcipher
问题示例
我正在尝试在我的 Electron 应用程序中创建一个这样的加密数据库,
const sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('./src/encryptedDB.sql');
db.serialize(function() {
db.run("PRAGMA KEY = 'secret'");
db.run("PRAGMA CIPHER = 'aes-256-cbc'");
db.run('CREATE TABLE IF NOT EXISTS clients (info TEXT)');
var stmt = db.prepare('INSERT INTO clients VALUES (?)');
for (var i = 0; i < 10; i++) {
stmt.run('wunO Background Client Number - ' + i);
}
stmt.finalize();
});
这不是创建加密数据库。我可以打开文件并查看其中的数据。
问题
我试图弄清楚这是否是我的语法的一个简单问题,或者当电子构建器在后台运行它时,它是不是很神奇,它正在重建 sqlite 并删除sqlcipher
构建。
如何创建可在 MacOS 和 Windows 上运行的加密 sqlite 构建。
解决方案
我可以打开文件并查看其中的数据。
由于它不要求任何类型的密码,因此数据库创建肯定存在问题。在 Electron-builder 的自述文件中指出
为确保您的本地依赖项始终匹配电子版本,只需将脚本“postinstall”:“electron-builder install-app-deps”添加到您的 package.json。
将以下行放入您的 package.json 并再次重复安装过程,这为我解决了问题。
"postinstall": "install-app-deps",
此外,我创建了一个小型 Vue + Electron + Vuetify + SQLite(带有 Seqlize 和 Sqlcipher)入门套件,其中包含您需要的所有东西。生成加密数据库的源代码可以在src/renderer/models.js
看一看。
推荐阅读
- microsoft-graph-api - MS Graph API - 创建联系人 401 问题
- bots - 如果成员没有角色,Discord.py 发送错误消息
- powerbi - 在 Power BI 中聚合时间字段
- php - 试图获得非对象的属性“角色”
- python - 在我的 py 中表达一个返回字符串和值列表的字典
- amazon-cloudformation - 如何使用辅助 Buildspec 文件
- spring-boot - Spring Boot junit5 测试在本地工作(Windows)但不在 Jenkins(Linux)中
- reactjs - 使用分块工具上传 React 文档
- java - 改造接口反序列化
- git - 如何在不下载其父文件夹的情况下签出或克隆文件夹