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