عابر سبيل
المساهمات : 83 تاريخ التسجيل : 14/03/2013
| موضوع: ( مجابة ) استفسار بخصوص فك ضغط وتسطيب برنامج الإثنين مارس 25, 2013 11:42 am | |
| التساؤل لأيمن 107 السلام عليكم ورحمة الله وبركاتة ****** اسعد الله اوقاتكم بكل خير اخواني في الله مشكلتي تتلخص في الاتي: - عندي برنامج تسطيب صامت مضغوط بصيغة zip وبباسوورد - والمطلوب عند الضغط علي زر التثبيت يقوم بفك الضغط وتثبيت البرنامج فما الكود المطلوب لذلك وشكرا الرد لهيثم الأمر بسيط ان شاء الله .. اولا استخدم امر فك الضغط وليكن المسار الذي سوف يفك الضغط إلية مجلد Temp - الكود:
-
كود: Zip.Extract("AutoPlay\\Docs\\MyZip.zip", {"*.*"}, _TempFolder, true, true, "", ZIP_OVERWRITE_NEVER, nil);
ثم بعد ذلك أمر التشغيل - الكود:
-
كود: File.Open(_TempFolder.."\\filename.exe", "", SW_SHOWNORMAL);
بالتوفيق بارك الله فيك استاذ هيثم وزادك الله من علمة ممكن اسفسار اخر اخي العزيز هل يمكن ان اضع كود اخر لحذف الملف من التمب بعد عملية التسطيب؟ وقمت بكتابة هذا الكود ولكن دون جدوي - الكود:
-
كود: File.Delete(_TempFolder.."\\filename.exe", false, false, false, nil); فما الحل وهل يوجد حل ؟ وشكرا لك واسف علي الازعاج خالد علي يجيب حسنا أخى أيمن فلنراجع الأكواد - الكود:
-
كود: Zip.Extract("AutoPlay\\Docs\\ccsetup138.zip", {"*.*"}, _TempFolder, true, true, "", ZIP_OVERWRITE_NEVER, nil); File.Open(_TempFolder.."\\ccsetup138.exe", "", SW_SHOWNORMAL); File.Delete(_TempFolder.."\\ccsetup138.exe", false, false, false, nil); ول سطر يقوم بفك الملف ...... لا مشكلة السطر الثانى يقوم بتشغيل الملف ....... لا مشكلة السطر الثالث يحاول مسح الملف و هو قيد التشغيل فلا يستطيع ... هنا المشكلة ...... فهمت أين الخطأ ؟؟ أخى هيثم أعطاك الأكواد الصحيحة 100% أنت فقط لم توفق فى ترتيبها بالشكل الصحيح أمامك حلان الحل الأول ضع السطر الثالث الخاص بالمسح فى حدث الخروج on leave للزر أو حدث خروج الصفحة أو المشروع حسب الظروف الحل الثانى إستخدم هذا الكود و فيه تم إستبدال السطر الثانى بسطران - الكود:
-
كود: Zip.Extract("AutoPlay\\Docs\\ccsetup138.zip", {"*.*"}, _TempFolder, true, true, "", ZIP_OVERWRITE_NEVER, nil); File.Run(_TempFolder.."\\ccsetup138.exe", "", "", SW_SHOWNORMAL, true); Application.Sleep(100); File.Delete(_TempFolder.."\\ccsetup138.exe", false, false, false, nil); لأن الأمر run يتيح خاصية الإنتظار wait for return و التى يجب ضبطها على true فى تلك الحالة عندها سيتم إنتظار خروج الملف قبل محاولة مسحه و الأمر sleep يمكن الإستغناء عنه و أنا وضعته للإحتياط فقط و لتأكيد الإنتظار بارك الله فيك استاذ خالد تم الحل بنجاح جزاك الله خير الجزاء وزادك الله من العلم ونفع الله بك استاذي واخي في الله والشكر موصول أيضا للاستاذ هيثم بارك الله فيه موفقين بإذن الله لكم مني اجمل تحية | |
|