2012-04-02 13 views
7

Pyinstaller kullanarak dağıttığım bir Python programı yazdım. Bağımsız bir yürütülebilir dosya oluşturmak için şu ana kadar onefile seçeneğini kullanıyorum. Şimdiye kadar bu harika oldu, ancak uygulama büyüdükçe başlangıç ​​zamanı biraz uzuyor. Kullanıcıların, uygulamayı daha kolay bir şekilde yükseltmek için uygulamayı doğru bir şekilde yüklemelerini de istiyorum.Kaldırıcıyı çalıştırdığım yürütülebilir dosya yöneticisi yönetici ayrıcalıklarına neden ihtiyaç duyuyor?

Pyinstaller'ın onedir seçeneğini kullanarak uygulamanın tek bir dizin sürümünü oluşturmaya çalışıyorum. Ancak, oluşturulan ortaya çıkan .exe dosyası çalıştırmak için yönetici ayrıcalıkları gerektirir, onefile sürümü değil. Programın kendisi böyle bir ayrıcalıklara ihtiyaç duymaz, bu yüzden bu, pyinstaller'ın yaptığı bir şey olduğunu varsayar. Yönetici ayrıcalıkları gerektirmeyen bir uygulamayı nasıl oluşturabilirim?

Ek bilgi:

  • Python 2.6, pyinstaller v1.4
  • Uygulama PyQt4 ve pygame modüllerini kullanır.
  • Windows 7 için yürütülebilir oluşturmaya çalışılıyor.
  • Penceresiz bir yürütülebilir dosya oluşturmak için -w pyinstaller seçeneğini kullanın.
+0

Bu, Windows'un yaptığı bir şey kadar kolay olabilir. Yükleyici otomatik algılamanın bir derecesine sahiptir ve yürütülebilir dosyanızı bu şekilde işaretleyebilir.İdeal olarak, bir program kendi manifestinde ihtiyaç duyduğu erişim düzeyini belirtmelidir. Pyinstaller bu tür bir şeyi yapmanıza izin verip vermediğinden emin değil. –

cevap

3

Geçenlerde bu konuda haline çalıştırmak ve çözmede benim deneyim böylelikle oldu:

PyInstaller seçeneği --onefile ile 'yürütülebilir' bir bildirim dosyası oluşturur. Windows'daki bu manifest dosyası, OS'ye, birlikte verildiği uygulama hakkında birkaç şey söyler. Belirttiği şeylerden biri, uygulama adı/manifest dosyasıdır. Bildiri dosya adı biçimi appname.exe.manifest'dur. Programınız PyInstaller ile dondurulmuşsa, bildirgesinde depolanan yürütülebilir ad, PyInstaller öğesinin /dist klasörünün altında tamamlanan EXE'a verilen ad olacaktır. EXE'yi yeniden adlandırırsanız, onunla eşleşen bildirim dosyası artık eşleşmiyor! Bu nedenle, son EXE dosya adıyla aynı ada sahip bir manifest dosyası oluşturun ve PyInstaller'ı --manifest seçeneğiyle çalıştırın VEYA PyInstaller'ın oluşturduğu EXE'yi yeniden adlandırmayın.

PyInstaller projesini özel --manifest ile paketlediğinizde, yeniden adlandırılan program artık yönetici yükseltmesi istemiyor.

1

yönetici ayrıcalıkları birkaç durumda istenebilir: yürütülebilir adı alakalı anahtar kelimeleri içermesi

A. eğer tezahür var içinde (gibi setup, install, update veya patch)

B. uygulamanın ister.

C. .exe dosya adı, manifest dosyasında çok fazla ad yoktur.

başvurunuzun paketi için bir spec dosyası oluşturmak, sen

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

ekleyebilir ve kurulum için yeniden adlandırın veya yüklemek sürece, şifre istemez.