首页 > 其他分享 >pyinstaller系列之四:如何设置打包出来的文件的版本信息

pyinstaller系列之四:如何设置打包出来的文件的版本信息

时间:2024-02-17 09:11:25浏览次数:36  
标签:info pyinstaller icons StringStruct file 之四 labelme 版本信息 spec

开始之前,先介绍.spec文件。

.spec文件在执行打包命令后会自动创建。在执行命令的当前目录下应该就可以直接看到。

以labelme.spec为例,长这个样子:

# -*- mode: python -*-
# vim: ft=python
 
import sys
 
 
sys.setrecursionlimit(5000)  # required on Windows
 
 
a = Analysis(
    ['labelme/__main__.py'],
    pathex=['labelme'],
    binaries=[],
    datas=[
        ('labelme/config/default_config.yaml', 'labelme/config'),
        ('labelme/icons/*', 'labelme/icons'),
        ('labelme/translate/*.qm', 'labelme/translate'),
    ],
    hiddenimports=[],
    hookspath=[],
    runtime_hooks=[],
    excludes=[],
)
pyz = PYZ(a.pure, a.zipped_data)
exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    name='labelme',
    debug=False,
    strip=False,
    upx=True,
    runtime_tmpdir=None,
    console=False,
    icon='labelme/icons/icon.ico',
    version="file_verison_info.txt"
)
app = BUNDLE(
    exe,
    name='labelme.app',
    icon='labelme/icons/icon.icns',
    bundle_identifier=None,
    info_plist={'NSHighResolutionCapable': 'True'},
)

其中的EXE里有个 version="file_verison_info.txt", 这一句是我自己添加的,本来没有。这一句就是来指定版本信息的。

 之后你打包就直接使用 pyinstaller xx.spec,不再用写冗长的命令了。

 那 file_verison_info.txt 又长什么样子呢?

# 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=(4, 5, 9, 4),  # 文件版本
prodvers=(4, 5, 9, 4),
# Contains a bitmask that specifies the valid bits 'flags'r
mask=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 fileType
subtype=0x0,
# Creation date and time stamp.
date=(0, 0)
),
  kids=[
StringFileInfo(
  [
  StringTable(
    u'040904B0',
    [StringStruct(u'CompanyName', u'xxx有限公司'), 
    StringStruct(u'FileDescription', u'图像标注工具'),    # 文件说明
    StringStruct(u'FileVersion', u'4.5.9'),
    StringStruct(u'InternalName', u'SVN'),
    StringStruct(u'LegalCopyright', u'xxx有限公司版权所有'), #版权
    StringStruct(u'OriginalFilename', u'labelme.exe'), #原始文件名
    StringStruct(u'ProductName', u'labelme'),      #产品名称
    StringStruct(u'ProductVersion', u'4.5.9')])    #产品版本
  ]),
VarFileInfo([VarStruct(u'Translation', [2052, 1200])]) # 语言
  ]
)

打包后的exe,在属性里的详细信息,可以看到对应信息。 

 

标签:info,pyinstaller,icons,StringStruct,file,之四,labelme,版本信息,spec
From: https://www.cnblogs.com/Im-Victor/p/18017716

相关文章

  • pyinstaller -noconsole报错win32ctypes.pywin32.pywintypes.error: (225, '', '无法
    将pyinstaller6.3.0,卸载后,安装6.2.0重新打包即可https://www.cnblogs.com/uoky/p/17916300.html但是使用-w或者--noconsole就会报错win32ctypes.pywin32.pywintypes.error:(225,'','无法成功完成操作,因为文件包含bingdu或潜在的垃圾软件。')......
  • 查询SQL SERVER 软件版本信息、授权许可等
    SQLSERVER软件授权许可查询概述在使用SQLServer数据库管理系统时,了解软件授权许可是非常重要的。SQLServer提供了多种许可方式,以满足不同用户的需求。本文将介绍SQLServer软件授权许可的查询方法,并提供相应的代码示例。许可方式SQLServer提供了多种许可方式,包括:企业......
  • 工作中的网络知识之四_时延
    工作中的网络知识之四_时延时延的巨大影响高性能最大的杀手是时延.不管是CPU取指还是取操作数.还是内存读取和写入还是磁盘的读写.以及网络的收发包.高性能最大的屏障其实是时延.本机的很多时延可以通过增加cache,增加索引,利用程序的时间和空间局限性进行优化.网......
  • 【转】U-BOOT之四:u-boot.lds分析
    【转】U-BOOT之四:u-boot.lds分析u-boot.lds决定了u-boot可执行映像的连接方式,以及各个段的装载地址(装载域)和执行地址(运行域)。u-boot.lds决定了u-boot可执行映像的连接方式,以及各个段的装载地址(装载域)和执行地址(运行域)。GNU官方网站上对.lds文件形式的完整描述:SECTIONS{.......
  • NLP 之四:双向预训练模型
    利用预训练好的模型进行微调(Fine-tune),可以获得比传统模型的巨大提升。此时学习率一般是正常的十分之一(\(10^{-5}\)左右)。也可以保持预训练的参数不变。Transformer架构Encoder-only:擅长分类任务Decoder-only:擅长生成任务Encoder-only:混合情况(例如文本翻译、总结)在无监督......
  • 产品经理的四大核心要素之四:思考
    01思考!思考!思考!谁还不会思考呢,只是懒而已!思考很多时候都很痛苦和艰难,思来想去的,没有想到什么好方法,完全没有思路和线索,然后就不想了,顺其自然吧,不会就不会了。谁还不会躺平呢?思考肯定是基于某个目的,不然就是幻想、瞎想了。思考本身需要什么?思考需要你的基础认知能力、思考需要......
  • 工作中的网络知识之四_时延
    工作中的网络知识之四_时延时延的巨大影响高性能最大的杀手是时延.不管是CPU取指还是取操作数.还是内存读取和写入还是磁盘的读写.以及网络的收发包.高性能最大的屏障其实是时延.本机的很多时延可以通过增加cache,增加索引,利用程序的时间和空间局限性进行优化.......
  • 使用pyinstaller打包python程序时报错UPX is not available
    使用pyinstaller打包python代码程序时报错:UPXisnotavailable原因是 python环境的Scripts文件夹内缺少了一个upx.exe的文件到官网https://github.com/upx/upx/releases/tag/v4.2.2中下载一个UPX,将下载文件解压后得到的upx.exe文件(解压后的所有文件里只要这一个文件即可,......
  • 修改MySQL 8.0的版本信息和登录信息,改成你自己的。
    修改MySQL8.0的版本信息和登录信息,改成你自己的。编译环境准备#yuminstallmake-y#yum-yinstallcentos-release-scl#yum-yinstalldevtoolset-9-gccdevtoolset-9-gcc-c++devtoolset-9-binutils#sclenabledevtoolset-9bash#echo"source/opt/rh/devtoolset-9/ena......
  • 这个错误可能是由于 `PyInstaller` 在打包过程中没有正确地包含 `imp` 模块。以下是一
    `PyInstaller`默认使用运行它的Python解释器来打包您的脚本¹。如果您想要指定一个不同的Python解释器,您可以使用完整路径来运行`PyInstaller`³。例如,如果您想要使用位于`/path/to/python3`的Python3解释器,您可以使用以下命令:```bash/path/to/python3-mPyInstaller......