PyInstaller UAC无法在onefile模式下工作

时间:2017-03-28 11:56:20

标签: python exe pyinstaller


各位大家好。

我有一个小的python项目,并希望将其转换为单个可执行文件。我正在使用......

  • Windows 7
  • Python 3.4
  • PyInstaller 3.2.1

我的PyInstaller命令是,

PyInstaller -y -w -F -n output_file_name --uac-admin --clean source_file.py

此命令正常工作。但是单个输出文件在执行时不会要求管理员权限。并且可执行文件图标上没有盾牌标记。

删除-F选项(相当于--onefile)时,输出可执行文件的图标上有盾牌标记并询问管理员权限。但这不是我想要的。我想要一个可执行文件。

我在dist \ output_file_name文件夹中找到了一个清单文件(output_file_name.exe.manifest)。所以我做了......

PyInstaller -y -w -F -n output_file_name --manifest output_file_name.exe.manifest --uac-admin --clean source_file.py

但是这个命令不起作用。它的单个可执行文件仍然不会要求管理员权限。

我删除了PyInstaller并安装了最新的开发版本。

pip install git+https://github.com/pyinstaller/pyinstaller.git@develop

但结果是一样的。它的输出在图标上没有盾牌标记,也不会询问管理员权限。

你有什么想法吗?

请帮助我!

3 个答案:

答案 0 :(得分:2)

我发现了什么问题!

关键点是......

  1. 安装PyInstaller 3.0
  2. 清单文件必须位于 dist 文件夹中,其中包含单个可删除文件
  3. 清单文件的名称必须与输出文件相同。
  4. 如果清单文件位于dist文件夹中,则无需指定--manifest选项。 --uac-admin就够了。
  5. 您可以在构建文件夹中找到清单文件。
  6. 谢谢。

答案 1 :(得分:0)

添加passion053's的答案,就我而言,我使用-F而不是--onefile,它对我来说很好用,但是是的,您需要在同一位置添加manifest文件目录作为您的单个可执行文件。

注意:我使用的是pyinstaller版本3.5。这对我的情况很好。

由于我没有声望,我可以在他的回答中添加评论。

快乐编码!

答案 2 :(得分:0)

-r prog.exe.manifest,1命令行中添加pyinstaller对我而言是可行的,此后无需将清单文件放在纯纯exe文件exe附近。