Pyinstaller打包EXE时添加版本信息、作者信息并在运行时读取外部配置文件-LMLPHP


专栏推荐

  • 专门为Redis入门打造的专栏,包含Redis基础知识、基础命令、五大数据类型实战场景、key删除策略、内存淘汰机制、持久化机制、哨兵模式、主从复制、分布式锁等等内容。链接>>>>>>>>>《Redis从头学》
  • SpringBoot实战相关专栏,包含SpringBoot过滤器、拦截器、AOP实现日志、整合Freemaker、整合Redis等等实战相关内容,多篇文章登入全站热榜、领域热榜、被技术社区收录。链接>>>>>>《SpringBoot实战》

🌟前言

前不久写了一个JDK多版本切换的小工具,打包时涉及到外部配置文件,经过查阅资料找到了方法。在此记录一下。


🌟环境准备

以下环境建立在有Python基础环境的基础上。
引入Pyinstaller

pip install pyinstaller

🌟代码中配置文件路径

在自己的主程序中加入如下代码,并将程序中设计到文件路径的地方替换成下方程序中文件路径变量config_file

import os
import sys

# 获取当前文件所在目录的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__))

# 拼接外部配置文件的完整路径
config_file = os.path.join(current_dir, 'jdk.conf')

# 读取外部配置文件内容
with open(config_file, 'r') as f:
    config_data = f.read()

# 运行exe文件时使用如下代码:
# 获取exe文件所在目录的绝对路径
exe_dir = os.path.dirname(os.path.abspath(sys.argv[0]))

# 拼接外部配置文件的完整路径
config_file = os.path.join(exe_dir, 'jdk.conf')

🌟创建版权信息TXT

创建version.txt,注意要放在自己打包程序的同级目录下,将相关信息按照下方代码中的注释进行修改即可。

# UTF-8
VSVersionInfo(
ffi=FixedFileInfo(
#filevers和prodvers应该始终是包含四个项的元组:(1、2、3、4),将不需要的项设置为0
filevers=(0, 0, 1, 0),  # 文件版本******,鼠标悬浮exe会显示,也显示在 详细信息-文件版本,这个是检测版本的依据
prodvers=(4, 6, 9, 4), # 生产商,未见显示在哪里
mask=0x3f, # 两个位掩码
flags=0x0,
OS=0x4, # 为其设计此文件的操作系统,0x4-NT,无需更改它
fileType=0x1, # 文件的常规类型,0x1-该文件是一个应用程序
subtype=0x0, # 文件的功能,0x0表示该文件类型未定义
date=(0, 0) # 创建日期和时间戳
),
  kids=[
StringFileInfo(
  [
  StringTable(
    u'040904B0',
    [StringStruct(u'CompanyName', u'智源恩创网络科技工作室'), # 鼠标悬浮exe会显示
    StringStruct(u'FileDescription', u'JDK版本管理工具'),    # 文件说明,鼠标悬浮exe会显示,也会显示在 详细信息-文件说明
    StringStruct(u'FileVersion', u'1.1.0'), # 没见哪里显示
    StringStruct(u'InternalName', u'SVN'),
    StringStruct(u'LegalCopyright', u'Copyright(C) 2023 DaenCode'), #版权,会显示在 详细信息-版权
    StringStruct(u'OriginalFilename', u'Daen-JDKMAN'), #原始文件名,会显示在 详细信息-原始文件名
    StringStruct(u'ProductName', u'Daen-JDKMAN'),      #产品名称,会显示在 详细信息-产品名称
    StringStruct(u'ProductVersion', u'1.0')])    #产品版本,会显示在 详细信息-产品版本
  ]),
VarFileInfo([VarStruct(u'Translation', [2052, 1200])]) # 语言,中文简体
  ]
)

变量名解释


🌟打包

进入到脚本所在路径,输入以下命令。

pyinstaller -D --version-file version.txt -i .\daen-JDKMAN.ico <script_name>.py

注意:打包完成后需要将配置文件放到exe所在目录中。

🌟效果展示

如果打包完成后若ico不展示,重命名exe文件名即可。
Pyinstaller打包EXE时添加版本信息、作者信息并在运行时读取外部配置文件-LMLPHP

🌟写在最后

有关于Pyinstaller打包EXE时添加版本信息、作者信息并在运行时读取外部配置文件到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。


Pyinstaller打包EXE时添加版本信息、作者信息并在运行时读取外部配置文件-LMLPHP

09-12 17:56