سؤال

ما هي أفضل طريقة لإنهاء برنامج ثم تشغيل تعليمات برمجية إضافية من البرنامج الذي يتم إنهاؤه؟على سبيل المثال، ما هي الطريقة الأفضل لبرنامج ما لتحديث نفسه ذاتيًا؟

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

المحلول

لديك خياران:

يمكنك استخدام تطبيق آخر .exe لإجراء التحديث التلقائي.ربما تكون هذه هي الطريقة الأفضل.

يمكنك أيضًا إعادة تسمية ملف exe الخاص بالبرنامج أثناء تشغيله.ومن ثم يسمح لك بالحصول على الملف من بعض خوادم التحديث واستبداله.عند بدء تشغيل البرنامج التالي، سيتم استخدام ملف .exe الجديد.يمكنك بعد ذلك حذف الملف المعاد تسميته عند بدء التشغيل.

نصائح أخرى

انها تريد ان تكون حقًا من المفيد معرفة اللغة التي نتحدث عنها هنا.أنا متأكد من أنني أستطيع أن أقدم لك بعض النصائح الرائعة للقيام بذلك في PowerBuilder أو Cobol، ولكن قد لا يكون هذا هو ما تبحث عنه حقًا!ومع ذلك، إذا كنت تتحدث لغة Java، فيمكنك استخدام خطاف إيقاف التشغيل - فهو يعمل بشكل رائع بالنسبة لي.

هناك شيء آخر يجب مراعاته وهو أن معظم التطبيقات "الرئيسية" التي كنت أستخدمها (FileZilla وPaint.NET وما إلى ذلك) تتطلب من المحدثين إلغاء تثبيت الإصدار السابق من التطبيق ثم إجراء تثبيت جديد للإصدار الجديد من التطبيق.

أدرك أن هذا لن ينجح مع التطبيقات الكبيرة حقًا، ولكن يبدو أن هذه عملية "مفضلة" للتطبيقات الصغيرة والمتوسطة الحجم.

لا أعرف طريقة للقيام بذلك بدون برنامج ثانٍ يتم تشغيله بواسطة البرنامج الأساسي قبل إيقاف التشغيل.يقوم البرنامج 2 بتنزيل التغييرات وتثبيتها ثم إعادة تشغيل البرنامج الأساسي.

لقد فعلنا شيئًا كهذا في تطبيقنا السابق.لقد التقطنا صورة إنهاء البرنامج (في .NET 2.0) إما من خلال علامة X أو زر الإغلاق، ثم بدأنا عملية تحديث في الخلفية لم يراها المستخدم.سيتحقق من الخادم (تطبيق خادم العميل) بحثًا عن تحديث، وإذا كان هناك تحديث متاح، فسيتم تنزيله في الخلفية باستخدام BITS.ثم في المرة التالية التي يتم فيها فتح التطبيق، سيدرك أن هناك إصدارًا جديدًا (وضعنا علامة) وستظهر رسالة تنبه المستخدم إلى الإصدار الجديد، وزر للنقر إذا أراد عرض الميزات الجديدة المضافة إلى هذا الإصدار.

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

إذا كنت تستخدم كتابة تطبيق .NET، فقد تفكر في استخدام ClickOnce.إذا كنت بحاجة إلى قدر كبير من التخصيص، فقد تبحث في مكان آخر.

لدينا عملية خارجية تقوم بالتحديث لنا.عندما يجد تحديثًا، يقوم بتنزيله إلى مجلد ثانوي ثم ينتظر خروج التطبيق الرئيسي.عند الخروج، فإنه يستبدل كافة الملفات الحالية.تبدأ العملية الأساسية عملية التحديث كل 4 ساعات.نظرًا لأن عملية التحديث ستنتظر خروج التطبيق الأساسي، فلا يتعين على التطبيق الأساسي إجراء أي معالجة خاصة بخلاف بدء تطبيق التحديث.

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

نأمل أن يكون ذلك منطقيا!

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