fix: 补 .gitattributes(CRLF for .bat) + README 端口 19540 + 提交 console 锁文件
This commit is contained in:
1 parent
c121111f51
commit
b80c64a115
39 files changed
+4217
-345
No files matched your search
+20
-12
@@ -7,8 +7,7 @@ const {
|
||||
Menu,
|
||||
Tray,
|
||||
ipcMain,
|
||||
powerSaveBlocker,
|
||||
shell
|
||||
powerSaveBlocker
|
||||
} = require('electron')
|
||||
|
||||
const { loadConfig, resolveExecutable } = require('./config')
|
||||
@@ -242,6 +241,18 @@ function main() {
|
||||
tray.on('double-click', () => showAdmin())
|
||||
}
|
||||
|
||||
// 开机自启:只对打包后的 Windows/macOS 程序有意义,开发态注册的是 electron 可执行文件
|
||||
function applyOpenAtLogin() {
|
||||
if (!app.isPackaged || (process.platform !== 'win32' && process.platform !== 'darwin')) return
|
||||
const wanted = !cfg.values.startup || cfg.values.startup.openAtLogin !== false
|
||||
try {
|
||||
app.setLoginItemSettings({ openAtLogin: wanted })
|
||||
log.push('console', wanted ? '开机自启已启用' : '开机自启已关闭')
|
||||
} catch (err) {
|
||||
log.push('console', `设置开机自启失败:${err.message}`)
|
||||
}
|
||||
}
|
||||
|
||||
function registerIpc() {
|
||||
ipcMain.handle('service:get-status', () => statusSnapshot())
|
||||
ipcMain.handle('service:start', () => {
|
||||
@@ -265,14 +276,6 @@ function main() {
|
||||
if (displays && displaysEnabled) displays.relayout()
|
||||
return statusSnapshot()
|
||||
})
|
||||
ipcMain.handle('app:open-external', (_event, url) => {
|
||||
// 只放行 http/https,避免管理窗口被注入的链接拉去执行本地协议
|
||||
if (typeof url === 'string' && /^https?:\/\//i.test(url)) {
|
||||
shell.openExternal(url)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
})
|
||||
ipcMain.handle('app:open-admin-window', () => {
|
||||
showAdmin()
|
||||
return true
|
||||
@@ -308,8 +311,6 @@ function main() {
|
||||
})
|
||||
}
|
||||
|
||||
app.on('second-instance', () => showAdmin())
|
||||
|
||||
app.whenReady().then(() => {
|
||||
cfg = loadConfig(resolveConfigPath())
|
||||
log = new LogBus({
|
||||
@@ -367,6 +368,13 @@ function main() {
|
||||
createTray()
|
||||
registerIpc()
|
||||
|
||||
// 单实例锁在 whenReady 之前就生效,但回调要用 cfg;注册放在这里,
|
||||
// 避免第二个实例在配置加载完成前触发 showAdmin() 读到 null
|
||||
app.on('second-instance', () => showAdmin())
|
||||
|
||||
// 现场无人值守,Console 需要随系统启动(doc 10 §4.3)
|
||||
applyOpenAtLogin()
|
||||
|
||||
// 防熄屏要在服务端起来之前就生效,否则开机后第一段时间屏幕仍会休眠
|
||||
powerBlockerId = powerSaveBlocker.start('prevent-display-sleep')
|
||||
log.push('console', `防熄屏已启用(powerSaveBlocker=${powerBlockerId},生效=${powerSaveBlocker.isStarted(powerBlockerId)})`)
|
||||
|
||||
Reference in new issue
Block a user