首页
/ Winhance项目自动化构建与打包指南

Winhance项目自动化构建与打包指南

2025-07-10 03:38:54作者:钟日瑜

概述

本文将详细介绍如何使用PowerShell脚本实现Winhance项目的自动化构建与打包流程。Winhance是一个基于.NET 9.0和WPF开发的Windows应用程序,该脚本提供了一键式解决方案,从代码编译到最终安装包生成的完整流程。

脚本功能特性

  1. 版本管理自动化:自动生成基于日期的版本号格式(YY.MM.DD)
  2. 代码签名支持:可选择使用Windows证书存储中的证书对应用程序和安装包进行签名
  3. 依赖项处理:自动包含.NET运行时等必要依赖
  4. 安装包生成:使用Inno Setup创建专业的Windows安装程序
  5. 灵活的参数配置:支持通过命令行参数自定义构建过程

使用前准备

在运行此脚本前,请确保系统已安装以下组件:

  • .NET 9.0 SDK
  • Windows SDK (用于代码签名工具)
  • Inno Setup 6 (用于创建安装包)
  • PowerShell 5.1或更高版本

详细使用说明

基本用法

最简单的使用方式是直接运行脚本,此时会使用默认配置:

.\build-and-package.ps1

脚本将执行以下操作:

  1. 自动生成版本号(格式为YY.MM.DD)
  2. 清理并构建解决方案
  3. 发布应用程序
  4. 生成安装包
  5. 询问是否进行代码签名

高级参数

脚本支持多种参数以满足不同场景需求:

# 指定版本号
.\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实现,支持:

  1. 通过证书指纹精确指定证书
  2. 通过证书主题名称模糊匹配
  3. 交互式从证书存储中选择

签名时会添加时间戳(使用DigiCert的时间戳服务器),确保签名长期有效。

安装包生成

使用Inno Setup创建安装包,脚本会自动:

  1. 更新Inno脚本中的版本信息
  2. 修正所有文件路径
  3. 包含必要的依赖项(.NET运行时)
  4. 添加应用程序图标和许可证文件

常见问题解决

  1. 签名失败

    • 确认证书已正确安装且包含私钥
    • 检查证书是否具有代码签名用途
    • 确保Windows SDK已安装且signtool可用
  2. Inno Setup编译失败

    • 确认Inno Setup 6已安装
    • 检查脚本中的默认安装路径是否与实际一致
  3. 构建失败

    • 确保所有依赖项已安装(.NET 9.0 SDK)
    • 检查项目文件是否完整

最佳实践建议

  1. 在CI/CD管道中使用时,建议:

    • 明确指定版本号
    • 使用证书指纹进行签名
    • 设置固定的输出目录
  2. 对于发布版本,务必进行代码签名以建立用户信任

  3. 定期更新Inno Setup脚本模板以适应新需求

结语

通过此自动化脚本,Winhance项目的构建和发布流程变得高效且可靠。开发者可以专注于功能开发,而将重复性的打包工作交给脚本处理。脚本的模块化设计也便于根据项目需求进行定制和扩展。

最终生成的安装包位于指定的输出目录(默认为installer-output),文件名为Winhance.Installer.exe,可直接分发给最终用户。