Just had a quick look at the sources. It appears that the version file is expected to be Python source itself as the provided version file with be read and then eval
'ed.
The GrabVersion.py
script appears to generate errors as you've already found, so I modified the __repr__
function of FixedFileInfo
to manually convert tuple arguments to strings.
The Windows cmd.exe
has a Windows version resource embedded, here's the output from GrabVersion.py
which you would save to a file and feed to 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'Microsoftxae Windowsxae Operating System'),
StringStruct(u'ProductVersion', u'6.1.7601.17514')])
]),
VarFileInfo([VarStruct(u'Translation', [1033, 1200])])
]
)
I haven't tried setting a version resource with PyInstaller so I'm not sure if this will work, I'd be interested in your feedback.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…