| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- // electron/preload.ts - Electron 预加载脚本
- import { contextBridge, ipcRenderer } from 'electron'
- import type { ElectronAPI } from './modules/types'
- // 向渲染进程暴露安全的 API
- const electronAPI: ElectronAPI = {
- // ==================== 安装相关 ====================
- // 安装指定软件
- install: (software, options) => ipcRenderer.invoke('install', software, options),
- // 取消安装
- cancelInstall: () => ipcRenderer.invoke('cancel-install'),
- // 检测软件是否已安装
- checkInstalled: (software) => ipcRenderer.invoke('check-installed', software),
- // 卸载软件
- uninstall: (software) => ipcRenderer.invoke('uninstall', software),
- // ==================== 系统检测 ====================
- // 检测管理员权限
- checkAdmin: () => ipcRenderer.invoke('check-admin'),
- // 检测包管理器
- checkPackageManager: () => ipcRenderer.invoke('check-package-manager'),
- // 安装包管理器
- installPackageManager: (manager) => ipcRenderer.invoke('install-package-manager', manager),
- // 获取平台信息
- getPlatform: () => ipcRenderer.invoke('get-platform'),
- // 检测网络连接
- checkNetwork: () => ipcRenderer.invoke('check-network'),
- // ==================== 版本 ====================
- // 获取软件版本列表
- getVersions: (software) => ipcRenderer.invoke('get-versions', software),
- // 检查更新
- checkUpdate: (software) => ipcRenderer.invoke('check-update', software),
- // ==================== Git 镜像配置 ====================
- // 设置 Git 镜像
- setGitMirror: (mirror) => ipcRenderer.invoke('set-git-mirror', mirror),
- // 获取 Git 镜像配置
- getGitMirrorConfig: () => ipcRenderer.invoke('get-git-mirror-config'),
- // ==================== Node.js 镜像配置 ====================
- // 设置 Node.js 镜像
- setNodejsMirror: (mirror) => ipcRenderer.invoke('set-nodejs-mirror', mirror),
- // 获取 Node.js 镜像配置
- getNodejsMirrorConfig: () => ipcRenderer.invoke('get-nodejs-mirror-config'),
- // ==================== 历史和日志 ====================
- // 获取安装历史
- getInstallHistory: (limit) => ipcRenderer.invoke('get-install-history', limit),
- // 获取日志
- getLogs: () => ipcRenderer.invoke('get-logs'),
- // 写入安装日志
- writeInstallLog: (message: string, level?: 'info' | 'warn' | 'error') => ipcRenderer.invoke('write-install-log', message, level),
- // 获取日志文件路径
- getLogPaths: () => ipcRenderer.invoke('get-log-paths'),
- // ==================== 窗口操作 ====================
- // 设置窗口标题
- setWindowTitle: (title) => ipcRenderer.invoke('set-window-title', title),
- // ==================== Claude Code ====================
- // 检测 Claude Code 是否已安装
- checkClaudeCode: () => ipcRenderer.invoke('check-claude-code'),
- // 启动 Claude Code (打开 Git Bash 并执行 claude 命令)
- launchClaudeCode: () => ipcRenderer.invoke('launch-claude-code'),
- // 安装 Claude Code
- installClaudeCode: () => ipcRenderer.invoke('install-claude-code'),
- // ==================== VS Code Extensions ====================
- // 检查 VS Code 插件是否已安装
- checkVscodeExtension: (extensionId: string) => ipcRenderer.invoke('check-vscode-extension', extensionId),
- // 安装 VS Code 插件
- installVscodeExtension: (extensionId: string) => ipcRenderer.invoke('install-vscode-extension', extensionId),
- // 选择文件夹
- selectDirectory: (defaultPath?: string) => ipcRenderer.invoke('select-directory', defaultPath),
- // 窗口最小化
- windowMinimize: () => ipcRenderer.invoke('window-minimize'),
- // 窗口最大化/还原
- windowMaximize: () => ipcRenderer.invoke('window-maximize'),
- // 关闭窗口
- windowClose: () => ipcRenderer.invoke('window-close'),
- // 获取窗口最大化状态
- windowIsMaximized: () => ipcRenderer.invoke('window-is-maximized'),
- // ==================== 事件监听 ====================
- // 监听安装状态
- onInstallStatus: (callback) => {
- ipcRenderer.on('install-status', (_event, data) => callback(data))
- },
- // 监听安装完成
- onInstallComplete: (callback) => {
- ipcRenderer.on('install-complete', (_event, data) => callback(data))
- },
- // 监听安装错误
- onInstallError: (callback) => {
- ipcRenderer.on('install-error', (_event, data) => callback(data))
- },
- // 监听网络状态变化
- onNetworkChange: (callback) => {
- ipcRenderer.on('network-change', (_event, online) => callback(online))
- },
- // 移除所有监听(避免内存泄漏)
- removeAllListeners: () => {
- ipcRenderer.removeAllListeners('install-status')
- ipcRenderer.removeAllListeners('install-complete')
- ipcRenderer.removeAllListeners('install-error')
- ipcRenderer.removeAllListeners('network-change')
- ipcRenderer.removeAllListeners('updater:status')
- },
- // ==================== 自动更新 ====================
- // 检查应用更新
- updaterCheck: () => ipcRenderer.invoke('updater:check'),
- // 下载更新
- updaterDownload: () => ipcRenderer.invoke('updater:download'),
- // 安装更新并重启
- updaterInstall: () => ipcRenderer.invoke('updater:install'),
- // 获取当前版本
- updaterVersion: () => ipcRenderer.invoke('updater:version'),
- // 检测是否为 Portable 模式
- updaterIsPortable: () => ipcRenderer.invoke('updater:is-portable'),
- // 监听更新状态
- onUpdaterStatus: (callback) => {
- ipcRenderer.on('updater:status', (_event, data) => callback(data))
- }
- }
- contextBridge.exposeInMainWorld('electronAPI', electronAPI)
|