windows文件发布助手

0 源码获取

引用项目

1 概述

  • 这是一款用于修改 windows 可执行程序( exe、dll)版本号 和 修改VS安装项目(.vdproj)版本号的小程序。
  • 可执行程序可修改: 文件版本和产品版本
  • 安装项目修改: version 字段

公司内部部分项目沿用,每当升级时,需要手动修改文件版本号和产品版本等信息,再重新编译, 较为繁琐。 更多时候,代码没有修改,仅仅修改版本号。 故开发该助手,用于维护软件后期发布。

2 原理

  • 可执行程序:修改可执行程序中的资源字段值
  • 安装项目:直接读取文件内容,解析后,再写入。 非调用windows官方api修改版本号(已测, 修改后,使用VS再次打开解决方案,可正常编译)

3 开发环境

  • 操作系统: win11
  • Qt: 5.14
  • Visual Studio : 2019
  • VSCode: 1.72: 用于代码编写,调试。

5 代码管理

  • SVN: 5.0.0 。( 本机搭建的服务器, 用于代码管理。 )
  • CMake: 3.25 (支持modern cmake语法的版本都可以)

6 文件夹概述

序号 名称 简介 代码维护方式
1 Common 存放cmake自定义脚本文件
2 EPA 主程序UI源码文件夹 CMAKE
3 OctExeDllVersion 动态库项目源码,EPA调用动态库。OctExeDllVersion作用: 修改可执行文件的文件版本和产品版本 CMAKE

OctExeDllVersion 是基于VS2019的MFC动态库, VS2017 之前的MF动态库与Vs2017及Vs2017之后的MFC动态库项目文件结构不太一样。 需要注意。

7 构建

7.1 构建顺序

  • 因为 EPA 依赖 OctExeDllVersion。 故 须先 构建 OctExeDllVersion, 构建 EPA, 方可成功
  • OctExeDllVersion 提供动态库对应的 cmake-config文件,详见:path/OctExeDllVersion/cmake目录

7.2 Qt设置

  • 打开 EAP/CMakeLists.txt, 将 "\C:/major/development/tools/qt/5.14/install/5.14.2/msvc2015_64" 改为对应的Qt安装路径后 ,再执行构建

8 主程序UI概览

9 功能

  • 自动解析本机的所有版本

  • 更新 可执行程序的文件版本和产品版本; 支持执行处理文件

  • 更新 安装包项目的version字段,可生成项目和执行批处理文件

10 更新日志

2022-12-20 v.0.0.0.2

  • 1 epa/CMAKELISTS.TXt 将链接动态库改为PRIVATE

2022-12-20 v.0.0.0.2

  • 1 修复不能读取所有devenv.exe的BUG
  • 2 修复 OctExeDllVersion 读取exe和dll的BUG:迭代器起始位置为end(正确为begin)
  • 3 OctExeDllVersion 修复字符串分割错误的问题
  • 5 增加初始化时,解析可执行程序的版本号

2022-12-18 V0.0.0.1

  • 1 增加输出结果控件, 用于提示用户当前操作状态
  • 2 修复删除的BUG(多行删除)
  • 3 增加操作提示:修改版本和生成解决方案
  • 5 完善用户提示
  • 6 增加中文翻译
  • 7 修复获取vs版本信息的按钮一直显示为执行的BUG, 但是 model 和 delegate依然显示英文
  • 8 去掉oct_epa namespace, 并重新添加翻译
  • 9 修复翻译没有显示的问题: 将加载qm放在main.cpp中,解决
  • 10 增加可执行程序分组中,增加选择dll文件
  • 11 增加遗漏的文件
  • 12 EPA/cmake脚本增加拷贝query.exe文件的功能,同时调整vswhere的项目位置

2022-12-17 V0.0.0.1

  • 1 增加获取devenv的功能
  • 2 优化devenv界面的功能
  • 3 将exe和installproject修改版本改为一项一项的执行。而非,先将所有文件版本修改,再执行其他的。
  • 5 修复安装包项目中,执行批处理文件时的process的workingdirectory错误的问题
  • 6 增加结果输出显示区域

2022-12-16 V0.0.0.1

  • 1 新增UI优化
  • 2 代码重构: ATableModel 类
  • 3 安装包项目model和delegate重命名
  • 5 提交本地重命名文件
  • 6 增加关闭前, 将UI信息写入文件, 如果文件不存在,则创建文件
  • 7 删除多余的文件

2022-12-15 V0.0.0.1

  • 1 修改安装包项目没有修改版本号成功的问题
  • 2 重构代码: MVC模式
  • 3 增加批处理文件执行功能
  • 5 增加关闭、创建和打开按钮功能
  • 6 增加标题栏显示当前文件的功能

2022-12-13 V0.0.0.1

  • 1 vdproj项目增加命令预览
  • 2 增加预览batch 命令规则(实测正确)、
  • 3 增加执行batch命令, 修复install project中不显示修订版本列

2022-12-12 V0.0.0.1

  • 1 增加sln文件解析
  • 2 删除delegate文件, 改为 vdprojdelegate文件
  • 3 改为exe修订文件和产品版本
  • 5 删除多余文件
  • 6 增加exeb保存文件的功能

2022-12-09 V0.0.0.1

  • 1 增加解析sln文件
  • 2 增加文件显示tooltip

2022-12-08 V0.0.0.1

  • 1 增加文件版本修改的功能
  • 2 使用VS2019创建动态库修改项目
  • 3 VDproj文件修改类BUG修复:无法修改文件的问题
  • 5 修改文件版本的功能已经基本实现

2022-12-07 V0.0.0.1

  • 1 sqlite读写类将更新接口功能改为先删除在插入
  • 2 优化数据库读写接口名称
  • 3 修复数据库读写类中 写表格数据错误的问题
  • 5 增加exe和dll文件列选择文件的功能
  • 6 配置文件类增加对应的文件map对应关系
  • 7 增加脚本文件选择

2022-12-06 V0.0.0.1

  • 1 增加VS版本选择
  • 2 修改exe dll文件不显示编译器名称
  • 3 修改VCproj显示编译版本名称

2022-12-04 v0.0.0.1

  • 1 增加动态库, 用于读写 exe 版本信息
  • 2 封装文件版本读写类
  • 3 exe版本修改增加版本写入功能
  • 5 版本号统一名称
  • 6 加入数据库文件读写及数据库文件类
  • 7 增加数据库结构: 编译器名
  • 8 增加Vs版本选项,但是内存泄漏
  • 9 没有文件更新, 仅日志文件, 发现:OctExeDllVersion库存在内存泄漏

2022-12-01 V0.0.0.1

  • 1 修复无法显示model的列标题的问题
  • 2 增加 Atableview类
  • 3 模块化UI
posted @ 2022-12-18 18:19  mohist  阅读(235)  评论(0编辑  收藏  举报