我正在尝试将此清单添加到PyInstaller编译的EXE中:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="TestApp" processorArchitecture="amd64" type="win32" version="1.0.0.0"/>
<dependency>
<dependentAssembly>
<assemblyIdentity language="*" name="Microsoft.Windows.Common-Controls" processorArchitecture="amd64" publicKeyToken="6595b64144ccf1df" type="win32" version="6.0.0.0"/>
</dependentAssembly>
</dependency>
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
当我使用PyInstaller的--manifest选项时,它不会被添加到EXE中,也不会合并到生成的清单文件中。我甚至找不到一行代码说它在构建期间对清单做了任何事情。然后我用MT.exe文件嵌入清单而不出错。这个清单文件是PyInstaller生成的文件的修改。我不得不删除兼容性部分,因为MT.exe文件说在命名空间兼容性中没有兼容性选项。。。我在中添加了部分,以声明应用程序具有dpiAware。在我这样做之后,我可以看到清单部分加入了ResourceHacker,但当我去运行程序时,它说不能打开self,也不能运行。当我使用ResourceHacker嵌入清单时,程序将加载,但仍然比打开DPI缩放的屏幕更大,就像它忽略了清单文件一样。我使用的是python3.5.1和kivy1.9.1。在
我在使用pyinstaller3.3时也遇到了同样的问题。给出了一个解释here,我修改了他们的答案,将其更新为pyinstaller3.3,这是一个笨拙的解决办法。不幸的是,他们的解决方案需要编辑Pyinstaller源代码。在
在Pyinstaller中编辑
<python install root>\Lib\site-packages\PyInstaller\building\api.py
源文件,因此assemble方法的开头如下所示:也在api.py文件在标记为
^{pr2}$添加
最后,在EXE部分的spec文件中添加:
相关问题 更多 >
编程相关推荐