由于工作需要在詹金斯(genkins)集成环境打包,打包避免不了需要修改版本号,写入版本号最简单的方式通过修改windows rc文件 这就意味着,每次构建新版本前需要修改一次源文件 这个在用詹金斯集成环境打包是不太友好的 因为版本号是由詹金斯自动生成拼接传入的,而打包环境意味着代码已经封闭了不在修改了如果去改的话 就会存在一定的风险。这就需要在编译完成后通过其它工具用命令行方式修改版本号,经网上查找资料发现 ResHacker可以修改版本号,但是资料更多的是关于GUI方式,很少有命令行方式的资料。下面将介绍笔者经过实践得出的一种可行的用ResHacker 命令行方式修改 windows PE文件版本号。

1、官网下载:http://www.angusj.com/resourcehacker/#download

2、傻瓜式安装后启动程序打开GUI,选择某个PE文件查看版本信息

3、修改版本号发布者等信息, 并将修改后的信息拷贝 保存到临时文件temp.rc

4、执行命令行编译生成res文件

ResourceHacker.exe -open temp.rc -save temp.res -action compile -log console

-open 表示 输入文件

-save 表示输出文件

-action表示执行的动作

-log 输出日志方式

这些在官网上都有介绍的

5、执行addoverwrite覆盖写入命令写入版本号

ResourceHacker.exe -open old.exe -res temp.res -action addoverwrite -mask VERSIONINFO -log console -save new.exe

附件 修改版本号脚本 .bat

set RC_FILE_PATH=D:\temp.rc

set RES_FILE_PATH=D:\temp.res

DEL /q /F %RC_FILE_PATH%

DEL /q /F %RES_FILE_PATH%

set MAJOR_VERSION=2

set MINOR_VERSION=8

set MICRO_VERSION=0

set BUILD_VERSION=1

set BUILD_FULL_VERSION=%MAJOR_VERSION%,%MINOR_VERSION%,%MICRO_VERSION%,%BUILD_VERSION%

set BUILD_FULL_VERSION_STR=%MAJOR_VERSION%.%MINOR_VERSION%.%MICRO_VERSION%.%BUILD_VERSION%

echo.>>%RC_FILE_PATH%

echo 1 VERSIONINFO>>%RC_FILE_PATH%

echo FILEVERSION %BUILD_FULL_VERSION% >>%RC_FILE_PATH%

echo PRODUCTVERSION %BUILD_FULL_VERSION% >>%RC_FILE_PATH%

echo FILEOS 0x4>>%RC_FILE_PATH%

echo FILETYPE 0x2>>%RC_FILE_PATH%

echo {>>%RC_FILE_PATH%

echo BLOCK "StringFileInfo">>%RC_FILE_PATH%

echo {>>%RC_FILE_PATH%

echo BLOCK "080404B0">>%RC_FILE_PATH%

echo {>>%RC_FILE_PATH%

echo VALUE "FileDescription", "xxxx">>%RC_FILE_PATH%

echo VALUE "LegalCopyright", "Copyright (C) xxxxxk co,ltd 2018-2020">>%RC_FILE_PATH%

echo VALUE "OriginalFilename", "xxxx.exe">>%RC_FILE_PATH%

echo VALUE "ProductName", "LimiTeacher">>%RC_FILE_PATH%

echo VALUE "ProductVersion", "%BUILD_FULL_VERSION_STR%">>%RC_FILE_PATH%

echo }>>%RC_FILE_PATH%

echo }>>%RC_FILE_PATH%

echo.>>%RC_FILE_PATH%

echo BLOCK "VarFileInfo" >>%RC_FILE_PATH%

echo { >>%RC_FILE_PATH%

echo VALUE "Translation", 0x0804 0x04B0 >>%RC_FILE_PATH%

echo }>>%RC_FILE_PATH%

echo } >>%RC_FILE_PATH%

set PATH=C:\Program Files (x86)\Resource Hacker;%PATH%

cd C:\Program Files (x86)\Resource Hacker

ResourceHacker.exe -open %RC_FILE_PATH% -save %RES_FILE_PATH% -action compile -log console

ResourceHacker.exe -open old.exe -res %RES_FILE_PATH% -action addoverwrite -mask VERSIONINFO -log console -save new.exe

参考博客连接 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=409669

