🧑💻作者名称:DaenCode
🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:Python实用教程
专栏推荐
- 专门为Redis入门打造的专栏,包含Redis基础知识、基础命令、五大数据类型实战场景、key删除策略、内存淘汰机制、持久化机制、哨兵模式、主从复制、分布式锁等等内容。
链接>>>>>>>>>
《Redis从头学》 - SpringBoot实战相关专栏,包含SpringBoot过滤器、拦截器、AOP实现日志、整合Freemaker、整合Redis等等实战相关内容,多篇文章登入全站热榜、领域热榜、被技术社区收录。
链接>>>>>>
《SpringBoot实战》
文章目录
- 专栏推荐
- 🌟前言
- 🌟环境准备
- 🌟代码中配置文件路径
- 🌟创建版权信息TXT
- 🌟打包
- 🌟效果展示
- 🌟写在最后
🌟前言
前不久写了一个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])]) # 语言,中文简体
]
)
变量名解释
变量名 | 注释 |
---|---|
CompanyName | 公司名称 |
FileDescription | 文件描述 |
FileVersion | 文件版本 |
InternalName | 内部名称 |
LegalCopyright | 版权信息 |
OriginalFilename | 原始文件名 |
ProductName | 产品名称 |
ProductVersion | 产品版本 |
Translation | 语言代码(中文简体) |
🌟打包
进入到脚本所在路径,输入以下命令。
pyinstaller -D --version-file version.txt -i .\daen-JDKMAN.ico <script_name>.py
注意:打包完成后需要将配置文件放到exe所在目录中。
参数解释:
-D
:打包成一个文件夹。
-i
:修改ico图标。
--version-file
: 指定版权格式文件。
🌟效果展示
如果打包完成后若ico不展示,重命名exe文件名即可。
🌟写在最后
有关于Pyinstaller打包EXE时添加版本信息、作者信息并在运行时读取外部配置文件到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于学到更多的知识。