小技巧:关于 pyinstaller --version-file 版本文件的注意事项

news/2023/6/9 19:25:10

正常情况下,修改了 win-sample.py,然后变更版本文件 win-sample-version.py,用 pyinstaller 打包

...>pyinstaller -F win-sample.py --version-file win-sample-version.py

一切正常。

但是如果打包后发现版本写错了或漏改了,重新修改版本文件 win-sample-version.py,再打包查看 exe 属性发现版本信息没变

其实是因为源代码 win-sample.py 没变,pyinstaller 认为没必要重新生成,所以也不更新版本信息了。

解决方法也很简单,删除默认的 dist子目录(生成的 win-sample.exe 所在),再打包就必须重新生成 exe、版本信息也最新了。

附上版本文件例子

# UTF-8
#
# For more details about fixed file info 'ffi' see:
# http://msdn.microsoft.com/en-us/library/ms646997.aspx
VSVersionInfo(ffi=FixedFileInfo(# filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)# Set not needed items to zero 0.filevers=(1, 0, 2023, 119),prodvers=(1, 0, 2023, 119),# Contains a bitmask that specifies the valid bits 'flags'rmask=0x3f,# Contains a bitmask that specifies the Boolean attributes of the file.flags=0x0,# The operating system for which this file was designed.# 0x4 - NT and there is no need to change it.OS=0x4,# The general type of file.# 0x1 - the file is an application.fileType=0x1,# The function of the file.# 0x0 - the function is not defined for this fileTypesubtype=0x0,# Creation date and time stamp.date=(0, 0)),kids=[StringFileInfo([StringTable(u'000004b0',[StringStruct(u'Comments', u''),StringStruct(u'CompanyName', u'...'),StringStruct(u'FileDescription', u'window app sample'),StringStruct(u'FileVersion', u'1.0 2023-01-19'),StringStruct(u'InternalName', u'window app sampe'),StringStruct(u'LegalCopyright', u'© ... All rights reserved.'),StringStruct(u'LegalTrademarks', u''),StringStruct(u'OriginalFilename', u'win-sample.exe'),StringStruct(u'ProductName', u'win-sample'),StringStruct(u'ProductVersion', u'1.0 2023-01-19'),StringStruct(u'Assembly Version', u'1.0 2023-01-19')])]), VarFileInfo([VarStruct(u'Translation', [0, 1200])])]
)
  • 首先 win-sample-version.py 是 python 语法,用 .py 是为了编辑器高亮、避免改错。其实可以任意后缀或无后缀,只要是 utf-8 编码。
  • fileversprodvers 按照 exe 格式,每部分不能超过 65535。本人喜欢用日期表示编译版本,只能把年、月日分开。虽然不能表示时间,但不会需要一天变几个版本那么疯狂吧。
  • StringTable 下面的几个所谓的版本就是纯文本了,没有仔细尝试 exe 信息显示用的是哪个,反正改一致就行。如果真有一天变几个版本的需求,在这里加以区分。
  • Translation1200正好等于 StringTable0x4b0,这表示中性信息。大概在 Translation 中加个语言的 local id(LCID) (比如中文 2052),然后在前面数组中加个对应的 StringTable 实例,就能在对应操作系统下显示本地化的信息了——没有尝试过。
  • 其实 utf-8 没必要用 u'' 字符串格式,这个例子的最初来源大概是 python 2.x 版本时的格式——当然是按本人需要改了值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4564524.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

浏览器的通信能力

用户代理 浏览器可以代替用户完成http请求,代替用户解析响应结果,所以我们称之为:用户代理 user agent 在网络层面,对于前端开发者,必须要知道浏览器拥有的两大核心能力 自动发出请求的能力自动解析响应的能力 自动…

思考事情的4个维度

文章目录1. 快速掌握2. 深入探索1. 快速掌握 4P模型是一种实用的系统思考方法。 思考事情的4个维度: 目的轴(Purpose):为了什么?最终目标是什么?立场轴(Position):从不…

LoadRunner思考时间

一、思考时间的作用 思考时间顾名思义,是用户用于思考的时间,暂停发送请求的时间,其作用主要是用户模拟真实的场景,为了更加真实地模拟用户场景思考时间的大小应该不一样,设置思考时间需要把握一个原则:思考…

php批量上传图片并带参数,php批量上传图片并把图片名放入数据库

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 前几天工作中要做这样一个功能,有八百多个系统 生成的会员;给这八百多个系统会员上传图片;然后把图片名放入数据库。 第一步: 第一步肯定是首先把图片上传…

10. 元组tuple类型详解

python3 tuple类型的使用 1. 基本知识 a. 元组(tuple)与列表类似, 不同之处在于元组的元素(项)不能修改。 b. 元组写在小括号 () 里,元素之间用逗号隔开。 c. 元组中的元素类型也可以不相同。 d. 构造包含0个或1个元素的元组比较特殊, 所以…

乒乓球的正胶、反胶

转载 http://blog.sina.com.cn/s/blog_4c1f518701008nrh.html 只拿着一支光秃秃的球板打球,在乒乓运动中是不被允许的,也打不出什么威力来。球板上面,是要有覆盖物的。 早年乒乓球刚开展起来的时候,覆盖物是千奇百怪,…

鲁迅的文章为什么要从语文课本上删除?原因很现实也很矛盾!

以下内容转载自 https://www.toutiao.com/i6595466660029661710/ 天翊传媒2018-08-30 18:59:07 首先可以肯定的是把鲁迅的文章从课本上删除绝不是对鲁迅的否定,更不是对鲁迅文章的一种看不起。用现在文坛里的说法来讲就是:鲁迅的文章艰涩难懂&#xff…

被你们恶搞多年,鲁迅终于坐不住了:求求你们了!我没说过!

就在前两天,又有一个服务器爆了。 由于访问人数实在过多还属于集中访问,网站一度处于崩溃状态,让许多想要继续访问的朋友们十分苦恼。 因为他们都有很急的事情需要去验证。 不就是网站崩溃、服务器爆了吗,搞的这么声势浩大&…