diff --git a/index.html b/index.html index a888544..8615da0 100644 --- a/index.html +++ b/index.html @@ -2,12 +2,25 @@ - + - Vite App + 龙石战争-安卓专用模拟器
+ + diff --git a/plugins/vite.electron.build.ts b/plugins/vite.electron.build.ts index 909a185..34016ea 100644 --- a/plugins/vite.electron.build.ts +++ b/plugins/vite.electron.build.ts @@ -15,6 +15,15 @@ const BuildBackground = ()=>{ target: 'node12', external:['electron'] }) + + require('esbuild').buildSync({ + entryPoints: ['src/AfterPack.ts'], + bundle: true, + outfile: 'tool/AfterPack.js', + platform: 'node', + target: 'node12', + external:['electron'] + }) } // 打包 需要先等vite打完包之后就有index.html 在执行electron-builder打包 @@ -39,18 +48,15 @@ export const ElectronBuildPlugin = (): Plugin => { appId: 'com.c1.game.launcher', productName: 'c1-game-launcher', win: { - icon: path.resolve(process.cwd(), 'src/assets/test-icon.ico'), // 指定图标文件路径 + icon: path.resolve(process.cwd(), 'src/assets/app/logo.ico'), // 指定图标文件路径 target: [ { - target: 'nsis', // 安装模式: nsis 单文件启动: portable + target: 'portable', // 安装模式: nsis 单文件启动: portable arch: ['x64'] } ] }, - nsis: { - oneClick: false, - allowToChangeInstallationDirectory: true - } + afterPack: path.resolve(process.cwd(), 'tool/afterPack.js') } }) .then(() => { diff --git a/src/AfterPack.ts b/src/AfterPack.ts new file mode 100644 index 0000000..5795bdc --- /dev/null +++ b/src/AfterPack.ts @@ -0,0 +1,18 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import type { AfterPackContext } from 'electron-builder'; + +export default async function (context: AfterPackContext) { + const localeDir = path.join(context.appOutDir, 'locales'); + fs.readdir(localeDir, (err, files) => { + if (err) { + console.error('Error reading locales directory:', err); + return; + } + files.forEach(file => { + if (!file.includes('zh-CN')) { + fs.unlinkSync(path.join(localeDir, file)); + } + }); + }); +} \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index d05208d..5b95ef1 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,23 +1,40 @@ + diff --git a/src/assets/app/logo.ico b/src/assets/app/logo.ico new file mode 100644 index 0000000..4f5a876 Binary files /dev/null and b/src/assets/app/logo.ico differ diff --git a/src/assets/app/qidonganniu.png b/src/assets/app/qidonganniu.png new file mode 100644 index 0000000..6cdd5af Binary files /dev/null and b/src/assets/app/qidonganniu.png differ diff --git a/src/assets/app/ziyuandi2.jpg b/src/assets/app/ziyuandi2.jpg new file mode 100644 index 0000000..cd626f7 Binary files /dev/null and b/src/assets/app/ziyuandi2.jpg differ diff --git a/src/assets/test-icon.ico b/src/assets/test-icon.ico deleted file mode 100644 index 5f2f989..0000000 Binary files a/src/assets/test-icon.ico and /dev/null differ diff --git a/src/background.ts b/src/background.ts index d17de6a..6cbab2d 100644 --- a/src/background.ts +++ b/src/background.ts @@ -1,9 +1,6 @@ // electron 主进程文件 import { app, BrowserWindow } from 'electron' import log from './logger' -import AppUpdater from './electron_updater' - -let appUpdater: AppUpdater process.on('unhandledRejection', (reason, promise) => { log.error('Unhandled Rejection at:', promise, 'reason:', reason); @@ -15,24 +12,24 @@ process.on('uncaughtException', (error) => { app.whenReady().then(() => { const win = new BrowserWindow({ - height: 600, - width: 800, + height: 550, + width: 852, webPreferences: { nodeIntegration: true, // 可以在渲染进程汇总使用node的api,为了安全默认false contextIsolation: false, // 关闭渲染进程的沙箱 webSecurity: false, // 关闭跨域检测 - } + }, + autoHideMenuBar: true, + icon: 'src/assets/app/logo.ico' }) - // win.webContents.openDevTools() // 开发环境打开控制台 + win.webContents.openDevTools() // 开发环境打开控制台 if (process.argv[2]) // 开发环境 { win.loadURL(process.argv[2]) } else // 生产环境 { - // 自动更新 - appUpdater = new AppUpdater() win.loadFile('index.html') // 这里换成静态html后,即可实现ui热更新 // win.loadURL('http://49.235.154.178:20081/index.html') diff --git a/src/electron_updater.ts b/src/electron_updater.ts deleted file mode 100644 index 51a4b19..0000000 --- a/src/electron_updater.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { NsisUpdater } from "electron-updater" -import { AllPublishOptions } from "builder-util-runtime" -import log from './logger' -// Or MacUpdater, AppImageUpdater - -export default class AppUpdater { - constructor() { - const server = 'http://localhost:8080' - const feed = `${server}/updates/${process.platform}` - - const options = { - requestHeaders: { - // Any request headers to include here - }, - provider: 'generic', - url: feed - } as AllPublishOptions - - const autoUpdater = new NsisUpdater(options) - autoUpdater.logger = log - autoUpdater.checkForUpdatesAndNotify() - } -} diff --git a/tool/AfterPack.js b/tool/AfterPack.js new file mode 100644 index 0000000..f19d965 --- /dev/null +++ b/tool/AfterPack.js @@ -0,0 +1,50 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/AfterPack.ts +var AfterPack_exports = {}; +__export(AfterPack_exports, { + default: () => AfterPack_default +}); +module.exports = __toCommonJS(AfterPack_exports); +var fs = __toESM(require("fs")); +var path = __toESM(require("path")); +async function AfterPack_default(context) { + const localeDir = path.join(context.appOutDir, "locales"); + fs.readdir(localeDir, (err, files) => { + if (err) { + console.error("Error reading locales directory:", err); + return; + } + files.forEach((file) => { + if (!file.includes("zh-CN")) { + fs.unlinkSync(path.join(localeDir, file)); + } + }); + }); +}