Почему для создания исполняемого файла 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 или установить.