// Electron 预加载脚本:以 contextBridge 向渲染进程暴露最小桌面端 API // 前端凭 window.desktop 是否存在来区分「桌面端 / 浏览器」两种运行环境 const { contextBridge, ipcRenderer } = require('electron') // 同步读取后端服务器地址:必须在页面脚本执行前就绪(axios/WS 初始化要用) const serverBase = ipcRenderer.sendSync('nlg:get-server-base') contextBridge.exposeInMainWorld('desktop', { // 后端服务器地址(形如 http://127.0.0.1:8080,结尾不带斜杠) serverBase, // 修改服务器地址(校验通过后主进程会自动重载页面) setServerBase: (url) => ipcRenderer.invoke('nlg:set-server-base', url), // 检查桌面端新版本(silent=true 时已是最新版不弹窗,用于启动自动检查) checkUpdate: (silent = false) => ipcRenderer.invoke('nlg:check-update', silent), // 取消正在进行的更新下载 cancelUpdateDownload: () => ipcRenderer.invoke('nlg:cancel-update-download'), // 运行环境版本信息 versions: { electron: process.versions.electron, chrome: process.versions.chrome, }, })