Winhance项目自动化构建与打包指南
2025-07-10 03:38:54作者:钟日瑜
概述
本文将详细介绍如何使用PowerShell脚本实现Winhance项目的自动化构建与打包流程。Winhance是一个基于.NET 9.0和WPF开发的Windows应用程序,该脚本提供了一键式解决方案,从代码编译到最终安装包生成的完整流程。
脚本功能特性
- 版本管理自动化:自动生成基于日期的版本号格式(YY.MM.DD)
- 代码签名支持:可选择使用Windows证书存储中的证书对应用程序和安装包进行签名
- 依赖项处理:自动包含.NET运行时等必要依赖
- 安装包生成:使用Inno Setup创建专业的Windows安装程序
- 灵活的参数配置:支持通过命令行参数自定义构建过程
使用前准备
在运行此脚本前,请确保系统已安装以下组件:
- .NET 9.0 SDK
- Windows SDK (用于代码签名工具)
- Inno Setup 6 (用于创建安装包)
- PowerShell 5.1或更高版本
详细使用说明
基本用法
最简单的使用方式是直接运行脚本,此时会使用默认配置:
.\build-and-package.ps1
脚本将执行以下操作:
- 自动生成版本号(格式为YY.MM.DD)
- 清理并构建解决方案
- 发布应用程序
- 生成安装包
- 询问是否进行代码签名
高级参数
脚本支持多种参数以满足不同场景需求:
# 指定版本号
.\build-and-package.ps1 -Version "24.05.01"
# 指定输出目录
.\build-and-package.ps1 -OutputDir "C:\BuildOutput"
# 启用代码签名(交互式选择证书)
.\build-and-package.ps1 -SignApplication
# 使用特定证书签名(通过主题名称)
.\build-and-package.ps1 -SignApplication -CertificateSubject "Your Company"
# 使用特定证书签名(通过指纹)
.\build-and-package.ps1 -SignApplication -CertificateThumbprint "123456..."
技术实现细节
版本管理机制
脚本会自动更新项目文件(.csproj)中的版本信息,包括:
<Version>
<FileVersion>
<AssemblyVersion>
<InformationalVersion>
默认使用当前日期作为版本号(YY.MM.DD格式),也可以通过-Version
参数指定。
代码签名流程
签名功能通过Windows SDK中的signtool.exe
实现,支持:
- 通过证书指纹精确指定证书
- 通过证书主题名称模糊匹配
- 交互式从证书存储中选择
签名时会添加时间戳(使用DigiCert的时间戳服务器),确保签名长期有效。
安装包生成
使用Inno Setup创建安装包,脚本会自动:
- 更新Inno脚本中的版本信息
- 修正所有文件路径
- 包含必要的依赖项(.NET运行时)
- 添加应用程序图标和许可证文件
常见问题解决
-
签名失败:
- 确认证书已正确安装且包含私钥
- 检查证书是否具有代码签名用途
- 确保Windows SDK已安装且signtool可用
-
Inno Setup编译失败:
- 确认Inno Setup 6已安装
- 检查脚本中的默认安装路径是否与实际一致
-
构建失败:
- 确保所有依赖项已安装(.NET 9.0 SDK)
- 检查项目文件是否完整
最佳实践建议
-
在CI/CD管道中使用时,建议:
- 明确指定版本号
- 使用证书指纹进行签名
- 设置固定的输出目录
-
对于发布版本,务必进行代码签名以建立用户信任
-
定期更新Inno Setup脚本模板以适应新需求
结语
通过此自动化脚本,Winhance项目的构建和发布流程变得高效且可靠。开发者可以专注于功能开发,而将重复性的打包工作交给脚本处理。脚本的模块化设计也便于根据项目需求进行定制和扩展。
最终生成的安装包位于指定的输出目录(默认为installer-output
),文件名为Winhance.Installer.exe
,可直接分发给最终用户。