win7-installer

This commit is contained in:
chenqiang 2025-09-10 13:57:55 +08:00
parent 59c67e8b24
commit 5d01c21cd7
3 changed files with 119 additions and 1 deletions

View File

@ -0,0 +1,91 @@
const path = require('path');
const { execSync } = require('child_process');
const fs = require('fs');
// 创建一个兼容Node.js 12的删除文件夹函数
function deleteFolderRecursive(dir) {
if (fs.existsSync(dir)) {
const files = fs.readdirSync(dir);
for (let i = 0; i < files.length; i++) {
const file = files[i];
const curPath = path.join(dir, file);
if (fs.lstatSync(curPath).isDirectory()) {
// 递归删除子文件夹
deleteFolderRecursive(curPath);
} else {
// 删除文件
fs.unlinkSync(curPath);
}
}
// 删除空文件夹
fs.rmdirSync(dir);
}
}
// 创建打包前的准备工作
function prepareForBuild() {
console.log('开始准备Windows 7安装版应用打包...');
try {
// 清理之前的构建文件 - 使用兼容Node.js 12的方法
const buildDir = path.join(__dirname, 'dist_electron');
if (fs.existsSync(buildDir)) {
console.log('清理之前的构建文件...');
deleteFolderRecursive(buildDir);
}
// 确保data目录存在
const dataDir = path.join(__dirname, 'data');
if (!fs.existsSync(dataDir)) {
fs.mkdirSync(dataDir);
fs.writeFileSync(path.join(dataDir, '.gitignore'), '*\n!.gitignore');
console.log('创建data目录完成');
}
console.log('准备工作完成');
} catch (error) {
console.error('准备工作失败:', error);
process.exit(1);
}
}
// 执行打包命令
function buildInstallerApp() {
console.log('开始构建Windows 7安装版应用...');
try {
// 完全删除签名环境变量
delete process.env.WIN_CSC_LINK;
delete process.env.WIN_CSC_KEY_PASSWORD;
// 设置环境变量明确禁用签名相关功能
process.env.ELECTRON_BUILDER_SKIP_NOTARIZATION = 'true';
process.env.ELECTRON_SKIP_NOTARIZE = 'true';
// 执行安装包构建命令
execSync(
'npm run electron:build -- --win nsis --ia32 --x64 --publish never',
{ stdio: 'inherit' }
);
console.log('Windows 7安装版应用构建完成');
console.log('构建产物位于 dist_electron 目录');
} catch (error) {
console.error('构建失败:', error);
process.exit(1);
}
}
// 主函数
function main() {
console.log('==== Windows 7安装版应用打包工具 ====');
console.log('Node.js版本:', process.version);
console.log('Electron版本: 11.5.0');
console.log('Vue版本: 2.6.11');
prepareForBuild();
buildInstallerApp();
}
// 执行主函数
main();

View File

@ -10,6 +10,7 @@
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"build:win7-portable": "node package-windows-portable.js",
"build:win7-installer": "node package-windows-installer.js",
"electron:build": "vue-cli-service electron:build",
"electron:serve": "vue-cli-service electron:serve",
"postinstall": "electron-builder install-app-deps",

View File

@ -62,12 +62,16 @@ module.exports = {
// Windows构建配置 - 修改输出目录结构
win: {
// 架构设置
// 架构设置 - 添加nsis安装包类型
target: [
{
target: "portable",
arch: ["ia32", "x64"],
},
{
target: "nsis",
arch: ["ia32", "x64"],
}
],
icon: "public/favicon.ico",
// 明确禁用签名的多种配置
@ -91,6 +95,28 @@ module.exports = {
],
},
// 添加nsis安装包特定配置
nsis: {
// 安装包名称
artifactName: "installer/StatExamInstaller_${version}_${arch}.exe",
// 一键安装
oneClick: false,
// 允许用户选择安装目录
allowToChangeInstallationDirectory: true,
// 安装图标
installerIcon: "public/favicon.ico",
// 卸载图标
uninstallerIcon: "public/favicon.ico",
// 安装完毕后运行程序
runAfterFinish: true,
// 包含中文语言支持
include: "build/installer.nsh",
// 定义安装目录名
shortcutName: "统计技能考试系统",
// 开始菜单文件夹名称
startMenuCategory: "统计技能考试系统",
},
// 便携应用特定配置 - 修改输出结构
portable: {
// 使用更简单的文件名,避免编码问题