electron本地部署可能会存在不同服务器地址,就需要更换ip,更换ip就要再次打包,安装后在安装目录暴露一个可配置的自定义配置文件,用于更换ip。
1.创建当前最外层文件夹
文件目录:
文件内容:
ip=http://192.168.110.61:8886
websocket=192.168.110.61:8886
2.读取文件内容
创建index.js 文件,exepath这是安装地址,可通过app.getAppPath()获取。 文件内容:
//引入node原生fs模块
const fs = require("fs");
// 引入node内置的path模块
const path = require("path");
//引入node原生读写配置
const ini = require("ini");
/* 执行node命令时候的文件夹地址 */
const node_serve_path = process.cwd();
/* 判断是否是生产环境 */
const isDev = process.env.NODE_ENV === "development";
/* 需要读写的文件地址 */
let file_path = "";
let resourcesPath = "";
// 读取配置文件
export function readFile(exepath) {
resourcesPath = path.dirname(exepath) + path.sep;
file_path = isDev
? path.join(resourcesPath, "/conf/application.properties")
: path.join(resourcesPath, "/conf/application.properties");
return new Promise((resolve, reject) => {
fs.readFile(file_path, "utf8", function (err, dataStr) {
if (err) return reject(err.message); //读取失败
/* application.properties 文件内容符合ini配置文件的格式,
就可以通过ini.parse把读取到的文件转成js可识别的对象 */
resolve(ini.parse(dataStr.toString()));
});
});
}
// 更改配置文件
export function writeFile(config) {
return new Promise((resolve, reject) => {
fs.writeFile(file_path, ini.stringify(config), function (err) {
if (err) return reject(err.message); //写入失败
resolve("写入成功");
});
});
}
- 调用在background.js 文件中调用
import { app, protocol, BrowserWindow, ipcMain, dialog } from "electron";
import { readFile } from "./electron/config";
// 执行完成后new BrowserWindow 调用
// 加载配置文件
readFile(app.getAppPath()).then((res) => {
config = res;
// 获取后存在electronStore 里面
electronStore.set("configFile", res);
})
- 在项目中获取
const ElectronStore = require("electron-store");
const electronStore = new ElectronStore({ encryptionKey: "r23rfdsa" });
electronStore.get("configFile");
- 打包部分,在pluginOptions=>electronBuilder=>builderOptions增加extraResources: ["./conf"]
6. 打包安装后的文件目录和文件地址
文件地址在安装目录 resources/conf 下面