惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
有赞技术团队
有赞技术团队
S
Schneier on Security
aimingoo的专栏
aimingoo的专栏
T
Troy Hunt's Blog
U
Unit 42
Hacker News - Newest:
Hacker News - Newest: "LLM"
V2EX - 技术
V2EX - 技术
T
The Blog of Author Tim Ferriss
V
Visual Studio Blog
H
Heimdal Security Blog
H
Hacker News: Front Page
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Cloudbric
Cloudbric
Google DeepMind News
Google DeepMind News
C
Cisco Blogs
The Cloudflare Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
MyScale Blog
MyScale Blog
F
Fortinet All Blogs
N
News | PayPal Newsroom
Attack and Defense Labs
Attack and Defense Labs
D
DataBreaches.Net
N
News and Events Feed by Topic
Security Archives - TechRepublic
Security Archives - TechRepublic
Forbes - Security
Forbes - Security
Simon Willison's Weblog
Simon Willison's Weblog
F
Full Disclosure
The Register - Security
The Register - Security
L
LINUX DO - 热门话题
Webroot Blog
Webroot Blog
Google Online Security Blog
Google Online Security Blog
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
Intezer
S
Security Affairs
阮一峰的网络日志
阮一峰的网络日志
K
Kaspersky official blog
云风的 BLOG
云风的 BLOG
博客园 - 叶小钗
T
Threatpost
Spread Privacy
Spread Privacy
小众软件
小众软件
AWS News Blog
AWS News Blog
S
Secure Thoughts
S
Security @ Cisco Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks

博客园 - 毕海

golang的cgo支持调用C++的方法 [原]zeromq框架测试报告 [转]linux下查看进程内存使用情况 程序员必读系列 python 不同版本下载资源 提示“load System.Core failed” phpwind主要表结构的研究随笔[1] [转]Python快速教程 [转]80个Python经典资料(教程+源码+工具)汇总——下载目录 [转]一位大牛整理的python资源 [转]PyInstaller2的信息文件Version的生成 [转]使用PyInstaller2将Python脚本转化为可执行文件(上-安装部分) [转]使用PyInstaller2将Python脚本转化为可执行文件(中-使用部分) [转]Nginx安装 [转]Centos 5.5 卸载与安装java1.7环境 在win8 x64上安装Scrapy mongodb协议透传 mongodb的监控与性能优化 记一次MongoDB性能问题
[转]使用PyInstaller2将Python脚本转化为可执行文件(下-进阶使用)
毕海 · 2013-05-28 · via 博客园 - 毕海

安装PyInstaller2步骤请见: 
使用PyInstaller2将Python脚本转化为可执行文件(上-安装部分) 
http://www.cnblogs.com/balian/archive/2012/11/21/2780503.html

一些基本的使用步骤请见: 
使用PyInstaller2将Python脚本转化为可执行文件(中-使用部分) 
http://www.cnblogs.com/balian/archive/2012/11/22/2782308.html

本文博客园balian原创,欢迎转载,转载请说明原作者。

现在看看怎样给生成的可执行文件自定义图标。

PyInstaller2默认图标如下图所示。

image

如果要更换图标,请先准备好图标文件(文件后缀名为ico)。将需要的图标文件直接拷贝到C:\pyinstaller2文件夹。下图是一个例子。图标文件的文件名是tree.ico。

image

接着在Pyintstller2安装文件夹下运行如下命令,假设示例Python脚本文件main.py在c:\scripts文件夹中:

C:\pyinstaller2>python pyinstaller.py -F --icon=tree.ico c:\scripts\main.py

命令中参数--icon=tree.ico表示导入图标文件tree.ico。

该命令具体执行效果如下图。

image

带有新图标的main.exe文件可以在文件夹C:\pyinstaller2\main\dist找到,如图。

image

那怎样给生成的可执行文件加上版权和版本信息呢。

PyInstaller2可以根据一个文本文件给生成的可执行文件加上版本和版权信息。只要在命令中加入参数--version-file=就可以了,--version-file=version.txt就表示将文件version.txt中的版本版权信息加入到可执行文件。

这里有一个version.txt文件的典型范例。

 
VSVersionInfo(
  ffi=FixedFileInfo(
    filevers=(1, 0, 91, 1),
    prodvers=(1, 0, 92, 1),
    mask=0x3f,
    flags=0x0,
    OS=0x40004,
    fileType=0x1,
    subtype=0x0,
    date=(0, 0)
    ),
  kids=[
    StringFileInfo(
      [
      StringTable(
        '040904B0',
        [StringStruct('CompanyName', 'www.cnblogs.com/balian'),
        StringStruct('FileDescription', 'An PyInstaller Sample App'),
        StringStruct('FileVersion', '1.0.93.1'),
        StringStruct('InternalName', 'mainX'),
        StringStruct('LegalCopyright', 'www.cnblogs.com/balian. All rights reserved.'),
        StringStruct('OriginalFilename', 'AmAin.eXE'),
        StringStruct('ProductName', 'Running on MS Windows'),
        StringStruct('ProductVersion', '1.0.94.1')])
      ]),
    VarFileInfo([VarStruct('Translation', [1033, 1200])])
  ]
)

如果想知道这个文件怎么来的,请看这篇博文:

PyInstaller2的信息文件Version的生成 
http://www.cnblogs.com/balian/archive/2013/02/18/2915105.html

将version.txt文件根据需要修改以后,拷贝到到C:\pyinstaller2文件夹,执行下面的命令即可。

C:\pyinstaller2>python pyinstaller.py -F --icon=tree.ico --version-file=version.txt c:\scripts\main.py
命令执行如下图:
image

请看下面两个图中生成文件的版本版权信息和version.txt中对应信息的位置比对。显然这样就知道怎么修改version.txt文件了。

Version_Info_temp_2

image

请注意信息字段StringStruct('InternalName', 'mainX'),如果将生成的可执行文件拷贝到Win XP,在文件属性中,就很容易能找到它。

image


如果项目没那么复杂,一般情况下,可以考虑将filevers,prodvers,'ProductVersion'和'FileVersion'设置成一致的值。比如:

......
filevers=(1, 0, 2, 1),
prodvers=(1, 0, 2, 1),
......
StringStruct('FileVersion', '1.0.2.1'),
......
StringStruct('ProductVersion', '1.0.2.1')])
......


请试试看这是一个什么效果。

转自:http://www.cnblogs.com/balian/archive/2013/02/17/2915077.html