2012-04-02 14 views
7

मैंने एक पायथन प्रोग्राम लिखा है जिसे मैं pyinstaller का उपयोग करके वितरित करता हूं। मैं एक स्टैंडअलोन निष्पादन योग्य बनाने के लिए अब तक onefile विकल्प का उपयोग कर रहा हूं। अब तक यह बहुत बढ़िया रहा है, लेकिन जैसे ही एप्लिकेशन बढ़ गया है स्टार्टअप समय थोड़ा सा हो रहा है। मैं उपयोगकर्ताओं को भी सरल बनाने के लिए एप्लिकेशन को ठीक से इंस्टॉल करना चाहता हूं।मेरे pyinstaller निष्पादन योग्य बनाने के लिए व्यवस्थापक विशेषाधिकारों की आवश्यकता क्यों है?

मैं pyinstaller के onedir विकल्प का उपयोग कर ऐप का एक एकल निर्देशिका संस्करण बनाने की कोशिश कर रहा हूं। हालांकि, जिसके परिणामस्वरूप .exe फ़ाइल बनाई गई है, उसे चलाने के लिए व्यवस्थापकीय विशेषाधिकारों की आवश्यकता होती है, जो onefile संस्करण नहीं था। कार्यक्रम को स्वयं को ऐसे विशेषाधिकारों की आवश्यकता नहीं है, इसलिए मुझे लगता है कि यह ऐसा कुछ है जो pyinstaller कर रहा है। मैं एक ऐसा ऐप्लिकेशन कैसे बना सकता हूं जिसके लिए व्यवस्थापकीय विशेषाधिकारों की आवश्यकता नहीं है?

अतिरिक्त जानकारी:

  • अजगर 2.6, pyinstaller v1.4
  • आवेदन PyQt4 और pygame मॉड्यूल का उपयोग करता है।
  • विंडोज 7 के लिए निष्पादन योग्य बनाने की कोशिश कर रहा है।
  • एक विंडो रहित निष्पादन योग्य बनाने के लिए -w pyinstaller विकल्प का उपयोग करना।
+0

यह आसानी से कुछ ऐसा हो सकता है जो विंडोज कर रहा है। इसमें कुछ डिग्री इंस्टॉलर ऑटो-डिटेक्शन है और यह आपके निष्पादन योग्य को चिह्नित कर सकता है।आदर्श रूप से, एक कार्यक्रम को उस पहुंच स्तर को निर्दिष्ट करना चाहिए जिसे इसके प्रकट में आवश्यक है। सुनिश्चित नहीं है कि क्या पाइंस्टॉलर आपको उस तरह की चीज़ करने देता है। –

उत्तर

3

मैं हाल ही में इस मुद्दे में चलाने की है, और हल करने में मेरे अनुभव में यह इस प्रकार था:

PyInstaller --onefile साथ विकल्प 'निष्पादन' में एक प्रकट फ़ाइल बनाता है। विंडोज़ पर यह मैनिफेस्ट फ़ाइल ओएस को उस एप्लिकेशन के बारे में कुछ चीजें बताती है, जिसके साथ इसे बंडल किया गया है। यह निर्दिष्ट चीजों में से एक है, एप्लिकेशन नाम/मेनिफेस्ट फ़ाइल है। मेनिफेस्ट फ़ाइल नाम का प्रारूप appname.exe.manifest है। यदि आपका प्रोग्राम PyInstaller के साथ जमे हुए है, तो निष्पादन योग्य नाम जो इसे मैनिफेस्ट में संग्रहीत करता है, वह नाम EXE पर दिया गया है जो PyInstaller के /dist फ़ोल्डर के अंतर्गत दिया गया है। यदि आप EXE का नाम बदलते हैं, तो इसके साथ पैक की गई मैनिफ़ेस्ट फ़ाइल अब मेल नहीं खाती है! इसलिए, अंतिम EXE फ़ाइल नाम के समान नाम के साथ एक मेनिफेस्ट फ़ाइल बनाएं और --manifest विकल्प के साथ PyInstaller चलाएं, या EXE का नाम बदलें जो PyInstaller बनाता है।

जब आप कस्टम --manifest के साथ PyInstaller प्रोजेक्ट को पैकेज करते हैं, तो नामित प्रोग्राम अब व्यवस्थापक ऊंचाई का अनुरोध नहीं करता है।

1

व्यवस्थापक विशेषाधिकारों कुछ मामलों में कहा जा सकता है:

ए यदि निष्पादन योग्य नाम प्रासंगिक खोजशब्द शामिल (जैसे setup, install, update या patch)

बी आवेदन यह प्रकट है में यह अनुरोध करता है।

सी .exe फ़ाइल नाम मेनिफेस्ट फ़ाइल में अधिक नाम नहीं है।

अगर आप अपने आवेदन पैकेज के लिए एक .spec फ़ाइल बनाते हैं, आप

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

जोड़ सकते हैं और जब तक आप इसे सेटअप करने के लिए का नाम बदलें या स्थापित यह, पासवर्ड के लिए नहीं कहेंगे।

संबंधित मुद्दे