سلسلة شروحات innoSetup الدرس الثاني عشر : صناعة ملف التثبيت عن طريق الأكواد قسم [run] + قسم [UninstallRun]

ناصر بعزيز

Administrator
طاقم الإدارة
إنضم
7 أغسطس 2018
المشاركات
646
مستوى التفاعل
666
النقاط
93
الإقامة
الجزائر
الموقع الالكتروني
mx-blind.com
الجنس
ذكر
نظام التشغيل
Windows10
قارئ الشاشة المستخدم
jaws
بسم الله الرحمن الرحيم, والصلاة والسلام على أشرف الخلق والمرسلين
أما بعد فأيها الأحباب أهلا وسهلا بكم في الدرس الثاني عشر من دورة تعلم برنامج InnoSetup
حيث في درسنا لنهار اليوم سنتعرف على قسمين مهمين جدا في البرنامج
وهما تشغيل البرامج بعد التثبيت
وكذالك قبل إزالة التثبيت
طبعا هما قسمين إختياريين ولاكن مهمين جدا.
لذا اليوم سأحاول التحدث ببعض التفصيل في كلا القسمين
ملاحظة :
القسمين متشابهيين جدا
لذا لا نحتاج لشرح كل قسم على حدا
سأشرح القسمين مع بعض وفي حال تواجدت فروقات سأخبركم بها.
القسم الأول وهو
[run]
وهو الذي يستخدم لتشغيل الملفات أو فتح الروابط وغيرها من الخيارات التي سنراها في الأسفل بعد الإنتهاء من تثبيت البرنامج
أما الثاني فهو
[UninstallRun]
حيث يستخدم لتشغيل أي ملفات تنفيذية أو روابط وغير ذالك قبل إزالة التثبيت
إليكم أمثلة :

[Run]
Filename: "{app}\INIT.EXE"; Parameters: "/x"
Filename: "{app}\README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent
Filename: "{app}\MYPROG.EXE"; Description: "Launch application"; Flags: postinstall nowait skipifsilent unchecked

[UninstallRun]
Filename: "{app}\INIT.EXE"; Parameters: "/x"

أما الآن فسنبدأ على بركة الله في التفصيل في الكود كما تعودنا
أول شيء نبدأ به هو
Filename
مطلوب
حيث هذا العنصر يتم تحديد فيه مسار الملف الذي نريد تشغيله
سواءا ملف تنفيذي أو ملفات أخرى
كما يمكن أن يكن روابط
طبعا هو يدعم المتغيرات والثوابت
مثال
Filename: "{app}\INIT.EXE"

Description
اختياري
يستخدم فقط في قسم [run]
حيث هذا العنصر يسمح لنا بكتابة نص يراه المستخدم كمربع تحديد إذ يمكنه تحديد المربع فيتم التشغيل وإلا لن يتم
طبعا هو يدعم الثوابت والمتغيرات وغير ذالك

مثال
Filename: "{app}\ReadMe.txt"; Description: "View the README file"

Parameters
اختياري
حيث يستخدم هذا العنصر في حال كنت تريد تشغيل برنامج يتطلب أوامر سطرية فتقوم بكتابتها هنا
مثلا
Filename: "{app}\Program.exe"; Description: "run the program"; Parameters: "/x"

WorkingDir
اختياري
حيث يستخدم لتحديد مجلد العمل الذي تريد أن يعمل فيه البرنامج الذي تريد تشغيله
مثلا
Filename: "{app}\Program.exe"; Description: "run the program"; Parameters: "/x"; WorkingDir: "{app}"

StatusMsg
اختياري
يستخدم فقط في قسم [run]
حيث هذا العنصر يسمح لك بعرض نص للمستخدم حينما يتم تشغيل هذا البرنامج
ملاحظة :
في حال لم تقم بتخصيص هذا الخيار فإنه افتراضيا سيتم اظهار رسالة "جاري الإنتهاء من التثبيت"
طبعا يمكنك استخدام الثوابت والمتغيرات
مثال
Filename: "{app}\Program.exe"; Description: "run the program"; Parameters: "/x"; WorkingDir: "{app}"; StatusMsg: "جاري تشغيل البرنامج"

