2 Star 1 Fork 0

皇露孤影/electron-vite4-vue3

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
background.js 6.42 KB
一键复制 编辑 原始数据 按行查看 历史
皇露孤影 提交于 2023-08-22 00:22 . 0822
const { app, BrowserWindow, ipcMain, Notification, screen } = require('electron');
//数据持久化存储
// const Store = require('electron-store');
// const store = new Store();
// 控制窗口关闭事件的拦截时机,(当前程序状态是否处于程序更新安装状态)
let isAppInstallStatus = false;
const { autoUpdater } = require('electron-updater');
// 存在新版本时,默认自动下载更新,若想通过渲染进程手动触发,需要设置autoDownload为false
autoUpdater.autoDownload = false;
autoUpdater.setFeedURL({
provider: 'generic',
url: 'http://180.109.254.84:9264/eUpdater/', // 打包文件存放地址
})
const log = require('electron-log');
//载入electron-edge-js
const edge = require('electron-edge-js')
// 这里引入 path
const path = require('path');
const { join } = require('path')
// 屏蔽安全警告
// ectron Security Warning (Insecure Content-Security-Policy)
process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true'
// 当前环境是不是开发环境 (true 是 , false 不是)
const isDevelopment = process.env.NODE_ENV === 'development'
// console.log(process.env.NODE_ENV)
let win = null;
const createWindow = (w, h) => {
win = new BrowserWindow({
title: 'ZPLPrinter',
// 窗口图标
minWidth: w,
maxWidth: w,
minHeight: h,
maxHeight: h,
width: w,
height: h, frame: false, transparent: false,
maximizable: false,
webPreferences: {
webSecurity: false,//如果为false,它将禁用同源策略
contextIsolation: false,
nodeIntegration: true,
}
})
//隐藏自带的工具栏
win.setMenu(null);
// 加载vue url视本地环境而定,如http://localhost:5173
// win.loadURL('http://localhost:3000')
// development模式
if (process.env.VITE_DEV_SERVER_URL) {
win.loadURL(process.env.VITE_DEV_SERVER_URL)
// 开启调试台
win.webContents.openDevTools()
}
else {
win.loadFile(join(__dirname, 'dist/index.html'))
}
// 监听窗口关闭事件
win.on('close', (e) => {
// console.log(isAppInstallStatus);
if (!isAppInstallStatus) {
e.preventDefault();
let _win = BrowserWindow.getFocusedWindow();
if (_win == null) { _win = win }
_win.webContents.send('win-close');
}
});
app.commandLine.appendSwitch('charset', 'UTF-8');
}
//app初始化完成
app.on('ready', () => {
const { width, height } = screen.getPrimaryDisplay().workAreaSize;
let min_width = Math.floor(width * 0.7);
let min_height = Math.floor(height * 0.8);
createWindow(min_width, min_height);
app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) createWindow(min_width, min_height) })
app.setAppUserModelId('ZPLCloud');
})
// 当关闭所有窗口时
app.on('window-all-closed', () => { if (process.platform !== 'darwin') app.quit() })
//最小化窗口
ipcMain.on('minWin', (args) => {
win.minimize()
})
//关闭窗口
ipcMain.on('closeWin', (args) => {
win.close()
})
// 程序立即退出
ipcMain.on('win-close-ok', () => {
app.exit();
})
//打开控制台
ipcMain.on('win-open-dev-tools', () => {
win.webContents.openDevTools()
})
//DLL路径
let lib = null;
if (isDevelopment) {
//测试环境
lib = path.join(__dirname, './resources/dll/ThisRawPrinter.dll');
} else {
//正式环境
lib = path.join(path.dirname(app.getPath('exe')), './resources/dll/ThisRawPrinter.dll');
}
//执行发送的ZPL指令
let zSend = edge.func({
assemblyFile: lib,
typeName: 'ThisRawPrinter.RawPrinterHelper',
methodName: 'SendStringToPrinter'
})
// let args = {
// szString: '^XA^FO50,50^ADN,36,20^FDHello, World!^FS^XZ',
// szPrinterName: 'ZDesigner ZT211-203dpi ZPL',
// };
//接收发送的ZPL指令
ipcMain.on('send-zpl-printer', (event, args) => {
let _win = BrowserWindow.getFocusedWindow();
if (_win == null) { _win = win }
zSend(args, (err, res) => {
if (err) {
_win.webContents.send('send-zpl-back', err);
} else {
_win.webContents.send('send-zpl-back', res);
}
})
})
//获取本地的打印机列表
ipcMain.on('win-all-printers', () => {
win.webContents.getPrintersAsync().then(res => {
win.webContents.send('win-all-printers', res);
});
})
// 接收更新命令
ipcMain.on('thisDownloadnow', () => {
// 更新前,删除本地安装包 ↓
// let updaterCacheDirName = app.getName() + '-updater';
// const updatePendingPath = path.join(autoUpdater.app.baseCachePath, updaterCacheDirName, 'pending')
// fs_extra.emptyDir(updatePendingPath)
// 更新前,删除本地安装包 ↑
//开始下载
autoUpdater.downloadUpdate();
})
//取消程序更新
ipcMain.on('thisAbortForUpdates', () => { autoUpdater.updateCancelled(); })
//检查程序更新
ipcMain.on('thisCheckForUpdates', () => {
autoUpdater.checkForUpdates();
//检查更新
autoUpdater.on('checking-for-update', () => {
log.info("正在检查更新...");
})
//没有可用更新
autoUpdater.on('update-not-available', () => {
log.info('没有可用更新.');
win.webContents.send('thisUpdateNotaVailable', { code: 102, msg: '没有可用更新', data: {} });
})
//有可用更新
autoUpdater.on('update-available', (info) => {
log.info('有可用更新.' + info);
log.info(info);
// autoUpdater.downloadUpdate()
win.webContents.send('thisUpdateaVailable', { code: 200, msg: '有可用更新', data: info });
})
// 更新出错
autoUpdater.on('error', (err) => {
log.info('更新出错. ' + err);
win.webContents.send('thisUpdateError', { code: 200, msg: '更新出错', data: err });
})
// 下载进度
autoUpdater.on('download-progress', (progressObj) => {
let log_message = progressObj.percent + '% (' + progressObj.transferred + "/" + progressObj.total + ')'
log.info('下载进度:' + log_message);
win.webContents.send('thisDownloadProgress', progressObj.percent);
})
//更新下载完成
autoUpdater.on('update-downloaded', (info) => {
log.info('更新下载完成', info);
log.info('开始安装...');
isAppInstallStatus = true;
autoUpdater.quitAndInstall();
isAppInstallStatus = false;
})
})
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/wx9264946/electron-vite4-vue3.git
[email protected]:wx9264946/electron-vite4-vue3.git
wx9264946
electron-vite4-vue3
electron-vite4-vue3
master

搜索帮助