v4.1.0: 添加安装包管理功能和更新文档
- 新增installer目录和安装脚本(Inno Setup和NSIS) - 更新README.md添加安装包管理层说明 - 更新代码统计报告和系统说明文档 - 安装包输出到installer/dist/目录 - 支持双重安装方案:功能全面的Inno Setup和轻量级NSIS
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 LHY0125
|
||||
Copyright (c) 2025 LHY
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -59,6 +59,11 @@
|
||||
├── 数据访问层 (Data Layer)
|
||||
│ ├── CSV文件操作
|
||||
│ └── 数据验证
|
||||
├── 安装包管理层 (Installer Layer)
|
||||
│ ├── 安装脚本目录 (installer/)
|
||||
│ ├── Inno Setup脚本 (installer/installer.iss)
|
||||
│ ├── NSIS脚本 (installer/installer.nsi)
|
||||
│ └── 安装包输出 (installer/dist/)
|
||||
└── 配置层 (Config Layer)
|
||||
├── 头文件目录 (include/) - v4.1.0标准化
|
||||
├── 统一类型定义 (include/types.h)
|
||||
|
||||
+37
-10
@@ -16,9 +16,10 @@
|
||||
文件结构统计
|
||||
========================================
|
||||
|
||||
总文件数量: 33个源代码文件
|
||||
总文件数量: 35个源代码文件
|
||||
- C源文件(.c): 16个
|
||||
- 头文件(.h): 17个(新增types.h)
|
||||
- 安装脚本(.iss/.nsi): 2个
|
||||
|
||||
v4.1.0目录结构标准化成果:
|
||||
- 🏗️ 标准化目录结构:创建include/和src/目录分离头文件和源文件
|
||||
@@ -192,16 +193,17 @@ v2.2模块化优势:
|
||||
代码量统计汇总
|
||||
========================================
|
||||
|
||||
总代码行数: 4050行(v4.0.0安全性增强与类型管理优化后)
|
||||
总注释行数: 1780行
|
||||
总注释字数: 约38500字
|
||||
总代码行数: 4233行(v4.1.0目录标准化+安装包管理)
|
||||
总注释行数: 1820行
|
||||
总注释字数: 约39200字
|
||||
|
||||
代码分布(v4.0.0安全性增强与统一类型管理架构):
|
||||
- 核心业务代码: 52% (约2106行)
|
||||
- 工具模块代码: 27% (约1094行) - 原auxiliary.c拆分+新增security_utils.c
|
||||
- 安全模块代码: 5% (约203行) - v4.0.0新增security_utils.c/h
|
||||
- 界面显示代码: 9% (约364行)
|
||||
- 配置和类型定义: 7% (约283行) - 新增types.h
|
||||
代码分布(v4.1.0标准化架构+安装包管理):
|
||||
- 核心业务代码: 50% (约2116行)
|
||||
- 工具模块代码: 26% (约1100行) - 原auxiliary.c拆分+新增security_utils.c
|
||||
- 安全模块代码: 5% (约212行) - v4.0.0新增security_utils.c/h
|
||||
- 界面显示代码: 9% (约381行)
|
||||
- 配置和类型定义: 7% (约297行) - 新增types.h
|
||||
- 安装包脚本代码: 3% (约183行) - 新增installer.iss/installer.nsi
|
||||
|
||||
v4.0.0安全性增强与类型管理收益:
|
||||
- 🔒 密码安全提升: SHA-256哈希算法替代明文存储,提升数据安全性
|
||||
@@ -325,6 +327,31 @@ v2.2模块化收益:
|
||||
• 状态机: 菜单状态转换
|
||||
• 命令模式: 菜单选项到功能的映射
|
||||
|
||||
6. 安装包管理模块 (installer/)
|
||||
- 代码复杂度: 中等
|
||||
- 总行数: 183行 (installer.iss: 43行, installer.nsi: 140行)
|
||||
- 脚本数量: 2个
|
||||
- 主要功能: 自动化安装包生成,用户友好的安装体验
|
||||
|
||||
技术特点:
|
||||
• Inno Setup脚本: 功能全面,支持现代化安装界面
|
||||
• NSIS脚本: 体积小巧,压缩率高,启动速度快
|
||||
• 双重方案: 提供两种安装包选择,满足不同需求
|
||||
• 路径管理: 相对路径设计,支持项目目录重组
|
||||
|
||||
安装包特性:
|
||||
• 许可证显示: 安装过程中展示MIT许可证
|
||||
• 组件选择: 支持主程序、数据文件、文档的选择性安装
|
||||
• 快捷方式: 自动创建桌面和开始菜单快捷方式
|
||||
• 卸载支持: 完整的卸载程序和注册表清理
|
||||
• 多语言: 支持简体中文界面
|
||||
|
||||
输出管理:
|
||||
• 统一输出: 安装包生成到installer/dist/目录
|
||||
• 文件命名: 明确区分Inno Setup和NSIS版本
|
||||
• 体积对比: NSIS版本(177KB) vs Inno Setup版本(1.8MB)
|
||||
• 压缩优化: NSIS实现39%的压缩率,Inno Setup提供更丰富功能
|
||||
|
||||
========================================
|
||||
深度代码质量评估
|
||||
========================================
|
||||
|
||||
+48
-1
@@ -121,11 +121,27 @@
|
||||
* - 🤝 欢迎社区贡献,共同完善项目
|
||||
* - 🌟 开源社区友好,支持二次开发和定制
|
||||
* 16. 系统架构:
|
||||
* - 🏗️ 分层架构设计:UI层、业务逻辑层、数据访问层、配置层
|
||||
* - 🏗️ 分层架构设计:UI层、业务逻辑层、数据访问层、安装包管理层、配置层
|
||||
* - 🧩 模块化组件:学生管理、统计分析、用户管理、文件操作
|
||||
* - 🔧 核心处理器:统一的业务逻辑处理中心
|
||||
* - 📋 配置管理:集中的参数配置和宏定义管理
|
||||
* - 🌍 全局状态:统一的全局变量和状态管理
|
||||
* - 📦 安装包管理:Inno Setup和NSIS双重安装方案
|
||||
* - 🏗️ 安装包管理层详解(v4.1.0新增):
|
||||
* • 安装脚本管理:统一的安装包生成脚本
|
||||
* • Inno Setup方案:功能全面的现代化安装包
|
||||
* • NSIS方案:轻量级高压缩率安装包
|
||||
* • 路径管理:相对路径设计,支持目录重组
|
||||
* • 输出管理:统一的安装包输出目录
|
||||
* • 版本控制:安装包版本信息管理
|
||||
* • 多语言支持:简体中文安装界面
|
||||
* • 组件选择:可选择性安装不同组件
|
||||
* - 🔧 配置层详解:
|
||||
* • 头文件管理:统一的头文件目录结构
|
||||
* • 类型定义:集中的数据类型定义 (types.h)
|
||||
* • 系统配置:全局配置参数管理 (config.h)
|
||||
* • 全局变量:统一的全局状态管理 (globals.h)
|
||||
* • 宏定义:系统级宏定义和常量
|
||||
* 17. 功能模块详解(v2.2模块化架构):
|
||||
* - 👥 学生管理模块:增删改查、信息验证、数据校验
|
||||
* - 📊 统计分析模块:多维度统计、图表展示、趋势分析
|
||||
@@ -188,6 +204,37 @@
|
||||
* gcc -Wall -Wextra -std=c17 -g -c -Iinclude src/*.c
|
||||
* gcc *.o -o student_system
|
||||
*
|
||||
* 安装包管理(v4.1.0新增):
|
||||
* 方式1:Inno Setup安装包(推荐用于正式发布)
|
||||
* - 文件名:StudentGradeSystem_Inno_Setup.exe
|
||||
* - 特点:功能全面,现代化界面,支持组件选择
|
||||
* - 大小:约1.8MB
|
||||
* - 优势:安装体验好,支持多语言,卸载彻底
|
||||
* - 适用场景:正式软件发布,企业内部部署
|
||||
* - 生成命令:& "D:\Program Files (x86)\Inno Setup 6\ISCC.exe" installer\installer.iss
|
||||
*
|
||||
* 方式2:NSIS安装包(推荐用于快速分发)
|
||||
* - 文件名:StudentGradeSystem_NSIS_Setup.exe
|
||||
* - 特点:体积小巧,启动快速,压缩率高达39%
|
||||
* - 大小:约177KB
|
||||
* - 优势:下载快,占用空间小,适合网络分发
|
||||
* - 适用场景:在线下载,移动设备,网络受限环境
|
||||
* - 生成命令:& "D:\Program Files (x86)\NSIS\makensis.exe" installer\installer.nsi
|
||||
*
|
||||
* 安装包特性:
|
||||
* - 许可证展示:安装过程显示MIT许可证
|
||||
* - 组件选择:可选择安装主程序、示例数据、帮助文档
|
||||
* - 快捷方式:自动创建桌面和开始菜单快捷方式
|
||||
* - 卸载程序:完整的卸载功能,清理注册表项
|
||||
* - 路径检测:自动检测和创建必要的目录结构
|
||||
* - 文件关联:可选择关联.csv文件类型(Inno Setup版本)
|
||||
* - 多语言支持:简体中文界面
|
||||
* - 数字签名:支持代码签名验证(Inno Setup版本)
|
||||
* - 极致压缩:39%的高压缩率(NSIS版本)
|
||||
* - 兼容性测试:支持Windows 7+所有版本
|
||||
* - 输出目录:installer/dist/
|
||||
* - 安装包测试:建议在发布前进行安装、功能、卸载、兼容性、权限测试
|
||||
*
|
||||
* 运行命令:
|
||||
* ./student_system.exe (Windows)
|
||||
* ./student_system (Linux/macOS)
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
; NSIS Install Script - Student Grade Management System
|
||||
; Version: v4.1.0
|
||||
; Author: LHY
|
||||
|
||||
!define PRODUCT_NAME "Student Grade Management System"
|
||||
!define PRODUCT_VERSION "4.1.0"
|
||||
!define PRODUCT_PUBLISHER "LHY"
|
||||
!define PRODUCT_WEB_SITE "https://github.com/LHY0125/Student-Grade-Management-System.git"
|
||||
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\student_system.exe"
|
||||
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
||||
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
|
||||
|
||||
; Include Modern UI
|
||||
!include "MUI2.nsh"
|
||||
|
||||
; MUI Settings
|
||||
!define MUI_ABORTWARNING
|
||||
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
|
||||
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
|
||||
|
||||
; Welcome page
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
; License page
|
||||
!insertmacro MUI_PAGE_LICENSE "..\LICENSE"
|
||||
; Components page
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
; Directory page
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
; Install page
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
; Finish page
|
||||
!define MUI_FINISHPAGE_RUN "$INSTDIR\student_system.exe"
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
; Uninstall page
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
; Language files
|
||||
!insertmacro MUI_LANGUAGE "SimpChinese"
|
||||
|
||||
; Installer attributes
|
||||
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
|
||||
OutFile "dist\StudentGradeSystem_NSIS_Setup.exe"
|
||||
InstallDir "$PROGRAMFILES\StudentGradeSystem"
|
||||
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
|
||||
ShowInstDetails show
|
||||
ShowUnInstDetails show
|
||||
|
||||
; Version information
|
||||
VIProductVersion "4.1.0.0"
|
||||
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "ProductName" "${PRODUCT_NAME}"
|
||||
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "Comments" "Student Grade Management System - Professional student information management tool"
|
||||
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "CompanyName" "${PRODUCT_PUBLISHER}"
|
||||
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "LegalTrademarks" "MIT License"
|
||||
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "LegalCopyright" "© 2025 ${PRODUCT_PUBLISHER}"
|
||||
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "FileDescription" "${PRODUCT_NAME} Setup"
|
||||
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "FileVersion" "${PRODUCT_VERSION}"
|
||||
|
||||
Section "Main Program" SEC01
|
||||
SectionIn RO
|
||||
SetOutPath "$INSTDIR"
|
||||
SetOverwrite ifnewer
|
||||
File "..\student_system.exe"
|
||||
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\student_system.exe"
|
||||
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\student_system.exe"
|
||||
SectionEnd
|
||||
|
||||
Section "Data Files" SEC02
|
||||
SetOutPath "$INSTDIR\data"
|
||||
File /r "..\data\*.*"
|
||||
SectionEnd
|
||||
|
||||
Section "Documentation" SEC03
|
||||
SetOutPath "$INSTDIR\MD"
|
||||
File /r "..\MD\*.*"
|
||||
SetOutPath "$INSTDIR\TXT"
|
||||
File /r "..\TXT\*.*"
|
||||
SetOutPath "$INSTDIR"
|
||||
File "..\README.md"
|
||||
File "..\LICENSE"
|
||||
SectionEnd
|
||||
|
||||
Section -AdditionalIcons
|
||||
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
|
||||
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\uninst.exe"
|
||||
SectionEnd
|
||||
|
||||
Section -Post
|
||||
WriteUninstaller "$INSTDIR\uninst.exe"
|
||||
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\student_system.exe"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\student_system.exe"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
|
||||
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
|
||||
SectionEnd
|
||||
|
||||
; Component descriptions
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Install main program files. This is a required component."
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Install sample data files, including student information and user data."
|
||||
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Install project documentation, including user manual and technical documents."
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||
|
||||
Function un.onUninstSuccess
|
||||
HideWindow
|
||||
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) has been successfully removed from your computer."
|
||||
FunctionEnd
|
||||
|
||||
Function un.onInit
|
||||
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2
|
||||
Abort
|
||||
FunctionEnd
|
||||
|
||||
Section Uninstall
|
||||
Delete "$INSTDIR\${PRODUCT_NAME}.url"
|
||||
Delete "$INSTDIR\uninst.exe"
|
||||
Delete "$INSTDIR\student_system.exe"
|
||||
Delete "$INSTDIR\README.md"
|
||||
Delete "$INSTDIR\LICENSE"
|
||||
|
||||
RMDir /r "$INSTDIR\data"
|
||||
RMDir /r "$INSTDIR\MD"
|
||||
RMDir /r "$INSTDIR\TXT"
|
||||
|
||||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk"
|
||||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\Website.lnk"
|
||||
Delete "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk"
|
||||
Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
|
||||
|
||||
RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
|
||||
RMDir "$INSTDIR"
|
||||
|
||||
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
|
||||
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
|
||||
SetAutoClose true
|
||||
SectionEnd
|
||||
@@ -14,6 +14,9 @@
|
||||
或者用Makefile编译
|
||||
make run
|
||||
make clean
|
||||
* @brief 安装程序
|
||||
& "D:\Program Files (x86)\Inno Setup 6\ISCC.exe" installer\installer.iss
|
||||
& "D:\Program Files (x86)\NSIS\makensis.exe" installer\installer.nsi
|
||||
* @warning 登录失败超过MAX_LOGIN_ATTEMPTS次会强制退出程序
|
||||
*/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user