Win7任务栏图标不适合PySide py2exe应用程序

时间:2013-07-16 21:29:41

标签: python-2.7 windows-7 pyside py2exe

我有一个PySide应用程序,我正在转换为在Windows 7上运行的exe,没有任何依赖使用py2exe。

这是setup.py

的设置
setup(windows=[{
              "script" : "src/main.py", 
              "dest_base" : "xxx-setup-" + configuration.version,
              "icon_resources": [(1, "images/xxx_icon.ico")],
              "other_resources": [(24,1, manifest)]
           }],
    name='xxx',
    data_files=[('imageformats',[r'C:\Python27\Lib\site-packages\PySide\plugins\imageformats\qico4.dll'])],
    options={"py2exe" : {
            "includes" : ["simplejson", "sip", "PySide.QtNetwork", "requests", "pysphere", "PySide.QtCore"],
            "excludes" : ["Tkconstants", "Tkinter", "tcl"],
            "dll_excludes" : ['w9xpopen.exe', 'MSVCP90.dll'],
            "bundle_files" : 1,
            "optimize": 2,
            "compressed": True }},
    zipfile=None,
  **py2exe_options)

在src / main.py里面我有:

...
webAppDir = unzipResources()
app = QtGui.QApplication(sys.argv)
window = QtGui.QMainWindow()
app.setWindowIcon(QtGui.QIcon('%s/images/xxx_icon.ico' % webAppDir))
window.setWindowIcon(QtGui.QIcon('%s/images/xxx_icon.ico' % webAppDir))
...

如果我将我的bundle_files更改为2并且在此处建议使用dll_excludes和data_files,则它可以正常工作并且图标显示在任务栏和窗口栏中:

https://stackoverflow.com/a/5643540/901641

Unforuntately,将bundle_files设置为2意味着python不包含在exe中,因此它要求用户安装python,这是不可接受的。那么,为什么窗口栏和任务栏图标没有正确设置?

编辑:进一步的实验表明,只需将bundle_files设置为3就可以完成这项工作,而无需更改dll_excludes或data_files。不幸的是,这意味着Python不包含在exe中,因此它要求用户安装Python,这也是不可接受的。

编辑2x:我尝试通过在setup.py中添加以下内容来扩展py2exe:

from py2exe.build_exe import py2exe as build_exe

class Extender(build_exe):
    def copy_dlls(self, dlls):
        dlls.append(r'C:\Python27\Lib\site-packages\PySide\plugins\imageformats\qico4.dll')
        build_exe.copy_dlls(self, dlls)

py2exe_options={'cmdclass':{'py2exe':Extender},}

它将dll复制到临时构建目录中,但实际上并没有显示图像。

0 个答案:

没有答案