使用 PyInstaller — PyInstaller 3.4文档

分享于 

3分钟阅读

Python

  繁體 雙語

Windows 应用程序可能需要版本资源文件。 版本资源包含一组数据结构,一些包含二进制整数和一些包含字符串的字符串,用于描述可以执行文件的属性。 有关详细信息,请参阅Microsoft的page页面。

版本资源很复杂,有些元素是可选的,其他。 查看属性对话框的版本选项卡时,显示的数据与资源的结构之间没有简单的关系。 答案 为 a 项 PyInstaller 包含 pyi-grab_version命令。使用具有版本资源的任何 Windows 可执行文件的完整路径名调用该命令:

pyi-grab_versionexecutable_with_version_resource

命令将表示版本资源的文本以可读的形式写入标准输出。 你可以从控制台窗口复制它或者将它重定向到文件。 然后你可以编辑版本信息以适应你的程序。 使用 pyi-grab_version可以找到显示所需信息。复制它的资源数据并修改它以适合你的包的可执行文件。

版本文本文件被编码为 UTF-8,并且可能包含非ascii字符。 ( 版本资源字符串字段允许使用Unicode字符) 确保在 UTF-8 中编辑并保存文本文件除非确定包含ASCII字符串。

可以通过 --version-file=选项给编辑版本文本文件以进行 pyinstaller 或者 pyi-makespec 文本数据被转换为版本资源并安装在捆绑的应用程序中。

在版本资源中有两个 64位 二进制值,FileVersionProductVersion 在版本文本文件中,这些文件为四个元素元组,例如:

filevers=(2,0,4,0),prodvers=(2,0,4,0),

每个元组的元素表示从最重要到最重要的16位 值。 例如值 (2,0,4,0) 以十六进制解析为 0002000000040000

你还可以使用 pyi-set_version命令在创建捆绑应用程序后从文本文件中安装版本资源:

pyi-set_versionversion_text_file executable_file

pyi-set_version实用程序读取由 pyi-grab_version 编写的版本文本文件,将它的转换为版本资源,并将该资源安装在指定的executable_file 中。

对于高级用途,检查 pyi-grab_version编写的版本文本文件。 你发现是 python 代码创建了 VSVersionInfo对象。VSVersionInfo的类定义在utils/win32/versioninfo.pyPyInstaller 分发文件夹你可以编写一个导入 versioninfo的程序。 在该程序中,你可以 eval的内容文本文件的内容生成 VSVersionInfo 对象。 你可以使用该对象的.toRaw()方法以二进制形式生成版本资源。 或者你可以将 unicode()函数应用到对象以复制版本文本文件。


DOC  Using  Pyinstaller  
相关文章