Files
koring-launcher/electron/handlers/system.ts
T
dream_pep cb0afd99c0 Use BMCLAPI mirror & update build
Route Minecraft/Fabric/Forge downloads through BMCLAPI mirror and update installer logic. Added mirror rewrite utility (rewriteToMirror), mirror-aware downloadFile, and mirrorFetch; switched version manifest and metadata endpoints to bmclapi2.bangbang93.com and wired maven/assets hosts into xmcl/installer calls. Cleaned up compiled electron JS files and consolidated runtime files under electron-dist; updated electron-builder.yml (compression, asar, NSIS settings, license/installer assets and languages). Minor env/path changes (VITE_APP_ICON paths), added .npmrc (electron_mirror), new Koring.yml, pnpm-workspace and public installer assets. Also added/updated multiple frontend pages, store components, and TypeScript handlers to integrate the changes.
2026-08-04 01:28:16 +08:00

74 lines
2.0 KiB
TypeScript

import electron from 'electron';
import { execSync } from 'child_process';
import * as os from 'os';
const { ipcMain, app, shell } = electron;
function getBiosId(): string {
if (process.platform !== 'win32') return 'N/A (non-Windows)';
try {
const output = execSync('powershell -NoProfile -Command "(Get-CimInstance Win32_BIOS).SerialNumber"', {
encoding: 'utf-8',
timeout: 5000,
});
return output.trim() || 'Unknown';
} catch {
return 'Unknown';
}
}
function getOsVersion(): string {
if (process.platform !== 'win32') return 'N/A (non-Windows)';
try {
const output = execSync('powershell -NoProfile -Command "[System.Environment]::OSVersion.VersionString"', {
encoding: 'utf-8',
timeout: 5000,
});
return output.trim() || 'Unknown';
} catch {
return 'Unknown';
}
}
function getOsName(): string {
if (process.platform !== 'win32') return 'N/A (non-Windows)';
try {
const output = execSync('powershell -NoProfile -Command "(Get-CimInstance Win32_OperatingSystem).Caption"', {
encoding: 'utf-8',
timeout: 5000,
});
return output.trim() || 'Unknown';
} catch {
return 'Unknown';
}
}
export function registerSystemHandlers() {
ipcMain.handle('system:info', () => {
try {
return {
success: true,
data: {
app_version: app.getVersion(),
bios_id: getBiosId(),
os_version: getOsVersion(),
os_name: getOsName(),
},
error: null,
};
} catch (e: unknown) {
return { success: false, data: null, error: String(e) };
}
});
// 在系统文件管理器中打开指定路径(用于"打开游戏目录"等操作)
ipcMain.handle('system:open-path', async (_event, payload: { path: string }) => {
try {
const error = await shell.openPath(payload.path);
return { success: !error, data: { error }, error: error || null };
} catch (e: unknown) {
return { success: false, data: null, error: String(e) };
}
});
}