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
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2025 LHY0125
|
Copyright (c) 2025 LHY
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
SOFTWARE.
|
SOFTWARE.
|
||||||
@@ -59,6 +59,11 @@
|
|||||||
├── 数据访问层 (Data Layer)
|
├── 数据访问层 (Data Layer)
|
||||||
│ ├── CSV文件操作
|
│ ├── CSV文件操作
|
||||||
│ └── 数据验证
|
│ └── 数据验证
|
||||||
|
├── 安装包管理层 (Installer Layer)
|
||||||
|
│ ├── 安装脚本目录 (installer/)
|
||||||
|
│ ├── Inno Setup脚本 (installer/installer.iss)
|
||||||
|
│ ├── NSIS脚本 (installer/installer.nsi)
|
||||||
|
│ └── 安装包输出 (installer/dist/)
|
||||||
└── 配置层 (Config Layer)
|
└── 配置层 (Config Layer)
|
||||||
├── 头文件目录 (include/) - v4.1.0标准化
|
├── 头文件目录 (include/) - v4.1.0标准化
|
||||||
├── 统一类型定义 (include/types.h)
|
├── 统一类型定义 (include/types.h)
|
||||||
|
|||||||
+37
-10
@@ -16,9 +16,10 @@
|
|||||||
文件结构统计
|
文件结构统计
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
总文件数量: 33个源代码文件
|
总文件数量: 35个源代码文件
|
||||||
- C源文件(.c): 16个
|
- C源文件(.c): 16个
|
||||||
- 头文件(.h): 17个(新增types.h)
|
- 头文件(.h): 17个(新增types.h)
|
||||||
|
- 安装脚本(.iss/.nsi): 2个
|
||||||
|
|
||||||
v4.1.0目录结构标准化成果:
|
v4.1.0目录结构标准化成果:
|
||||||
- 🏗️ 标准化目录结构:创建include/和src/目录分离头文件和源文件
|
- 🏗️ 标准化目录结构:创建include/和src/目录分离头文件和源文件
|
||||||
@@ -192,16 +193,17 @@ v2.2模块化优势:
|
|||||||
代码量统计汇总
|
代码量统计汇总
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
总代码行数: 4050行(v4.0.0安全性增强与类型管理优化后)
|
总代码行数: 4233行(v4.1.0目录标准化+安装包管理)
|
||||||
总注释行数: 1780行
|
总注释行数: 1820行
|
||||||
总注释字数: 约38500字
|
总注释字数: 约39200字
|
||||||
|
|
||||||
代码分布(v4.0.0安全性增强与统一类型管理架构):
|
代码分布(v4.1.0标准化架构+安装包管理):
|
||||||
- 核心业务代码: 52% (约2106行)
|
- 核心业务代码: 50% (约2116行)
|
||||||
- 工具模块代码: 27% (约1094行) - 原auxiliary.c拆分+新增security_utils.c
|
- 工具模块代码: 26% (约1100行) - 原auxiliary.c拆分+新增security_utils.c
|
||||||
- 安全模块代码: 5% (约203行) - v4.0.0新增security_utils.c/h
|
- 安全模块代码: 5% (约212行) - v4.0.0新增security_utils.c/h
|
||||||
- 界面显示代码: 9% (约364行)
|
- 界面显示代码: 9% (约381行)
|
||||||
- 配置和类型定义: 7% (约283行) - 新增types.h
|
- 配置和类型定义: 7% (约297行) - 新增types.h
|
||||||
|
- 安装包脚本代码: 3% (约183行) - 新增installer.iss/installer.nsi
|
||||||
|
|
||||||
v4.0.0安全性增强与类型管理收益:
|
v4.0.0安全性增强与类型管理收益:
|
||||||
- 🔒 密码安全提升: SHA-256哈希算法替代明文存储,提升数据安全性
|
- 🔒 密码安全提升: 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. 系统架构:
|
* 16. 系统架构:
|
||||||
* - 🏗️ 分层架构设计:UI层、业务逻辑层、数据访问层、配置层
|
* - 🏗️ 分层架构设计:UI层、业务逻辑层、数据访问层、安装包管理层、配置层
|
||||||
* - 🧩 模块化组件:学生管理、统计分析、用户管理、文件操作
|
* - 🧩 模块化组件:学生管理、统计分析、用户管理、文件操作
|
||||||
* - 🔧 核心处理器:统一的业务逻辑处理中心
|
* - 🔧 核心处理器:统一的业务逻辑处理中心
|
||||||
* - 📋 配置管理:集中的参数配置和宏定义管理
|
* - 📋 配置管理:集中的参数配置和宏定义管理
|
||||||
* - 🌍 全局状态:统一的全局变量和状态管理
|
* - 🌍 全局状态:统一的全局变量和状态管理
|
||||||
|
* - 📦 安装包管理:Inno Setup和NSIS双重安装方案
|
||||||
|
* - 🏗️ 安装包管理层详解(v4.1.0新增):
|
||||||
|
* • 安装脚本管理:统一的安装包生成脚本
|
||||||
|
* • Inno Setup方案:功能全面的现代化安装包
|
||||||
|
* • NSIS方案:轻量级高压缩率安装包
|
||||||
|
* • 路径管理:相对路径设计,支持目录重组
|
||||||
|
* • 输出管理:统一的安装包输出目录
|
||||||
|
* • 版本控制:安装包版本信息管理
|
||||||
|
* • 多语言支持:简体中文安装界面
|
||||||
|
* • 组件选择:可选择性安装不同组件
|
||||||
|
* - 🔧 配置层详解:
|
||||||
|
* • 头文件管理:统一的头文件目录结构
|
||||||
|
* • 类型定义:集中的数据类型定义 (types.h)
|
||||||
|
* • 系统配置:全局配置参数管理 (config.h)
|
||||||
|
* • 全局变量:统一的全局状态管理 (globals.h)
|
||||||
|
* • 宏定义:系统级宏定义和常量
|
||||||
* 17. 功能模块详解(v2.2模块化架构):
|
* 17. 功能模块详解(v2.2模块化架构):
|
||||||
* - 👥 学生管理模块:增删改查、信息验证、数据校验
|
* - 👥 学生管理模块:增删改查、信息验证、数据校验
|
||||||
* - 📊 统计分析模块:多维度统计、图表展示、趋势分析
|
* - 📊 统计分析模块:多维度统计、图表展示、趋势分析
|
||||||
@@ -188,6 +204,37 @@
|
|||||||
* gcc -Wall -Wextra -std=c17 -g -c -Iinclude src/*.c
|
* gcc -Wall -Wextra -std=c17 -g -c -Iinclude src/*.c
|
||||||
* gcc *.o -o student_system
|
* 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.exe (Windows)
|
||||||
* ./student_system (Linux/macOS)
|
* ./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编译
|
或者用Makefile编译
|
||||||
make run
|
make run
|
||||||
make clean
|
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次会强制退出程序
|
* @warning 登录失败超过MAX_LOGIN_ATTEMPTS次会强制退出程序
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user