2012-04-02 31 views
7

Napisałem program w języku Python, który rozprowadzam za pomocą programu piorącego. Do tej pory korzystałem z opcji onefile, aby utworzyć samodzielny plik wykonywalny. Do tej pory było świetnie, ale wraz z rozwojem aplikacji czas uruchamiania jest nieco dłuższy. Chciałbym również, aby użytkownicy zainstalowali aplikację poprawnie, aby uprościć aktualizację.Dlaczego mój utworzony plik wykonywalny programu Pyinstall wymaga uprawnień administratora?

Próbowałem utworzyć jedną wersję katalogu aplikacji przy użyciu opcjipyinstallera. Jednak utworzony plik exe, który jest tworzony, wymaga uprawnień administratora do uruchomienia, co nie było możliwe w wersji onefile. Sam program nie potrzebuje takich przywilejów, więc zakładam, że to jest coś, co robi program piszący. Jak utworzyć aplikację, która nie wymaga uprawnień administratora?

Dodatkowe informacje:

  • Python 2.6, pyinstaller v1.4
  • aplikacja używa modułów PyQt4 i Pygame.
  • Próba utworzenia pliku wykonywalnego dla systemu Windows 7.
  • Użycie opcji -w pauseinstaller w celu utworzenia pliku wykonywalnego bez okien.
+0

Równie dobrze może być czymś, co robi Windows. Ma pewien stopień automatycznego wykrywania instalacji i może oznaczać twój plik wykonywalny jako taki.Idealnie, program powinien określać wymagany poziom dostępu w swoim manifeście. Nie jestem pewien, czy Pyinstaller pozwala robić takie rzeczy. –

Odpowiedz

3

Niedawno uruchomić w tej kwestii, a moje doświadczenie w rozwiązywaniu było tak:

PyInstaller z --onefile opcja tworzy plik manifestu w „wykonywalny”. Ten plik manifestu w systemie Windows informuje OS o kilku rzeczach dotyczących aplikacji, z którą jest dołączony. Jedną z rzeczy, które określa, jest plik nazwa/plik manifestu. Format pliku manifestu to appname.exe.manifest. Jeśli twój program jest zamrożony przez PyInstaller, nazwa pliku wykonywalnego, który zapisuje w manifeście , będzie nazwą nadaną skompilowanym EXE pod folderem PyInstaller /dist. JEŚLI zmienisz nazwę pliku EXE, plik manifestu, który go zapakował, nie pasuje już! Dlatego utwórz plik manifestu o tej samej nazwie, co nazwa pliku końcowego EXE i uruchom PyInstaller za pomocą opcji --manifest, LUB nie zmieniaj nazwy pliku EXE tworzonego przez PyInstaller.

Podczas pakowania projektu PyInstaller za pomocą niestandardowego --manifest program o zmienionej nazwie nie żąda już podniesienia uprawnień administratora.

1

przywileje administratora może zostać poproszony w kilku przypadkach:

A. jeżeli nazwa pliku wykonywalnego zawiera odpowiednie słowa kluczowe (jak setup, install, update lub patch)

B. aplikacja żąda go w jego manifest.

C. Nazwa pliku .exe nie zawiera zbyt wielu nazw w pliku manifestu.

jeśli utworzyć plik .spec dla pakietu aplikacji, można dodać

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

i nie poprosi o hasło, chyba że ją zmienić w konfiguracji lub instalacji.

Powiązane problemy