ResHacker 用命令行方式修改 windows PE文件版本号的更多相关文章

  1. 批处理脚本命令行方式关闭Windows服务

    对于一些不常用的Windows Services,可以通过设置其启动类型为"禁用"而将其关闭.这种关闭方式是长期性的,电脑重启之后仍然起作用. 有时候希望在批处理脚本里通过命令行方 ...

  2. Sqlserver 命令行方式修改 用户密码的方法

    1. 之前写了一个 可以使用  ssms 的方式修改密码的情况 2. 还有办法是执行命令 exec sp_password null,'newpassword','sa' # sa 是用户名 newp ...

  3. [转帖]Windows 使用netsh 命令行方式处理 windows防火墙的方法

    Windows防火墙命令行手册 https://blog.csdn.net/mystudyblog0507/article/details/79617629 简介 netsh advfirewall ...

  4. 命令行方式调用winrar对文件夹进行zip压缩示例代码

    调用winRAR进行压缩 using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...

  5. [转]Windows中使用命令行方式编译打包Android项目

    http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...

  6. winscp以命令行方式同步服务器数据到PC机磁盘上

    目前服务器上每日会产生备份文件,需要使用winscp工具把备份同步到本地PC机硬盘上.平时都是图形界面用鼠标点击方式来同步的,效率低下,因此编写了winscp自动同步脚本,并加入到计划任务中定时自动运 ...

  7. linux命令进阶及和windows进行文件传输的所有方式

    1.图例 ------>原图出处 2. 结构图 根目录说明 3.linux相关命令 cd(change directory切换目录): cd /. 进入根目录 cd .. 返回上一次目录 cd ...

  8. 在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容

    一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅. 图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接 ...

  9. iOS:命令行方式使用OSChina托管私有代码

    一.介绍 在项目开发中,使用版本控制工具是必不可少的开发工具,它可以帮助我们程序员写完代码后及时提交备份,防止因个人操作导致代码被误删除了或者丢失了,安全可靠.同时,使用版本控制器工具也可以很方便的进 ...

随机推荐

  1. STM32入门系列-STM32时钟系统,STM32时钟树

    时钟对于单片机来说是非常重要的,它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行.时钟系统犹如人的心脏,一旦有问题整个系统就崩溃.我们知道STM32属于高级单片机,其内部有很多的外设,但不是 ...

  2. NB-IOT的应用场景有哪些

    虽然抄表.停车.井盖监测等应用是最为常见的示范,但若低功耗广域网络仅限于这几个领域,则整个产业的规模就显得太小了.实际上,经过近两年的探索,目前示范应用的数量已有数十个,分布在各行各业,带来了大量的机 ...

  3. Java学习的第十天

    1.类方法 实例方法 自定义方法 2.今天使用visio不太会使用,方法覆盖不懂. 3.明天将方法剩余部分学完

  4. mns: Money Never Sleeps! 自己开发的一款 IDEA 插件介绍.

    一边敲代码, 一边关注股票/基金行情, 还不怕同事盯到自己的屏幕! 对于一个关注股市跟基金的研发人员来说, 莫过于一天到晚写代码, 而不能及时的查看股市行情跟基金走势了吧. 写代码的时候比较容易忘记看 ...

  5. linux-gcc简要知识点 **

    目录 交叉编译 简要知识点 ** 一些概念 GCC编译器 GCC简要使用 GCC编译过程 ** 常用的编译选项 编译多个文件 制作.使用动态库 制作.使用静态库 很有用的选项 参考 交叉编译 使用不同 ...

  6. css 两边宽度固定中间自适应宽度

    #content_left{   //左 width:73px; height:100px; vertical-align:middle; margin-right:-100px; float:lef ...

  7. 2、CPU详解

    一.五大组成单元 => 三大核心组件 组成计算机五大单元可以合并成三大核心组件:CPU.IO设备.主存储器 1.控制单元+算数逻辑单元 => CPU 2.主存储器,即主记忆体 3.输入单元 ...

  8. 英特尔与 Facebook 合作采用第三代英特尔® 至强® 可扩展处理器和支持 BFloat16 加速的英特尔® 深度学习加速技术,提高 PyTorch 性能

    英特尔与 Facebook 曾联手合作,在多卡训练工作负载中验证了 BFloat16 (BF16) 的优势:在不修改训练超参数的情况下,BFloat16 与单精度 32 位浮点数 (FP32) 得到了 ...

  9. 对ESP8266的例子进行编译时报错check_python_dependencies的问题的解决

    尝试对ESP8266的例子进行编译时报错: make: *** 没有规则可制作目标"check_python_dependencies" 解决方法: 1.安装python pip包 ...

  10. MVCC(转)

    什么是 MVCC MVCC (Multiversion Concurrency Control) 中文全程叫多版本并发控制,是现代数据库(包括 MySQL.Oracle.PostgreSQL 等)引擎 ...