14

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

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

附加信息:

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

2 回答 2

16

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

A. 如果可执行文件名称包含相关关键字(如setupinstall或)updatepatch

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

C. .exe 文件名与清单文件中的名称不匹配。

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

exe = EXE(
    ...
    manifest=None,
    ...
    )

并且它不会要求输入密码,除非您将其重命名为设置或安装。

于 2016-01-13T13:52:43.523 回答
6

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

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

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

于 2012-05-10T19:39:22.507 回答