Verb
اختيار الإجراء الذي تريد استخدامه لفتح الملف
يجب أن يستخدم مع shellexec flag
الخيارات المتاحة "open", "edit", بالإضافة إلى "print"
مثلا
Filename: "{app}\ReadMe.txt"; Description: "طباعة ملف إقرأني"; Verb: "print"

Flags
حيث هذا العنصر يسمح لنا باستخدام خيارات إضافية
ويتم الفصل بين الخيارات بالمسافة
وإليكم قائمة الخيارات المتاحة

32bit
حيث يتم إعلان البرنامج بأن يقم بتشغيل هذا البرنامج أو الملف بخيارات 32 bit
لا يمكن ربط هذا الخيار مع shellexec
64bit
حيث يتم إعلان البرنامج بأن يقم بتشغيل هذا البرنامج أو الملف بخيارات 64 bit
لا يمكن ربط هذا الخيار مع shellexec

hidewizard
في حال قمت باستخدام هذا الخيار
سيكون معالج التثبيت مخفي حينما يعمل هذا البرنامج

nowait
حيث يستخدم هذا في حال أردنا من المعالج أن لا ينتظر إكتمال العملية للانتقال إلى عملية التشغيل التالية إو إنهاء التثبيت

لا يمكن ربطه مع
waituntilidle أو waituntilterminated.

postinstall
يعمل فقط في قسم [run]
حيث هذا الخيار يسمح بإنشاء مربع تحديد يظهر للمستخدم في حال قام بتحديده ينفذ العملية وإلا فلا
حيث هذا يستخدم في حال قمت بضبط عنصر description المذكور في الأعلى
في حال استخدمت هذا ولم تستخدم السابق فسيعرظ المعالج للمستخدم مربع تحديد بحسب نوع الملف

runascurrentuser
في حال قمت باستخدام هذا الخيار
فسيتم تشغيل البرنامج مع صلاحيات المسؤول
runasoriginaluser
حيث باستخدامه يتم تشغيل البرنامج بصلاحيات المستخدم الحالي

runhidden
حيث هذا سيعمل على تشغيل البرنامج مخفي

runmaximized
حيث هذا سيعمل على تشغيل البرنامج بحجم كبير
runminimized
حيث هذا سيعمل على تشغيل البرنامج مصغر

shellexec
حيث هذا الخيار ضروري في حال الملف الذي تريد تشغيله ليس بملف تنفيذي
كمثلا .txt أو رابط أو ملف صوتي وغير ذالك


skipifdoesntexist
هذا يعني تجاهل تشغيل الملف في حال عدم وجوده
حيث في حال لم تقم باستخدامه وكان الملف غير موجود فسيتم إظهار رسالة خطأ للمستخدم

skipifnotsilent
هذا يستخدم في حال كنت تريد أن تفرق بين الملفات التي تشغل في حال التثبيت الصامت والعكس
إذ هذا الخيار يسمح بتشغيل البرنامج إذا كان التثبيت صامت فقط

skipifsilent
وهذا الخيار في حال كنت تريد أن يعمل البرنامج في حال لم يكن التثبيت صامت فقط
ملاحظة :
لا يمكن ربط بين الخياران

unchecked
هذا في حال كنت اخترت أن يظهر للمستخدم مربع تحديد
فإن باستخدام هذا الخيار سيتم إظهار مربع التحديد غير محدد
waituntilidle
هذا يستخدم في حال كنت تريد تشغيل أي برنامج يتطلب إدخال معلومات من المستخدم
فإن هذا الخيار سيقوم بجعل المعالج ينتظر إلى أن يقوم المستخدم بإدخال المعلومات المطلوبة
waituntilterminated
هذا باستخدامه فإن المعالج سينتظر إلى أن يتم الخروج من البرنامج الذي تم تشغيله لكي ينتقل إلى العملية التالية أو الإنهاء
مثلا

Filename: "{app}\Program.exe"; Description: "run the program"; Parameters: "/x"; WorkingDir: "{app}"; StatusMsg: "جاري تشغيل البرنامج"; Flags: postinstall nowait skipifsilent

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