برنامه NSIS یک سری دستورات دارد که با یاد گیری آن ها براحتی میتوان با این برنامه کار کرد.تمام این دستورات داخل یک
فایل راهنما بنام NSIS.chm در پوشه ای که برنامه نصب شده وجود دارند.البته فقط با خواندن این راهنما نمیشوند تمام قابلیت
های برنامه را متوجه شد.
کد های این برنامه داخل فایلی متنی نوشته شده ولی با پسوند nsi ذخیره می شوند.فایل های با پسوند nsi را اصطلاحا"
اسکریپت های NSIS می نامند.
در داخل فایل اسکریپت محل هائی که با علائم ; یا # شروع شوند، در حقیقت کد نبوده بلکه توضیحات برنامه (Comment)
هستند.توضیح اینکه توضیحات معمولا" در اول سطر استفاده میشوند ولی در NSIS میتوان توضیحات را بعد پایان یک دستور
هم بکار برد.
دستورات اصلی این برنامه داخل دو عبارت Section و SectionEnd نوشته میشوند و دستورات دیگر همه دستورات جنبی
هستند. اصطلاحا" میگویند که دستورات NSIS داخل Section ها نوشته میشوند.
اول در یک سطر عبارت Section نوشته شده سپس در زیر آن دستور یا دستورات لازم تایپ شده و در انتها در یک سطر مجزا
عبارت SectionEnd نوشته میشود.
توجه داشته باشید که در یک اسکریپت ممکن است بیشتر از یک Section داشته باشیم.
اگر به مثال قبلی توجه کنید می بینید که در این اسکریپت ما بین عبارات Section و SectionEnd دستوری وجود ندارد.این
بخاطر آن است که بنده در اسکریپت فوق از کار اصلی NSIS استفاده نکرده ام فقط به برنامه گفته ام که موقع شروع کار
تصویری را نشان دهد ولی دیگر نگفته ام که کار اصلی اش بعد از نشان دادن تصویر چیست.و لذا برنامه پس از نشان دادن
تصویر به قسمت Section می رود ولی چون دستوری پیدا نمیکند لذا خاموش می شود.
بنابر این میتوان گفت که می شود در قسمت Section دستوری نبوده و خالی بماند.
ببینیم در مثال بسیار ساده قبلی چکار کردیم:
--------------------------------------------------
_ در سطر اول از کد NAME استفاده کردیم. با این کد نام کلی برنامه ای که می خواهیم درست کنیم را به NSIS معرفی
می کنیم.
_ در سطر بعدی کد OutFile استفاده شده. در جلوی این کد باید نام فایل اجرائی ای را که توسط NSIS درست خواهد شد
بنویسیم.
_ در سطر بعدی از کد Icon استفاده شده است. در جلوی این کد نام آیکنی را که باید فایل اجرائی نهائی داشته باشد
مشخص می کنیم. توجه داشته باشید که اگر آیکن مورد نظر در کنار فایل اسکریپت باشد، مثل مثال بالا فقط نام آیکن را
می نویسیم ولی اگر آیکن در محل دیگری باشد باید مسیر آن را هم مشخص کنیم.
_ در سطر بعدی از کد SilentInstall استفاده کرده ایم . بعدا" در مثال های دیگر در مورد این کد توضیح خواهم داد .در اینجا
همینقدر کافی است بدانید که اگر مثل مثال بالا جلوی این کد عبارت silent را بنویسیم، در حقیقت به برنامه NSIS میگوییم
که فایل نهائی باید مخفیانه اجرا شود.
شاید بگوئید این برنامه که مخفیانه اجرا نمی شود چون تصویر را نشان می دهد. بله درست است ولی خودتان هم امتحان
کرده و برنامه را بدون این سطر درست کنید، موقع اجرا خواهید دید که برنامه پس از نشان دادن تصویر، خاموش نشده و به
شما اعلام خواهد کرد که کارش تمام شد و شما باید روی کلید Close کلیک کنید تا برنامه بسته شود.
_ در سطر بعدی کد XPStyle on بکار برده شده.با این کد فقط به برنامه میگوییم که در موقع اجرا از پنجره های موجود در
ویندوز XP استفاده کند. اگر این کد را استفاده نکنید هیچ تغییری در کار برنامه ایجاد نخواهد شد.
_ قسمت بعدی برنامه در حقیقت دقیقا" همان کاری است که ما میخواهیم انجام شود (یعنی نشان دادن یک تصویر).من در
این قسمت، از دستورات اصلی برنامه NSIS استفاده نکرده ،بلکه از یک پلاگ این بنام AdvSplash استفاده کرده ام.
در حقیقت تعداد زیادی پلاگ این (plug-in) برای برنامه NSIS وجود دارند که بعضی از آن ها همراه با نصب برنامه ، وجود داشته
و نصب می شوند و بعضی دیگر را بسته به نیاز ها ،باید دانلود و به NSIS اضافه کنید.
تذکر:
------
من بمرور زمان تعداد زیادی پلاگ این های مورد نیازم را به NSIS اضافه کرده ام و الان نمیدانم که آیا در داخل NSIS که تازه
نصب شده ، پلاگ این بنام AdvSplash وجود دارد یا نه فقط بنظرم میرسد که وجود دارد.
بهر حال اگر مثال با لا را خودتان کامپایل کرده و امتحان کرده باشید، اگر این پلاگ این موجود باشد که برنامه کامپایل خواهد کرد
و گرنه ایراد خواهد گرفت.
بهر صورت توضیح این بخش از دستورات بصورت زیر است:
1. ما میتوانیم به NSIS بگوئیم که در قبل از شروع به نصب برنامه ما ، اول یک یا چند تا کار انجام دهد و سپس کار نصب اصلی
را شروع کند.
برای انجام اینکار بایستی از یک تابع موجود در NSIS بنام Function .onInit استفاده کنیم.
برای استفاده از این تابع اول باید عبارت Function .onInit را نوشته و بعد در سطر یا سطور زیر آن باید دستور یا دستورات لازم
را نوشته و در انتها در سطر آخر عبارت FunctionEnd را بنویسیم. که نمونه اش را در مثال مورد بحث مشاهده کردید.
2. گفتم که ما میخواهیم از یک پلاگ این بنام AdvSplash استفاده کنیم. لذا در این مرحله اول زیر سطر Function .onInit
دستور (InitPluginsDir) را می نویسیم.با این دستور به NSIS میگوئیم یک جائی را برای نگهداری پلاگ این مورد نظر ما داخل
فایل اجرائی نهائی ذخیره کند.
3. در سطر بعدی جلوی دستور (File /oname) نام فایل تصویری و چگونگی و محل نگهداری تصویر a1.bmp را مشخص
می کنیم.
4. برای اینکه برنامه NSIS بتواند یک پلاگ این را اجرا کند باید اول نام پلاگ این را نوشته و بعد از آن علامت :: را استفاده
کنیم.یعنی در این مثال اول عبارت:: AdvSplash را می نویسیم.
و سپس کد بعدی (یعنی show) دستور نشان دادن را می دهد.
عبارت بعدی یعنی عدد 5000 به برنامه میگوید که تصویر را بمدت 5000 میلی ثانیه (یعنی 5 ثانیه) نشان دهد.
دو تا کد بعدی (یعنی 0xFF00FF 400 600 نوع تصویر را مشخص میکنند که نیازی به دانستنش نیست.
و در انتها مشخص می کنیم که فایل تصویری را باید از کجا پیدا کرده و نشان دهد. و بعد در سطر بعدی با نوشتن کد
FunctionEnd کارمان با این قسمت تمام میشود.
در کل با کد هائی که مابین عبارات Function .onInit و FunctionEnd نوشتیم فایل تصویری و دستورات مربوطه داخل فایل
اجرائی نهائی موجود بوده و موقعیکه ما آن را اجرا می کنیم ، اول یک پوشه موقتی در پوشه TEMP کاربر درست و سپس
فایل تصویری a1.bmp داخل این پوشه قرار گرفته و سپس نشان داده می شود.
و بعد از بسته شدن برنامه این فایل تصویری و پوشه ساخته شده بطور اتوماتیک پاک می شوند.
آخرین کد های مثال ما عبارات Section و SectionEnd هستند که در اول بحث امروز در موردشان صحبت کردم.
دلم میخواست که یک مثال دیگری را شروع کنم ولی فکر میکنم که مطلب یک مقدار طولانی و خسته کننده شد.
لذا مثال بعدی را به زمانی دیگر موکول کرده و دلم میخواهد قبل از شروع مثال دیگر با کاربردی دیگر ،نتایج کار و یا احیانا"
سوالاتی اگر وجود دارد را ببینم.
علاقه مندی ها (بوک مارک ها)