解决桌面图标异常的问题。

This commit is contained in:
Hommy
2026-08-24 22:42:08 +08:00
parent f551fefaff
commit 807907226e
4 changed files with 38 additions and 1 deletions

View File

@@ -6,6 +6,11 @@ const logger = require('./nodeapi/logger');
const { setupIpcHandlers } = require('./nodeapi/ipcHandlers');
const { attachEditContextMenu } = require('./nodeapi/editContextMenu');
// Windows 任务栏 / 快捷方式图标依赖 AppUserModelId需与 electron-builder appId 一致
if (process.platform === 'win32') {
app.setAppUserModelId('com.gogoshine.capcut-mate');
}
let mainWindow;
let ipcHandlersInitialized = false;

View File

@@ -0,0 +1,27 @@
const fs = require('fs');
const path = require('path');
/**
* electron-builder 在 signAndEditExecutable=false 时不会把 .ico 写入 exe。
* 用 reseditNode 实现,不依赖 winCodeSign补回桌面 / 任务栏图标。
*/
module.exports = async function afterPackWinIcon(context) {
if (context.electronPlatformName !== 'win32') {
return;
}
const exeName = `${context.packager.appInfo.productFilename}.exe`;
const exePath = path.join(context.appOutDir, exeName);
const iconPath = path.resolve(__dirname, '../assets/icons/logo.ico');
if (!fs.existsSync(exePath)) {
throw new Error(`Windows executable not found: ${exePath}`);
}
if (!fs.existsSync(iconPath)) {
throw new Error(`Windows icon not found: ${iconPath}`);
}
const { resedit } = require('@electron/packager/dist/resedit');
await resedit(exePath, { iconPath });
console.log(`Embedded Windows icon into ${exeName}`);
};

View File

@@ -4,6 +4,7 @@ module.exports = {
directories: {
output: "dist"
},
afterPack: require("./afterPackWinIcon"),
win: {
icon: "assets/icons/logo.ico",
artifactName: "capcut-mate-windows-x64-green.zip",

View File

@@ -7,6 +7,7 @@ module.exports = {
directories: {
output: "dist"
},
afterPack: require("./afterPackWinIcon"),
files: [
"**/*",
// "!node_modules",
@@ -23,7 +24,7 @@ module.exports = {
icon: "assets/icons/logo.ico",
target: "nsis",
artifactName: "capcut-mate-windows-x64-installer.exe",
// 禁用代码签名(避免本机无符号链接权限时解压 winCodeSign 失败)
// 跳过 winCodeSign本机解压会因符号链接权限失败exe 图标由 afterPack 写入
signingHashAlgorithms: [],
signAndEditExecutable: false,
signDlls: false
@@ -31,6 +32,9 @@ module.exports = {
nsis: {
oneClick: false,
allowToChangeInstallationDirectory: true,
installerIcon: "assets/icons/logo.ico",
uninstallerIcon: "assets/icons/logo.ico",
shortcutName: "剪映小助手",
},
mac: {
icon: "assets/icons/logo.icns",