当前位置: 首页 > 面试题库 >

“版本文件”是什么样的?

戈正初
2023-03-14
问题内容

我已经使用谷歌搜索了很久了,但是没有结果。该PyInstaller手册说:

--version-file = FILE
    从FILE向exe添加版本资源

听起来很棒。我想将版本信息放入可执行文件中。问题是我不知道“版本文件”的外观,也找不到我可以使用的单个示例。我认为将版本文件的示例作为对此问题的可接受答案。

我尝试过的

该手册还说:

仅Windows NT家族 版本
。版本=’myversion.txt’。使用GrabVersion.py从可执行文件中窃取版本资源,然后编辑输出以创建自己的版本资源。(版本资源的语法非常神秘,我不会尝试从头开始编写。)

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

追溯(最近一次通话):
  在第42行的“ C:\ pyinstaller-2.0 \ utils \ GrabVersion.py”文件中 
    vs = versioninfo.decode(sys.argv [1])
  文件“ C:\ pyinstaller-2.0 \ PyInstaller \ utils \ versioninfo.py”,第33行,在解码中
    nm = win32api.EnumResourceNames(h,RT_VERSION)[0]
IndexError:列表索引超出范围

没有版本信息的可执行文件上,以及:

追溯(最近一次通话):
  在第43行的文件“ C:\ pyinstaller-2.0 \ utils \ GrabVersion.py” 
    打印与
  __repr__中的文件“ C:\ pyinstaller-2.0 \ PyInstaller \ utils \ versioninfo.py”,第147行
    %(缩进,self.ffi .__ repr __(缩进),缩进,
  __repr__中的文件“ C:\ pyinstaller-2.0 \ PyInstaller \ utils \ versioninfo.py”,第251行
    “ filevers =%s”,%fv,
TypeError:并非在字符串格式化期间转换了所有参数

其余的。


问题答案:

只是快速浏览了一下来源。似乎该版本文件本身应该是Python源,因为提供的版本文件已被读取,然后eval被编辑。

GrabVersion.py脚本会显示您已经找到产生错误,所以我修改了__repr__的功能FixedFileInfo,以手动转换的元组参数字符串。

Windowscmd.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设置版本资源,所以不确定是否可以使用,我会对您的反馈意见感兴趣。



 类似资料:
  • 问题内容: 做什么,并且html文件是什么样的? 我的最终目标是将文本文件中的任意逗号分隔值加载到html文件中(例如)。我只能推断出一个视图是html文件,而回调将该html文件返回。 这是文档:http : //expressjs.com/api.html#res.render。 现在,给出一些示例代码,我发现背景下,有一些关于使用(嵌入的JavaScript)与和。 但是,如果我要补充的话,

  • Google协议缓冲区不仅可以序列化为二进制格式,还可以序列化为文本,称为TextProto。然而,我不容易找到这样的文本的例子;会是什么样子? 预期答案:包含protobuf IDL/Proto文件允许的所有特性的示例,包括文本形式的示例protobuf数据包。

  • 问题内容: 是否有比下面的函数(从此处获取)更好的方法来设计JavaScript ? 这不是JavaScript中Sleep的重复-动作之间的延迟 ; 我希望在函数中间真正入睡,而不是在执行一段代码之前没有延迟。 问题答案: 2017年— 2019年更新 自2009年提出这个问题以来,JavaScript取得了长足的发展。现在,所有其他答案都已过时或过于复杂。这是当前的最佳做法: 就是这个。。 还

  • 你可以把一个版本控制系统(缩写VCS)理解为一个“数据库”,在需要的时候,它可以帮你完整地保存一个项目的快照。当你需要查看一个之前的快照(称之为“版本”)时,版本控制系统可以显示出当前版本与上一个版本之间的所有改动的细节。 版本控制与项目的种类,使用的技术和基础框架并无关系: 无论是设计开发一个HTML网站或者是一个苹果应用,它的工作原理都是一样的。 你可以选择任何你喜欢的工具来工作,它并不关心你

  • 问题内容: 刚开始使用C ++并尝试转换我最近编写的简单Java程序。 与C ++中的Java ArrayList等效的首选含义是什么? 问题答案: 使用标准库中的类。

  • 问题内容: __MySql中的 LIKE 运算符用于查找包含我们的查询文本的行,例如: 将会返回,等等。 如果我需要相反-找到那些行 所载 在我们的查询文本?例如,我给它并希望它从该字符串中可以找到的表中查找所有名称。 怎么做? 问题答案: 这是您可以实现所描述内容的方法: