سؤال

أحافظ على تطبيق منصة عرضية، بناء على PYQT يعمل على Linux Mac و Windows.

يتم توزيع إصدارات Windows و Mac باستخدام PY2EXE و PY2App، والتي تنتج حزم كبيرة جدا (~ 40 ميغابايت).

أرغب في إضافة وظيفة "تحديث تلقائي"، استنادا إلى بقع لحد حجم التنزيلات:

  • تحقق من وجود إصدارات جديدة على خادم HTTP
  • قم بتنزيل البقع اللازمة للتحديث إلى الإصدار الأخير
  • قم بتطبيق قائمة التصحيح وإعادة تشغيل التطبيق

لدي بعض الاسئلة:

  • ما هي الطريقة المفضلة لتحديث تطبيق Windows منذ أن تم تأمين الملفات المفتوحة ولا يمكن الكتابة فوقها؟
  • كيف يمكنني إعداد وتطبيق التصحيحات؟ ربما تستخدم BSDIFF / PSPACH. ?

تحديث

أنا جعلت فئة بسيطة لجعل بقع مع BSDIFF., ، وهو فعال للغاية كما هو معلن على موقعهم: فرق على إصدارات PY2EXE الخاصة بي من تطبيقي (~ 75 ميغابايت غير مضغوط) تنتج رقعة 44 كيلو بايت! صغيرة بما يكفي بالنسبة لي، سألتزم بهذا الشكل.

الرمز متاح في حزمة "التحديث" من pyflu., ، مكتبة صغيرة من كود بيثون.

هل كانت مفيدة؟

المحلول

لا أعتقد أن PY2EXE يدعم تحديثات مصححة. ومع ذلك، إذا كنت لا حزمة الحزمة بأكملها في EXE واحد (مثال PY2EXE - أسفل الصفحة)، يمكنك الابتعاد عن تحديثات أصغر من خلال استبدال ملفات معينة فقط, ، مثل ملف exe، على سبيل المثال. هذا يمكن أن يقلل من حجم التحديثات بشكل كبير.

يمكنك كتابة منفصلة تحديث التطبيق, والتي يمكن تنزيلها / ركض من داخل التطبيق الخاص بك. قد يكون هذا التطبيق مختلفا عن كل تحديث، حيث قد تتغير الملفات التي يجب تحديثها.

بمجرد أن يطلق التطبيق المحدث، ستحتاج إلى إغلاق نفسه حتى يمكن الكتابة فوق الملفات. بمجرد اكتمال التحديث، يمكنك إعادة فتح التطبيق قبل إغلاق نفسها.

نصائح أخرى

لا أعرف عن بقع، ولكن على نظام التشغيل X "قياسي" لهذا مع تطبيقات الكاكاو تألق. وبعد أساسا يفعل "Appcasting". يقوم بتنزيل التطبيق الكامل في كل مرة. قد يستحق النظر إليها من أجل الإلهام.

أتصور على OS X، يمكنك فقط تنزيل الجزء الفعلي من حزمة التطبيق الخاصة بك التي تحتوي على التعليمات البرمجية المحددة الخاصة بك (وليس Libs وغيرها التي تعززها) وكلها صغيرة إلى حد ما وسهل الاستبدال في الحزمة.

على Windows، من المحتمل أنك ستتمكن من إجراء خدعة مماثلة من خلال عدم تجميع تطبيقك في EXE واحد - مما يتيح لك تغيير الملف المرئي الذي تم تغييره بالفعل.

أود أن أتصور رمز بيثون الفعلي الخاص بك سيكون أقل بكثير من 40 ميجابايت، لذلك ربما تكون الطريق للذهاب.

بالنسبة لاستبدال تطبيق التشغيل، حسنا، تحتاج أولا إلى العثور على موقعه، حتى تتمكن من استخدام sys.executable للحصول على نقطة انطلاق، فمن المحتمل أن تكون قد شوكة عملية تابعة لها، وقتل العملية الأصل وتناول الطفل بديلا الفعلي؟

أرجم حاليا مع تطبيق Wxpython صغير وتتساءل عن هذه المشكلة بالضبط. أحب أن أسمع حول ما توصلت إليه.

أيضا كيف كبيرة هو التطبيق عند ضغط؟ إذا كان يضغط جيدا، فربما لا يزال بإمكانك إرسال كل شيء.

هذا هو 4 سنوات من العمر الآن، ولكن ماذا عن esky.?

نظرا لأن Py2exe يضع جميع الوحدات المترجمة لتطبيقك في ملف مضغوط، فيمكنك محاولة تحديث هذا الملف عن طريق إنشاء برنامج نصي يقوم بتحديثه من مجموعة معينة من الملفات. ثم استبدل الملفات المتبقية التي تغيرت (والتي يجب أن تكون قليلة، إن وجدت).

وظيفة قديمة، لكنني اعتقدت أنني كنت أذكر pyupdater مع pyinstaller.

وهو يدعم الأمازون و SCP.

في المستقبل، وفقا لوظائف جيثب الأخيرة، فإنها تخطط لدعم البدائل الحرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top