import CONFIG from './const'; import mkdirp from 'mkdirp'; import fs from 'fs'; import path from 'path'; import { clipboard, dialog } from 'electron'; import spawn from 'cross-spawn'; export function checkCertInstalled() { return fs.existsSync(CONFIG.INSTALL_CERT_FLAG); } export async function installCert(checkInstalled = true) { if (checkInstalled && checkCertInstalled()) { return; } mkdirp.sync(path.dirname(CONFIG.INSTALL_CERT_FLAG)); if (process.platform === 'darwin') { return new Promise((resolve, reject) => { clipboard.writeText( `echo "输入本地登录密码" && sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "${CONFIG.CERT_PUBLIC_PATH}" && touch ${CONFIG.INSTALL_CERT_FLAG} && echo "安装完成"`, ); dialog.showMessageBoxSync({ type: 'info', message: `命令已复制到剪贴板,粘贴命令到终端并运行以安装并信任证书`, }); reject(); }); } else { return new Promise((resolve, reject) => { const result = spawn.sync(CONFIG.WIN_CERT_INSTALL_HELPER, [ '-c', '-add', CONFIG.CERT_PUBLIC_PATH, '-s', 'root', ]); if (result.stdout.toString().indexOf('Succeeded') > -1) { resolve(); } else { reject(); } }); } }