为什么我的pyinstaller创建的可执行文件需要管理员权限?

Wha*_*ang 10 pygame pyinstaller pyqt4

我编写了一个Python程序,我使用pyinstaller进行分发.onefile到目前为止,我一直在使用该选项来创建独立的可执行文件.到目前为止,这一直很好,但随着应用程序的增长,启动时间变得有点长.我也希望用户正确安装应用程序以使升级更简单.

我一直在尝试使用pyinstaller onedir选项创建应用程序的单个目录版本.但是,生成的.exe文件需要管理员权限才能运行,而onefile版本则没有.程序本身不需要任何这样的权限,所以我认为这是pyinstaller正在做的事情.如何创建不需要管理员权限的应用程序?

附加信息:

  • Python 2.6,pyinstaller v1.4
  • 应用程序使用PyQt4和pygame模块.
  • 尝试为Windows 7创建可执行文件.
  • 使用-w pyinstaller选项创建无窗口可执行文件.

Oha*_*hen 10

在少数情况下可能会询问管理员权限:

A.如果可执行文件名中包含相关的关键字(如setupinstallupdatepatch

B.应用程序在清单中请求它。

C..exe文件名在清单文件中的名称不多。

如果您为应用程序包创建一个.spec文件,则可以添加

exe = EXE(
    ...
    manifest=None,
    ...
    )
Run Code Online (Sandbox Code Playgroud)

除非您将其重命名为安装程序或安装程序,否则它不会要求输入密码。


Pen*_*der 6

我最近遇到了这个问题,我解决这个问题的经验是:

带有--onefile选项的PyInstaller在“可执行文件”中创建一个清单文件。Windows 上的这个清单文件告诉操作系统一些关于它捆绑的应用程序的信息。它指定的一件事是应用程序名称/清单文件。清单文件名的格式为appname.exe.manifest. 如果您的程序被 PyInstaller 冻结,它存储在清单中的可执行文件名称将是/distPyInstaller 文件夹下完成的 EXE的名称。如果重命名 EXE,则打包的清单文件不再匹配!因此,创建一个与最终 EXE 文件名同名的清单文件并使用--manifest选项运行 PyInstaller ,或者不要重命名 PyInstaller 创建的 EXE。

当您使用 custom 打包 PyInstaller 项目时--manifest,重命名的程序不再请求管理员提升。