我编写了一个Python程序,我使用pyinstaller进行分发。到目前为止,我一直在使用onefile
选项来创建独立的可执行文件。到目前为止,这一直很好,但随着应用程序的增长,启动时间变得有点长。我也希望用户正确安装应用程序,以使升级更简单。
我一直在尝试使用pyinstaller的onedir
选项创建应用程序的单个目录版本。但是,生成的.exe文件需要运行管理员权限,onefile
版本没有。程序本身不需要任何这样的权限,所以我认为这是pyinstaller正在做的事情。如何创建不需要管理员权限的应用程序?
其他信息:
答案 0 :(得分:5)
一个。如果可执行文件名称包含相关关键字(例如setup
,install
,update
或patch
)
B中。应用程序请求它显示在其中。
℃。 .exe文件名与清单文件中的名称不多。
如果为应用程序包创建.spec文件,则可以添加
exe = EXE(
...
manifest=None,
...
)
并且它不会要求输入密码,除非您将其重命名为设置或安装。
答案 1 :(得分:4)
我最近遇到过这个问题,因此我解决问题的经验是:
带有--onefile
选项的PyInstaller在'executable'中创建一个清单文件。 Windows上的此清单文件告诉操作系统有关它捆绑的应用程序的一些信息。它指定的一件事是应用程序名称/清单文件。清单文件名的格式为appname.exe.manifest
。如果您的程序被PyInstaller冻结,它存储在清单中的可执行文件名将是PyInstaller /dist
文件夹下已完成的EXE 的名称。 如果重命名EXE,则打包的清单文件不再匹配!因此,创建一个与最终EXE文件名同名的清单文件,并使用--manifest
选项运行PyInstaller ,或者不要重命名PyInstaller创建的EXE。
使用自定义--manifest
打包PyInstaller项目时,重命名的程序不再请求管理员提升。