Files
get_wechat/electron-launcher/electron-builder.config.cjs

102 lines
2.4 KiB
JavaScript

const path = require('path');
function envText(name) {
const value = process.env[name];
if (value == null) return '';
return String(value).trim();
}
function envFlag(name) {
return /^(1|true|yes|y|on)$/i.test(envText(name));
}
const pfxFile = envText('CHATLAB_PFX_FILE');
const pfxPassword = envText('CHATLAB_PFX_PASSWORD');
const publisherName = envText('CHATLAB_CERT_PUBLISHER_NAME');
const forceSigning = envFlag('CHATLAB_FORCE_SIGN');
const timestampServer = envText('CHATLAB_TIMESTAMP_SERVER') || 'http://timestamp.digicert.com';
const shouldSign = Boolean(pfxFile);
const buildLabel = envText('CHATLAB_BUILD_LABEL')
|| new Date().toISOString().replace(/[-:T]/g, '').slice(0, 12);
if (forceSigning && !shouldSign) {
throw new Error('CHATLAB_FORCE_SIGN=1 requires CHATLAB_PFX_FILE to point to a .pfx/.p12 code signing certificate.');
}
if (pfxPassword) {
process.env.WIN_CSC_KEY_PASSWORD = pfxPassword;
process.env.CSC_KEY_PASSWORD = pfxPassword;
}
const win = {
target: 'nsis',
icon: 'build/icon.ico',
artifactName: `ChatLab-Setup-\${version}-${buildLabel}.\${ext}`,
signAndEditExecutable: shouldSign,
forceCodeSigning: forceSigning,
};
if (publisherName) {
win.publisherName = publisherName;
}
if (shouldSign) {
win.signtoolOptions = {
certificateFile: pfxFile,
signingHashAlgorithms: ['sha256'],
rfc3161TimeStampServer: timestampServer,
};
if (publisherName) {
win.signtoolOptions.publisherName = publisherName;
}
}
module.exports = {
appId: 'com.chatlab.desktop',
productName: 'ChatLab售后智能助手',
icon: 'build/icon.ico',
directories: {
output: 'dist',
},
files: [
'main.js',
'preload.js',
'index.html',
'build/company-logo.jpg',
'build/icon.ico',
'build/icon.png',
'package.json',
],
extraResources: [
{
from: path.join(__dirname, 'build-resources'),
to: '.',
filter: [
'**/*',
'!**/.env',
'!**/knowledge*.db',
'!**/__pycache__/**',
'!**/*.pfx',
'!**/*.p12',
'!**/*.pvk',
'!**/*.cer',
'!**/*.crt',
'!**/*.key',
'!**/certs/**',
],
},
],
win,
nsis: {
oneClick: false,
installerIcon: 'build/icon.ico',
uninstallerIcon: 'build/icon.ico',
allowToChangeInstallationDirectory: true,
perMachine: false,
createDesktopShortcut: true,
createStartMenuShortcut: true,
shortcutName: 'ChatLab售后智能助手',
},
};