由于工作需要在詹金斯(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文件版本号的更多相关文章
-
批处理脚本命令行方式关闭Windows服务
对于一些不常用的Windows Services,可以通过设置其启动类型为"禁用"而将其关闭.这种关闭方式是长期性的,电脑重启之后仍然起作用. 有时候希望在批处理脚本里通过命令行方 ...
-
Sqlserver 命令行方式修改 用户密码的方法
1. 之前写了一个 可以使用 ssms 的方式修改密码的情况 2. 还有办法是执行命令 exec sp_password null,'newpassword','sa' # sa 是用户名 newp ...
-
[转帖]Windows 使用netsh 命令行方式处理 windows防火墙的方法
Windows防火墙命令行手册 https://blog.csdn.net/mystudyblog0507/article/details/79617629 简介 netsh advfirewall ...
-
命令行方式调用winrar对文件夹进行zip压缩示例代码
调用winRAR进行压缩 using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...
-
[转]Windows中使用命令行方式编译打包Android项目
http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...
-
winscp以命令行方式同步服务器数据到PC机磁盘上
目前服务器上每日会产生备份文件,需要使用winscp工具把备份同步到本地PC机硬盘上.平时都是图形界面用鼠标点击方式来同步的,效率低下,因此编写了winscp自动同步脚本,并加入到计划任务中定时自动运 ...
-
linux命令进阶及和windows进行文件传输的所有方式
1.图例 ------>原图出处 2. 结构图 根目录说明 3.linux相关命令 cd(change directory切换目录): cd /. 进入根目录 cd .. 返回上一次目录 cd ...
-
在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容
一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅. 图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接 ...
-
iOS:命令行方式使用OSChina托管私有代码
一.介绍 在项目开发中,使用版本控制工具是必不可少的开发工具,它可以帮助我们程序员写完代码后及时提交备份,防止因个人操作导致代码被误删除了或者丢失了,安全可靠.同时,使用版本控制器工具也可以很方便的进 ...
随机推荐
-
c++中函数中变量内存分配以及返回指针、引用类型的思考
众所周知,我们在编程的时候经常会在函数中声明局部变量(包括普通类型的变量.指针.引用等等). 同时,为了满足程序功能的需要,函数的返回值也经常是指针类型或是引用类型,而这返回的指针或是引用也经常指向函 ...
-
手记-数学分析(高等数学)中有关算法效率的公式列举(O,Θ,Ω)
权当数据结构与算法分析的学习手记 系数为一的幂级数部分和公式 ∑ n2 = 12 + 22 + 32 + ... + n2 = n(n+1)(2n+1)/6 = O(n3) ∑ n3 = ...
-
celery简单入门
写作背景介绍 最近在做后台图像处理,需要使用到celery这个异步任务框架.但是使用的时候遇到很多技术问题,为了方便日后再遇到相似问题时能够快速解决.写下这篇文章也希望能够帮助共同奋战在同一战线的程序 ...
-
idea14教程
破解:http://blog.csdn.net/guofeng526/article/details/47043457 使用教程: http://www.phperz.com/article/15/0 ...
-
关于limit hashlimit资料整理
这几天正在捣鼓防火墙,用到了hashlimit模块.Google了一圈发现相关的文档无论英文还 是中文都很少, 所以我就把自己的折腾的心得记录下来吧. hashlimit是iptables的一个匹配模 ...
-
div滚动到页面顶端后固定住
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title> ...
-
HTML DOM节点
在 DOM 树中,基本上一切都是节点.每个元素在最底层上都是 DOM 树中的节点.每个属性都是节点.每段文本都是节点.甚至注释.特殊字符(如版权符号 ©).DOCTYPE 声明(如果 HTML 或者 ...
-
mongodb 基本语法
成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显示 ...
-
jQuery 中使用 JSON
转载:http://www.cnblogs.com/haogj/archive/2011/12/01/2271098.html JSON 格式 json 是 Ajax 中使用频率最高的数据格式,在浏览 ...
-
iOS学习——iOS常用的存储方式
不管是在iOS还是Android开发过程中,我们都经常性地需要存储一些状态和数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.根据要存储的的数据的大小.存储性质以及存储类型,在iOS和An ...