102 lines
2.4 KiB
JavaScript
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售后智能助手',
|
|
},
|
|
};
|