Почему мой исполняемый файл, созданный pyinstaller, требует прав администратора? - PullRequest
10 голосов
/ 02 апреля 2012

Я написал программу на Python, которую я распространяю с помощью pyinstaller.До сих пор я использовал опцию onefile для создания отдельного исполняемого файла.До сих пор это было здорово, но по мере роста приложения время запуска становится немного длиннее.Я также хотел бы, чтобы пользователи правильно устанавливали приложение, чтобы упростить обновление.

Я пытался создать версию приложения в одном каталоге, используя опцию pyinstaller onedir.Тем не менее, для создания полученного в результате файла .exe требуются права администратора, чего не было в версии onefile.Сама программа не нуждается в таких привилегиях, поэтому я предполагаю, что это то, что делает pyinstaller.Как мне создать приложение, не требующее прав администратора?

Дополнительная информация:

  • Python 2.6, pyinstaller v1.4
  • Приложение использует PyQt4 и pygamemodules.
  • Попытка создать исполняемый файл для Windows 7.
  • Использование опции -w pyinstaller для создания исполняемого файла без окон.

Ответы [ 2 ]

6 голосов
/ 13 января 2016

привилегий администратора можно запросить в нескольких случаях:

A.если имя исполняемого файла содержит соответствующие ключевые слова (например, setup, install, update или patch)

B.приложение запрашивает его в своем манифесте.

C.имя файла .exe не совпадает с именем в файле манифеста.

Если вы создаете файл .spec для пакета приложения, вы можете добавить

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

, и он не будетпопросите пароль, если вы не переименуете его для установки или установки.

4 голосов
/ 10 мая 2012

Я недавно столкнулся с этой проблемой, и мой опыт ее решения был таким:

PyInstaller с параметром --onefile создает файл манифеста в «исполняемом файле». Этот файл манифеста в Windows сообщает ОС несколько вещей о приложении, с которым она связана. Одна из вещей, которую он указывает, это имя приложения / файл манифеста. Формат имени файла манифеста: appname.exe.manifest. Если ваша программа заморожена с помощью PyInstaller, имя исполняемого файла, которое она хранит в манифесте , будет именем, присвоенным завершенному EXE в папке /dist PyInstaller. ЕСЛИ вы переименовываете EXE-файл, упакованный с ним файл манифеста больше не совпадает! Поэтому создайте файл манифеста с тем же именем, что и конечное имя файла EXE, и запустите PyInstaller с параметром --manifest, ИЛИ don не переименовывайте EXE, созданный PyInstaller.

Когда вы упаковываете проект PyInstaller с пользовательским --manifest, переименованная программа больше не запрашивает повышение прав администратора.

...