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

ناصر بعزيز

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

[Registry]
Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"

الآن سنبدأ في تفصيل العناصر
لاكن قبل ذالك لنصلي مع بعض على رسول الله.

أول عنصر لدينا اليوم هو
Root
مطلوب
حيث هذا العنصر الذي يحدد القسم الذي يوجد فيه المفتاح الذي سنقوم بإنشائه أو بالكتابة عليه.

وهو يدعم أحد الخيارات التالية
HKCU
وتعني
(HKEY_CURRENT_USER)

HKLM
تعني
(HKEY_LOCAL_MACHINE)

HKCR
وتعني
(HKEY_CLASSES_ROOT)

HKU
تعني
(HKEY_USERS)

HKCC
تعني
(HKEY_CURRENT_CONFIG)

طبعا لا داعي أن أقول يجب كتابة أحد الخيارات فقط
وللملاحظة
في حال كنت تريد كتابة مفاتيح في نظام x64 وبرنامجك يدعم الإثنين فيمكنك إضافة 64 بعد كل مفتاح
مثلا
HKLM64

مثال عن العنصر
Root: HKLM

نأتي إلى العنصر التالي

Subkey
مطلوب
حيث هنا تكملة مسار المفتاح الذي نريد إنشائه أو الكتابة عليه.
مثلا
Root: HKLM; Subkey: "Software\My Company\My Program"

العنصر التالي هو :

ValueType
مطلوب

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

none
باستخدامه يعني إنشاء المفتاح فارغ
string
يعني إنشاء قيمة نصية (REG_SZ)
expandsz
باستخدامه يتم انشاء قيمة من نوع (REG_EXPAND_SZ)
multisz
باستخدامه يتم انشاء قيمة بنصوص متعددة (REG_MULTI_SZ)
dword
باستخدامه يتم إنشاء قيمة رقمية 32-bit (REG_DWORD)
qword
باستخدامه يتم إنشاء قيمة رقمية 64-bit integer (REG_QWORD)
binary
بإستخدامه يتم انشاء قيمة مرمزة binary (REG_BINARY)
مثال
Root: HKLM; Subkey: "Software\My Company\My Program"; ValueType: string

العنصر التالي
ValueName
إسم القيمة الذي نريد إنشائها أو الكتابة عليها
يمكن طبعا استخدام الثوابت
وبتجاهل هذا العنصر سيتم الكتابة على القيمة الإفتراضية.
مثال
Root: HKLM; Subkey: "Software\My Company\My Program"; ValueType: string; ValueName: "path"


العنصر التالي

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

مثلا
Root: HKLM; Subkey: "Software\My Company\My Program"; ValueType: string; ValueName: "path"; ValueData: "{app}\myApp.exe"

Permissions
حيث يستخدم لإعطاء الصلاحيات الخاصة بالمفتاح
لاكن إحذر من استخدام هذا العنصر في حال لم تكن عندك خبرة في الصلاحيات مثلي.

لا أستطيع التفصيل في هذا العنصر فاعذروني رجاءا
لذا هذه هي القيم التي يمكن استخدامها هنا

full
طبعا معناها التحكم الكامل

modify
تحكم كامل في الملف لاكن ما يزيد الأول عنه أن هذا لا يمكن المستخدم تغيير الصلاحيات
read
معناها للقراءة فقط

ملاحظة يمكن الرجوع لقسم files
للمعرفة أكثر
وهذا مثال

Permissions: users-modify
العنصر التالي هو
Flags
حيث هذا كما تعودنا هو العنصر الذي يسمح لنا بإضافة خيارات إضافية
ويمكننا استخدام أكثر من خيار
الفصل بين الخيارات بالمسافة.

وإليكم الخيارات الممكن استخدامها :
createvalueifdoesntexist
حيث باستخدام هذا الخيار سيقوم معالج التثبيت بإنشاء القيمة في حال لم يتم العثور عليها مسبقا
وإلا فسيتم تجاهل هذا الخيار.

deletekey
حيث هذا معناه حذف المفتاح بالكامل قبل إنشاء القيمة الجديدة.


deletevalue
معناه حذف القيمة قبل إنشاء القيمة الجديدة.

dontcreatekey
هذا معناه في حال لم يتم إيجاد المفتاح فإنه لا يقوم بإنشاء القيمة

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

uninsclearvalue
حيث هذا يستخدم لتفريغ القيمة بعد إزالة التثبيت

uninsdeletekey
حيث هذا يستخدم لحذف المفتاح بالكامل عند إزالة التثبيت
uninsdeletekeyifempty
حيث هذا يستخدم لحذف المفتاح بالكامل عند إزالة التثبيت فقط في حال كان فارغ

uninsdeletevalue
حيث هذا يستخدم لحذف القيمة بعد إزالة التثبيت

مثال
Root: HKLM; Subkey: "Software\My Company\My Program"; ValueType: string; ValueName: "path"; ValueData: "{app}\myApp.exe"; Flags: uninsdeletevalue noerror

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