2012-04-02 12 views
7

Ich habe ein Python-Programm geschrieben, das ich mit pyinstaller verteile. Ich habe bisher die Option onefile verwendet, um eine eigenständige ausführbare Datei zu erstellen. Das war bisher großartig, aber als die Anwendung gewachsen ist, wird die Startzeit etwas lang. Ich möchte auch, dass Benutzer die Anwendung ordnungsgemäß installieren, um die Aktualisierung zu vereinfachen.Warum benötigt mein pyinstaller erstellt ausführbare Administratorrechte?

Ich habe versucht, eine einzige Verzeichnisversion der App mit pyinstaller onedir Option zu erstellen. Die resultierende .exe-Datei, die erstellt wird, benötigt jedoch Administratorberechtigungen, die in der onefile-Version nicht ausgeführt werden. Das Programm selbst benötigt keine solchen Privilegien, also nehme ich an, dass dies etwas ist, was pyinstaller macht. Wie erstelle ich eine Anwendung, die keine Administratorrechte erfordert?

Zusätzliche Informationen:

  • Python 2.6, pyinstaller v1.4
  • Anwendung verwendet PyQt4 und pygame Module.
  • Der Versuch, eine ausführbare Datei für Windows 7 zu erstellen.
  • Verwenden der Option -Wpyinstaller zum Erstellen einer fensterlosen ausführbaren Datei.
+0

Es könnte genauso gut etwas sein, das Windows macht. Es hat ein gewisses Maß an automatischer Erkennung des Installers und könnte Ihre ausführbare Datei als solche markieren.Idealerweise sollte ein Programm die Zugriffsebene angeben, die es in seinem Manifest benötigt. Ich bin mir nicht sicher, ob Pyinstaller so etwas ermöglicht. –

Antwort

3

Ich habe vor kurzem in diesem Thema laufen, und meine Erfahrung war es somit bei der Lösung:

PyInstaller mit --onefile Option erstellt eine Manifest-Datei in der ‚ausführbar‘. Diese Manifestdatei unter Windows teilt dem Betriebssystem ein paar Dinge über die Anwendung mit, mit der es gebündelt ist. Eines der Dinge, die es angibt, ist der Anwendungsname/Manifest-Datei. Das Format des Manifests Dateiname ist appname.exe.manifest. Wenn Ihr Programm mit PyInstaller eingefroren ist, ist der Name der ausführbaren Datei, die im Manifest gespeichert wird, der Name der abgeschlossenen EXE unter dem Ordner /dist von PyInstaller. Wenn Sie die EXE umbenennen, stimmt die damit gepackte Manifestdatei nicht mehr überein! Erstellen Sie daher eine Manifestdatei mit demselben Namen wie der endgültige EXE-Dateiname, und führen Sie PyInstaller mit der Option aus ODER benennen Sie die von PyInstaller erstellte EXE nicht um.

Wenn Sie das PyInstaller-Projekt mit der benutzerdefinierten --manifest packen, fordert das umbenannte Programm keine Administratorhöhe mehr an.

1

Admin-Rechte konnte in wenigen Fällen gestellt werden:

A., wenn die Namen der ausführbaren Datei relevante Keywords (wie setup, install, update oder patch)

B. die Anwendung enthält fordert sie darin manifest ist.

C. der Name der .exe-Datei nicht viel der Name in der Manifestdatei.

, wenn Sie eine spec-Datei für Ihr Anwendungspaket zu erstellen, können Sie

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

hinzufügen und es wird nicht für Passwort fragen, wenn Sie es einrichten umbenennen oder installieren.

Verwandte Themen