gpt4 book ai didi

python - "version file"是什么样的?

转载 作者:IT老高 更新时间:2023-10-28 22:18:29 27 4
gpt4 key购买 nike

我已经在谷歌上搜索了很长时间,但没有结果。 PyInstaller手册说:

--version-file=FILE    add a version resource from FILE to the exe

听起来不错。我想将版本信息放在我的可执行文件中。问题是我不知道“版本文件”是什么样的,也找不到一个可以使用的示例。我会考虑一个版本文件的示例作为这个问题的可接受答案。


我尝试过的

手册还说:

version
Windows NT family only. version='myversion.txt'. Use GrabVersion.py to steal a version resource from an executable, and then edit the ouput to create your own. (The syntax of version resources is so arcane that I wouldn't attempt to write one from scratch.)

我现在已经尝试使用我系统中的无数可执行文件进行此操作。我只是不断收到这些错误:

Traceback (most recent call last):  File "C:\pyinstaller-2.0\utils\GrabVersion.py", line 42, in     vs  = versioninfo.decode(sys.argv[1])  File "C:\pyinstaller-2.0\PyInstaller\utils\versioninfo.py", line 33, in decode    nm = win32api.EnumResourceNames(h, RT_VERSION)[0]IndexError: list index out of range

在没有版本信息的可执行文件上,并且:

Traceback (most recent call last):  File "C:\pyinstaller-2.0\utils\GrabVersion.py", line 43, in     print vs  File "C:\pyinstaller-2.0\PyInstaller\utils\versioninfo.py", line 147, in __repr__    % (indent, self.ffi.__repr__(indent), indent,  File "C:\pyinstaller-2.0\PyInstaller\utils\versioninfo.py", line 251, in __repr__    "filevers=%s," % fv,TypeError: not all arguments converted during string formatting

剩下的。

最佳答案

刚刚快速浏览了一下来源。看来版本文件应该是 Python 源代码本身,因为提供的版本文件会被读取然后 eval'ed。

GrabVersion.py 脚本似乎会生成您已经发现的错误,因此我将 FixedFileInfo__repr__ 函数修改为手动将元组参数转换为字符串。

Windows cmd.exe 嵌入了 Windows 版本资源,这是 GrabVersion.py 的输出,您可以将其保存到文件并提供给 PyInstaller。

VSVersionInfo(
ffi=FixedFileInfo(
filevers=(6, 1, 7601, 17514),
prodvers=(6, 1, 7601, 17514),
mask=0x3f,
flags=0x0,
OS=0x40004,
fileType=0x1,
subtype=0x0,
date=(0, 0)
),
kids=[
StringFileInfo(
[
StringTable(
u'040904B0',
[StringStruct(u'CompanyName', u'Microsoft Corporation'),
StringStruct(u'FileDescription', u'Windows Command Processor'),
StringStruct(u'FileVersion', u'6.1.7601.17514 (win7sp1_rtm.101119-1850)'),
StringStruct(u'InternalName', u'cmd'),
StringStruct(u'LegalCopyright', u'\xa9 Microsoft Corporation. All rights reserved.'),
StringStruct(u'OriginalFilename', u'Cmd.Exe'),
StringStruct(u'ProductName', u'Microsoft\xae Windows\xae Operating System'),
StringStruct(u'ProductVersion', u'6.1.7601.17514')])
]),
VarFileInfo([VarStruct(u'Translation', [1033, 1200])])
]
)

我没有尝试使用 PyInstaller 设置版本资源,所以我不确定这是否可行,我会对您的反馈感兴趣。

关于python - "version file"是什么样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14624245/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com