Почему для создания исполняемого файла pyinstaller требуются права администратора?
Я написал программу Python, которую я распространяю с помощью pyinstaller. Я использовал onefile
опция до сих пор для создания автономного исполняемого файла. Это было здорово до сих пор, но поскольку приложение выросло, время запуска становится немного длинным. Я также хотел бы, чтобы пользователи правильно установили приложение, чтобы упростить обновление.
Я пытаюсь создать одну версию каталога приложения с помощью pyinstaller по . Однако в результате .файл EXE это создается требует привилегий администратора для запуска, которые onefile
версии не было. Сама программа не нуждается в таких привилегиях, поэтому я предполагаю, что это то, что делает pyinstaller. Как создать приложение, которое не требует прав администратора?
дополнительная информация:
- Python 2.6, pyinstaller v1.4
- приложение использует модули PyQt4 и pygame.
- пытаюсь создать исполняемый файл для Windows 7.
- используя опцию-W pyinstaller создавать безоконные исполняемый.
2 ответов
недавно я столкнулся с этой проблемой, и мой опыт в ее решении был таким:
PyInstaller с --onefile
опция создает файл манифеста в "исполняемом файле". Этот файл манифеста в Windows сообщает ОС несколько вещей о приложении, с которым он поставляется. Одна из вещей, которые он указывает, - это имя приложения/файл манифеста. Формат имени файла манифеста -appname.exe.manifest
. Если программа заморожена с помощью PyInstaller, имя исполняемого файла, которое она хранит в манифесте будет имя, данное завершенному EXE под /dist
папка PyInstaller. если вы переименуете EXE, файл манифеста, упакованный с ним, больше не соответствует! поэтому создайте файл манифеста с тем же именем, что и окончательное имя файла EXE, и запустите PyInstaller с помощью --manifest
опция или не переименовывайте EXE, который создает PyInstaller.
при упаковке проекта PyInstaller с пользовательским --manifest
, переименованная программа больше не запрашивает от имени администратора.
права администратора могут быть запрошены в нескольких случаях:
A. Если имя исполняемого файла содержит нужные ключевые слова (например,setup
, install
, update
или patch
)
B. приложение запрашивает его в манифесте.
С. В.exe имя файла не так много имя в файле манифеста.
если вы создаете .файл spec для вашего пакета приложений, вы можете добавить
exe = EXE(
...
manifest=None,
...
)
и он не будет запрашивать пароль, если вы не переименуете его в setup или установить.