توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : اموزش نرم افزار کاربردی Nsis
با سلام به همه دوستان ومدیران محترم انجمن
من در مورد نرم افزار Nsis از سرورمون استاد شیرین زبان سوالی پرسیدم وایشان هم زحمت کشیدند وفرمودند تاپیکی با این عنوان درست کنم تا مروری بر کاربرد ونحوه کار کردن با نرم افزار Nsis رو برامون توضیح بدند
بزرگ مایید استادشیرین زبان
Magsoud
01-23-2016, 03:39 AM
قبل از بحث در رابطه با برنامه کار بردی و بسیار ارزشمند و رایگان NSIS لازم میدانم که اول مختصرا" شرح دهم که چرا ما به
اینگونه برنامه ها نیاز داریم.
هر برنامه ای که ساخته میشود،معمولا" دارای تعداد زیادی فایل های مختلف هست که باید در کنار هم قرار داشته باشند که
برنامه بتواند درست و بی درد سر کار کند.
از طرف دیگر برای اینکه برنامه در داخل سیستم عامل ویندوز اجرا شود ، لازم است که جای فایل های برنامه و نیز فایل اصلی
اجرائی برنامه به ویندوز گفته شود.
این ها حداقل نیاز هائی هست که سازنده برنامه با آن ها روبروست.در این موقعیت ، او که نمیتواند فایل ها را همینطوری
به خریدار داده و بگوید تک تک فایا ها را کجا قرار داده ، چه شورت کات هائی درست نماید و بعد چه تغییراتی در رجستری
ویندوز انجام دهد که برنامه اجرا شود.
ناچارا" می آید و از برنامه های به اصطلاح Setup ساز مثل NSIS استفاده میکند.
برنامه های Setup ساز کارشان این است که اعمال زیر را انجام دهند:
_ کلیه فایل های برنامه را به یک فایل اجرائی تبدیل می کنند.
_ فایل ساخته شده را طوری تنظیم می کنند که پس از اجرا ، فایل های اصلی را در محل های مشخص شده ای کپی کرده
و سپس با تنظیمات مختلف در رجستری ویندوز ، فایل ها را به ویندوز معرفی کرده و نیز شورت کات های لازم برای کار کردن
کاربر با برنامه را در محل های از قبل تعیین شده ایجاد میکنند.
البته کار های دیگری هم انجام میدهند که از بحث ما خارج است.
بنابر این تا این جا فهمیدیم که برنامه NSIS یک برنامه Setup ساز است که میتواند کار هائی را که ما میخواهیم در داخل
ویندوز بطور اتوماتیک انجام دهد.
اما اینکه چگونه بایستی با این برنامه کار کنیم در جلسات بعد عرض خواهم کرد.
یادتان نرود که برنامه را که رایگان و کم حجم است دانلود کرده و نصب کنید تا موقع تست مطالب گفته شده مشکلی نداشته
باشید.
Magsoud
01-23-2016, 08:16 PM
گفتیم که برنامه NSIS در اصل یک Setup ساز است.ولی چند فرق اساسی با دیگر انواع Setup ساز ها دارد.
تمام Setup ساز ها اولا" گرافیکی کار میکنند و ثانیا"مشخصات از پیش تعیین شده ای دارند که فقط در همان محدوده
کار میکنند و نهایت اینکه کاربران دسترسی به کد های استفاده شده در آن ها را ندارند.
ولی این موارد در رابطه با برنامه NSIS صادق نیستند. اولا" برخلاف دیگر Setup ساز ها برنامه NSIS رابط گرافیکی ندارد و
فقط با دانستن کد های آن میتوان با برنامه کار کرد.
و ثانیا" مشخصات برنامه NSIS محدود نیست یعنی برخلاف برنامه های دیگر که فقط میتوانند یک کار بخصوص را انحام دهند،
برنامه NSIS نه تنها میتواند مثل دیگر برنامه ها کار ساخت Setup را انجام دهد، بلکه یک کاربر با یادگیری کد های این برنامه
میتواند تقریبا" هر کار دیگری را هم با این برنامه انجام بدهد.
بهر حال بحث تئوری را تمام کرده و برویم تا ببینیم که چگونه میتوان از این برنامه استفاده کرد.
مثال (1)دادن پیغام به کاربر
================
میخواهم قبل از شروع توضیحات اصلی ، جلسه اول را با یک مثال عملی شروع کنم.
فایل Message.exe را از پیوست دانلود کرده و اجرا کنید.خواهید دید که تصویر زیر بمدت 6 ثانیه نمایان شده و سپس بسته
می شود.
11262
گاهی لازم است که در حین انجام کاری ، پیغامی به کاربر بدهیم که نمونه آن را با فایلی که اجرا کردید مشاهده نمودید.
حالا ببینیم که این فایل چگونه ساخته شده است.اگر برنامه NSIS را نصب کرده اید بصورت زیر ادامه دهید.
1. پوشه ای بنام فرضا" Splash در درایو D بسازید (D:\Splash).
2. ما میخواهیم که یک فایل اجرائی بسازیم که با اجرای آن یک تصویر بمدت مشخصی دیده شود.این فایل اجرائی بعد از
ساخته شدن باید آیکن مورد نظر ما را داشته باشد. لذا آیکن دلخواه خودمان را تهیه کرده و آن را فرضا" با نام a1.ico درون
پوشه D:\Splash قرار دهید.
3. میخواهیم که با اجرای فایل مورد بحث تصویری نشان داده شود.بنا بر این تصویر دلخواه خود را (از نوع BMP) تهیه کرده و آن
را با نام مثلا" a1.bmp درون پوشه D:\Splash قرار دهید.
4. برنامه notepad را اجرا کرده و داخل آن کد های زیر را نوشته و سپس آن را با نام Message.nsi در پوشه D:\Splash ذخیره
کنید. توجه داشته باشید که پسوند nsi که در فایل Message.nsi استفاده کردید پسوند فایل های برنامه NSIS است.
NAME "NSIS Splash image"
OutFile "Message.exe"
Icon "a1.ico"
SilentInstall silent
XPStyle on
Function .onInit
InitPluginsDir
File /oname=$PLUGINSDIR\a1.bmp "a1.bmp"
AdvSplash::show 5000 600 400 0xFF00FF "$PLUGINSDIR\a1"
FunctionEnd
Section
SectionEnd
5. اگر برنامه NSIS در سیستمتان نصب شده باشد، هر وقت روی فایلی با پسوند nsi کلیک راست کنید، خواهید دید که
داخل منوئی که باز می شود گزینه ای بنام Compile NSIS Script وجود دارد که اگر روی آن کلیک کنید برنامه NSIS شروع
به کار کرده و اگر اشکالی درون کد های نوشته شده نباشد، چند لحظه بعد یک فایل اجرائی با نامی که درون کد ها مشخص
شده می سازد.
لذا الان روی فایل Message.nsi که حاوی کد های ما است کلیک راست کرده و سپس روی گزینه Compile NSIS Script
کلیک کنید. چند ثانیه بعد خواهید دید که فایلی با نام Message.exe درون پوشه D:\Splash درست میشود که اگر آن را اجرا
کنید تصویر را بمدت 5 ثانیه نشان خواهد داد.
حالا برنامه کوچک بالا را امتحان کنید.و در جلسه بعدی کد های استفاده شده را توضیح خواهم داد.
استاد من در نوشتن کدهای بالا ایرادی داشتم یعنی یه جایی اشتباه بود ولی موقع کامپایل کردن اروری نداد ولی فایل خروجی اجرا نشد پس نتیجه میگیریم که:
(( اگر در موقع نوشتن کدها اشتباهی پیش بیاد اروری دریافت نمیکنیم ولی فایل خروجی مشکل دار خواهد بود))
Magsoud
01-23-2016, 09:20 PM
سهند عزیز
اگر موقع نوشتن کد ، " دستورات اصلی کد" را اشتباه بنویسید برنامه ارور خواهد داد. ولی اگر فرضا" شما یک دستور را که باید بنویسید ، یادتان رفته باشد که بنویسید در این صورت اروری داده نخواهد شد ولی اجرا نخواهد شد
در ضمن در این مثال ، من از قابلیت اصلی خود برنامه NSIS استفاده نکرده ام و یک پلاگ این مخصوص NSIS را استفاده کرده ام که
AdvSplash نام دارد.
و اگر شما در کد های داخل قسمت AdvSplash اشتباهی داشته باشید ، چون این سطور کد های اصلی خود NSIS
نیستند، لذا NSIS آن ها را تشخیص نخواهد داد. چون در این مثال تنها کاری که NSIS انجام میدهد این است که پلاگ این AdvSplash را اجرا کند.
Magsoud
01-24-2016, 02:25 AM
برنامه 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 هستند که در اول بحث امروز در موردشان صحبت کردم.
دلم میخواست که یک مثال دیگری را شروع کنم ولی فکر میکنم که مطلب یک مقدار طولانی و خسته کننده شد.
لذا مثال بعدی را به زمانی دیگر موکول کرده و دلم میخواهد قبل از شروع مثال دیگر با کاربردی دیگر ،نتایج کار و یا احیانا"
سوالاتی اگر وجود دارد را ببینم.
استاد دوتا سوال
1- منظور از XPStyle on چیه اگه درست متوجه شده باشم اینه که میتونیم به جای XPStyle on از 7Style on استفاده کنیم منظور از XPStyle on یعنی از Style ویندوز xp استفاده شده
2-در نرم افزاری که من نصب کردم داخل پوشه Plugins دوتا پوشه وجود داره واون پلاگین هم که گفتید وجود داره که اسکرین شات از هر دوپوشه رو میذارم وسوالم اینه که این پلاگینها فقط برای کارهای ساده مثل مثالی که زدید کاربرد داره یا جاهای دیگه هم کاربرد خواهند داشت مثلا کاربرد پلاگین AdvSplash فقط در جاهایی مثل مثال بالا هست یا خیر
http://up.worldup.ir/do.php?imgf=Screenshot-3_6ada8.jpg (http://up.worldup.ir/)
3-اون دوتا پوشه ای که اسکرین شاتش رو گذاشتم باهم چه فرقی دارند وچرا در 2پوشه متفاوت هستند
Magsoud
01-25-2016, 03:10 AM
سهند عزیر
بله با استفاده از گزینه XPStyle on به برنامه میگوئیم که صفخات نصب را با استایلی شبیه استایل ویندوز ایکس پی درست کند.
من تا کنون کدی با عنوان 7Style on ندیده ام.
در رابطه با دو تا پوشه ای که نشان دادید باید بگویم که پوشه x86 پوشه عمومی است ولی اگر ما بخواهیم از زبان های دیگر درون
برنامه NSIS استفاده کنیم باید از فایل موجود در پوشه یونیکد استفاده نمائیم.
در رابطه با پلاگ این ها باید بگویم که هر پلاگ این بخاطر یک موضوعی درست شده و فقط در همان مورد مصرف می شود.
====================================
اما بحث امروز
-------------------
ساخت یک Installer ساده
------------------------------
در اینجا نمونه ای از کار اصلی NSIS را که بیشترین مورد مصرف این برنامه است مطالعه می کنیم.برای این منظور اول فایل
ShellExView 1.97.rar را از پیوست دانلود کرده و از فشردگی درآورده و سپس مطابق شرح زیر امتحان بفرمائید.
داخل ShellExView 1.97.rar سه تا فایل وجود دارند که هر سه فایل کار نصب برنامه رایگان و کم حجم ShellExView 1.97
را انجام میدهند ولی چگونگی کارشان با هم متفاوت است.
برای درک درست مطالب مربوط به NSIS لازم است این سه تا فایل را (ترجیحا" در ماشین مجازی) امتحان کرده و فرق های
این سه نوع فایل را مشاهده کنید.
_ اول فایل Basic.exe را اجرا کنید.با اجرای این فایل برنامه ShellExView 1.97 بطور کامل نصب شده و کاملا" قابل استفاده
است ولی یک اشکال کلی دارد و آن اینکه:
در ساخت این Setup حداقل کد ها استفاده شده بطوریکه با وجود اینکه برنامه کاملا" درست کار خواهد کرد ولی چون در
ساخت آن از کد های مربوط به Uninstall استفاده نشده است، لذا برنامه در قسمت Add and Remove گزینه ای برای
Uninstall کردن ندارد.
بعد از تست این برنامه برای حذف آن پوشه NirSoft را از داخل پوشه Programe Files دیلیت کنید.(همچنین لازم است که
شورت کات های مربوطه را از منوی استارت و نیز Desktop پاک کنید).
_ بعد از تست فایل بالا ، فایل Normal.exe را اجرا کنید. با اجرای این فایل برنامه ShellExView 1.97 بطور کامل نصب شده
و نیز دارای گزینه Uninstall هم هست.
_ بعد از تست فایل بالا آن را Uninstall کرده و فایل Silent.exe را اجرا کنید .این فایل عملا" مثل فایل Normal.exe نصب شده
و تنها فرقی که با آن دارد این است که مراحل نصب مخفی هست.
با تست این فایل ها متوجه میشوید که با کنترل کد های برنامه NSIS چگونه میتوانیم کار های دلخواه خودمان را انجام دهیم.
چگونگی ساخت فایل Basic.exe بصورت زیر است.
-----------------------------------------------------
برنامه ShellExView یک برنامه رایگان و خیلی کم حجم است.این برنامه فقط از سه تا فایل زیر تشکیل شده است:
shexview.exe --- که فایل اصلی برنامه است.
shexview.chm --- که فایل راهنمای چگونگی کاربرنامه است.
readme.txt ------ که فایل توضیحات درمورد برنامه و سازنده است.
برای ساخت فایل نصب این برنامه باحداقل امکانات بصورت زیر عمل می کنیم:
1. پوشه ای فرضا" با نام ShellExView در روت درایو مثلا" D درست کنید.
2. داخل پوشه ShellExView پوشه دیگری با نام فرضا" Files درست کنید (D:\ShellExView\Files). حالا سه تا فایل گفته
شده در بالا را به درون پوشه Files کپی کنید.
3. چون میخواهیم که فایل نهائی ساخته شده دارای آیکنی باشد که ما میخواهیم، لذا آیکن مورد نظر خود را تهیه کرده و
آن را با نام a1.ico داخل پوشه D:\ShellExView کپی کنید.
4. notepad را اجرا کرده و داخل آن کد های زیر را تایپ نموده و سپس آن را هم با نام فرضا" ShellExview.nsi به درون
پوشه D:\ShellExView کپی کنید.
!include "MUI.nsh"
!define MUI_ICON "a1.ico"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_INSTFILES
!define MUI_FINISHPAGE_RUN "$INSTDIR\shexview.exe"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "English"
Name "NirSoft ShellExView"
OutFile "ShellExview 1.97.exe"
InstallDir "$PROGRAMFILES\NirSoft\ShellExview"
ShowInstDetails show
Section "MainSection" SEC01
SetOutPath "$INSTDIR"
SetOverwrite on
File "Files\"
CreateDirectory "$SMPROGRAMS\NirSoft ShellExview"
CreateShortCut "$SMPROGRAMS\NirSoft ShellExview\Help.lnk" "$INSTDIR\shexview.chm"
CreateShortCut "$SMPROGRAMS\NirSoft ShellExview\ShellExview.lnk" "$INSTDIR\shexview.exe"
CreateShortCut "$DESKTOP\ShellExview.lnk" "$INSTDIR\shexview.exe"
SectionEnd
5. حال اگر روی فایل ShellExview.nsi کلیک راست کرده و بعد روی گزینه Compile NSIS Script کلیک کنید. چند ثانیه بعد
خواهید دید که فایلی با نام ShellExview 1.97.exe درون پوشه D:\ShellExView درست میشود.
همانطور که گفتم این نمونه با حداقل امکانات است و گزینه Uninstall ندارد.
خودتان مقداری کد های بالا را مطالعه کنید.
در جلسه بعد کد های بالا و همچنین کد های اضافه تر در دو نمونه بعدی را هم توضیح خواهم داد.
Magsoud
01-27-2016, 02:44 AM
ببینیم در مثال های ساخت یک Installer ساده چگونه از کد ها استفاده شده است.
در قسمت ابتدائی کد های یک برنامه NSIS ،معمولا" اول اطلاعات عمومی برنامه مثل نام ، ورژن ، نام فایل خروجی و غیره
را مشخص می نمائیم.
در مرحله بعدی مشخصات چگونگی اجرای برنامه بعد از درست شدن مشخص میشود. در این مرحله ممکن است بخواهیم
که برنامه اتوماتیک و مخفیانه نصب شود و یا برعکس امکان دارد که بخواهیم برنامه در موقع نصب ، صفحات بخصوصی به کاربر
نشان داده و حتی در بعضی از صفحات از کاربر بخواهد که گزینه ای را انتخاب کند و غیره.
اینکه بخواهیم عمل نصب، اتوماتیک و مخفیانه انجام شود، کار کد نویسی را ساده تر میکند.ولی اگر بخواهیم از صفحات مختلف
نصب استفاده کنیم ،هم کد نویسی بیشتری میخواهد و هم لازم است که ما خودمان مقداری در رابطه با این مطلب مطالعه
داشته باشیم.
برای اینکه خود برنامه NSIS در داخلش چند مدل صفحات نصب وجود دارند که ما میتوانیم از بین آن ها یکی را انتخاب کنیم.
از طرف دیگر پلاگ این هائی وجود دارند که با اضافه کردن آن ها به NSIS میتوانیم از صفحات نصب زیباتری بهره ببریم و در
نهایت اینکه ما می توانیم با ترفند هائی از صفحات نصبی که خودمان طراخی کرده ایم استفاده کنیم.
برای اینکه بتوانیم یکی از مدل های نصب موجود در NSIS را استفاده کنیم، بایستی حتما" در اول کد ها موضوع را به NSIS
بگوییم.
باید به NSIS نام مدلی را که انتخاب کرده ایم و مشخصات آن را اعلام کنیم.
در مرحله بعدی کد نویسی بایستی نیاز های اولیه خودمان را به NSIS اعلام کنیم. برای مثال فرضا" شما می خواهید
یک برنامه نصب بسازید.ولی دوست دارد که موقع اجرای برنامه شما توسط کاربر، اول برنامه پیامی مثل پیامی را که در
مثال اول توضیح دادیم نشان داده و بعد از آن کار اصلی نصب را شروع کند.
و در انتها باید دستورات اصلی مورد نیاز برنامه را ما بین دو عبارت Section و SectionEnd مشخص کنیم.که گاهی لازم
خواهد بود که دستورات مختلف خودمان را درون عبارت های Section و SectionEnd متفاوتی بگذاریم.
اما شرح مختصر فایل Basic.exe
===================
_ ما در موقع نصب این برنامه چند تا صفحه خواهیم دید.همانطور که در بالا توضیح دادم برای نشان دادن صفحات نصب ،ما
باید یکی از مدل های نصب را انتخاب کرده و آن را به NSIS اعلام کنیم. یکی از مدل های صفحات نصب موجود در برنامهNSIS
مدل MUI است که در سطر اول کد ها با دستور نشان داده شده به NSIS اعلام کرده ایم که میخواهیم فایل نهائی دارای
صفحات این مدل باشد.
_ در سطر 2 آیکنی را که میخواهیم فایل نهائی با آن نشان داده شود را مشخص کرده ایم.اگر مثال فبلی را بیاد داشته باشید
می بینید که در این جا نوع معرفی کردن آیکن متفاوت است. این بخاطر این است که در این جا چون از صفحات نصب نوع MUI
استفاده میکنیم لذا باید بصورتیکه می بینید بگوئیم که آیکن برای صفحه نوع MUI است.
_ در سطور 3و4و5و6 مشحصات صفحاتی را که به کاربر نشان داده خواهند شد را نوشته ایم.
_ در سطر 7 گفته ایم که زبان صفحه نصب انگلیسی باشد.توجه داشته باشید که موقع معرفی زبان انگلیسی هم چون از
صفحان نصب MUI استفاده میکنیم،لذا با کد سطر 7 گفته ایم که انگلیسی نوع MUI مورد نظر است.
_ در سطور 8 و 9 نام برنامه و نام فایل خروجی را معین کرده ایم.
_ در سطر 10 مگوئیم که برنامه بایستی در محل Program Files\NirSoft\ShellExview نصب شود. توضیح اینکه در NSIS
عبارت PROGRAMFILES$ معادل عبارت Program Files می باشد.
_ با دستور سطر 11 میگوئیم که موقع نصب بایستی صفحات نصب نشان داده شوند.
_ دستورات اصلی برنامه را در سطور نهائی مابین دو عبارت Section و SectionEnd بشرح زیر معین کرده ایم:
1. جلوی عبارت Section نامی را هم برای این Section انتخاب کرده ایم که شما هر عبارت دیگری را می توانید استفاده کنید.
2. با کد SetOutPath به برنامه مشخص میکنیم که دستورات را در کجا باید اجرا کند.همانطور که می بینید محل اجرای دستورات
را با عبارت SetOutPath$ مشخص کرده ایم که این عبارت در سطر 10 برابر Program Files\NirSoft\ShellExview تعریف شد.
3. با دستور SetOverwrite on به برنامه میگوییم که اگر موقع کپی فایل ها به محل نصب، در محل نصب فایل های همنامی از
قبل موجود باشند، آن ها را پاک کرده و فایل های ما را بگذارد.
4. با دستور نشان داده شده در سطر بعدی به برنامه میگوئیم که همه فایل های موجود درون پوشه Files را به محل نصب کپی کند.
توجه داشته باشید که دستور مورد استفاده در اینجا کلمه File می باشد. که اگر در جلوی آن اینگونه که دیدید بنویسیم برنامه
تمام فایل هائی را که داخل پوشه Files (در دایرکتوری ای که کد اسکریپت قرار دارد) قرار دارند را به محل نصب کپی خواهد کرد
توجه داشته باشید که فقط فایل های موجود درون پوشه را کپی میکند. و اگر پوشه یا پوشه های دیگری درون این پوشه باشند
برنامه با آن ها کاری نخواهد داشت.
اگر بخواهیم پوشه ها را هم کپی کند نوع دستور فرق میکند.
5. در سطر بعدی با دستور CreateDirectory به برنامه میگوئیم که پس از کپی کردن فایل به محل نصب، در داخل پوشه استارت
پوشه ای بنام NirSoft ShellExview درست کند
در برنامه NSIS عبارت $SMPROGRAMS به معنی پوشه Programs درون استارت می باشد.
در سه سطر بعدی با دستور CreateShortCut به برنامه میگوئیم که در داخل پوشه ساخته شده در بالا شورت کات هائی را
که مشخص کرده ایم قرار دهد.
ودر سطر بعدی دستور درست کردن شورت کات در دسکتاپ داده شده است.
استاد گرامی یه سوال
ما میخواهیم نرم افزاری رو بسازیم دوتا پوشه داریم هردو با نام sahand که در داخل یکی ((تعدادی فایل وپوشه وفایلهای اجرایی نرم افزارمون)) هست ودر پوشه دوم که همنام باپوشه قبلی هست ((چندتا شورتکات از نرم افزار)) میباشد
حال ما میخواهیم که پوشه sahand ((که داخلش تعدادی فایل وکمک فایل اجرایی وتعدادی پوشه هست)) رو موقع نصب به پروگرام فایل انتقال بده و پوشه دوم sahand رو هم ((که داخلش شورتکاتها هست ))به استارت منو انتقال بده
حالا روش کار چطوری میباشد چون هر دو پوشه همنامند دوم اینکه داخل یکی هم فایل هست هم پوشه که تعدادشون هم تقریبا بالاست
Magsoud
01-29-2016, 12:01 AM
سهند عزیز ، شما نیازی به پوشه دوم با نام sahand که داخلش فقط شورتکاتها قرار دارند ندارید.برای اینکه مطلب را درست
متوجه شوید به مثال زیر توجه فرمائید.
فرض کنیم که شما پوشه ای بنام sahand دارید که داخلش فایل ها و پوشه های زیادی قرار دارند.
شما میخواهید محتوای این پوشه به درون پوشه ای بنام sahand در داخل پوشه Program Files کپی شوند.و همچنین
میخواهید که برای سه تا از فایل های موجود در داخل پوشه sahand (فرضا" فایل های a1.exe و b1.exe و c1.exe) حتما"
در داخل پوشه start سه تا شورت کات درست شوند.
اگر منظورتان فرض های بالا باشد اول تمام محتوای پوشه sahand را درون پوشه ای با نام Files کپی کرده و در کنار پوشه
Files آیکنی بنام a1.ico قرار داده و سپس کد های زیر را در کنار آن ها در فایلی بنام فرضا" sahand.nsi قرار دهید:
(توضیح اینکه در اینجا بنده فرض کرده ام که فقط سه تا فایل a1.exe و b1.exe و c1.exe درون پوشه Files وجود دارند)
Name "Sahand"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\Sahand"
Icon "a1.ico"
SilentInstall silent
Section "Sahand"
SetOutPath "$INSTDIR"
File "Files\a1.exe"
File "Files\b1.exe"
File "Files\c1.exe"
CreateDirectory "$SMPROGRAMS\Sahand"
CreateShortCut "$SMPROGRAMS\Sahand\a1.lnk" "$INSTDIR\a1.exe"
CreateShortCut "$SMPROGRAMS\Sahand\b1.lnk" "$INSTDIR\b1.exe"
CreateShortCut "$SMPROGRAMS\Sahand\c1.lnk" "$INSTDIR\c1.exe"
CreateShortCut "$DESKTOP\a1.lnk" "$INSTDIR\a1.exe"
SectionEnd
بعد از کامپایل کردن کد های بالا فایلی بنام Setup.exe ساحته خواهد شد که اگر این فایل را اجرا کنید برنامه بطور مخفیانه
نصب شده و شما خواهید دید که بعد از نصب پوشه ای بنام Sahand درون پوشه Program Files درست شده که داخل آن
فایل های a1.exe و b1.exe و c1.exe قرار داشته و همچنین در پوشه Programs داخل start هم پوشه ای بنام sahand
درست شده که درونش شورتکات های سه فایل بالا وجود دارند و نیز یک شورت کات اضافه هم برای فایل a1.exe در داخل
دسکتاپ درست شده.
کد های بالا را مطالعه کرده و تست بفرمائید.
و اگر منظورتان مطلب دیگری هست لطفا" اطلاع دهید.
سهند عزیز ، شما نیازی به پوشه دوم با نام sahand که داخلش فقط شورتکاتها قرار دارند ندارید.برای اینکه مطلب را درست
متوجه شوید به مثال زیر توجه فرمائید.
فرض کنیم که شما پوشه ای بنام sahand دارید که داخلش فایل ها و پوشه های زیادی قرار دارند.
شما میخواهید محتوای این پوشه به درون پوشه ای بنام sahand در داخل پوشه Program Files کپی شوند.و همچنین
میخواهید که برای سه تا از فایل های موجود در داخل پوشه sahand (فرضا" فایل های a1.exe و b1.exe و c1.exe) حتما"
در داخل پوشه start سه تا شورت کات درست شوند.
اگر منظورتان فرض های بالا باشد اول تمام محتوای پوشه sahand را درون پوشه ای با نام Files کپی کرده و در کنار پوشه
Files آیکنی بنام a1.ico قرار داده و سپس کد های زیر را در کنار آن ها در فایلی بنام فرضا" sahand.nsi قرار دهید:
(توضیح اینکه در اینجا بنده فرض کرده ام که فقط سه تا فایل a1.exe و b1.exe و c1.exe درون پوشه Files وجود دارند)
Name "Sahand"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\Sahand"
Icon "a1.ico"
SilentInstall silent
Section "Sahand"
SetOutPath "$INSTDIR"
File "Files\a1.exe"
File "Files\b1.exe"
File "Files\c1.exe"
CreateDirectory "$SMPROGRAMS\Sahand"
CreateShortCut "$SMPROGRAMS\Sahand\a1.lnk" "$INSTDIR\a1.exe"
CreateShortCut "$SMPROGRAMS\Sahand\b1.lnk" "$INSTDIR\b1.exe"
CreateShortCut "$SMPROGRAMS\Sahand\c1.lnk" "$INSTDIR\c1.exe"
CreateShortCut "$DESKTOP\a1.lnk" "$INSTDIR\a1.exe"
SectionEnd
بعد از کامپایل کردن کد های بالا فایلی بنام Setup.exe ساحته خواهد شد که اگر این فایل را اجرا کنید برنامه بطور مخفیانه
نصب شده و شما خواهید دید که بعد از نصب پوشه ای بنام Sahand درون پوشه Program Files درست شده که داخل آن
فایل های a1.exe و b1.exe و c1.exe قرار داشته و همچنین در پوشه Programs داخل start هم پوشه ای بنام sahand
درست شده که درونش شورتکات های سه فایل بالا وجود دارند و نیز یک شورت کات اضافه هم برای فایل a1.exe در داخل
دسکتاپ درست شده.
کد های بالا را مطالعه کرده و تست بفرمائید.
و اگر منظورتان مطلب دیگری هست لطفا" اطلاع دهید.
استاد ممنون از راهنمایی خیلی خوبتون
اگه فایلهایی داشته باشیم که بخواهیم مثلا به هنگام نصب اونا داخل system32 کپی شوند بایدد دونه دونه اونا رو تو دستور ذکر کنیم واینکه اگر تعدادفایلها زیاد باشه چکار باید بکنیم و اینکه یه فایل رجیستری هم داریم دستور اون چطور خواهد بود
شرمنده استاد زیاد سوال میپرسم:m0h:
Magsoud
02-05-2016, 06:37 PM
...
اگه فایلهایی داشته باشیم که بخواهیم مثلا به هنگام نصب اونا داخل system32 کپی شوند بایدد دونه دونه اونا رو تو دستور ذکر کنیم واینکه اگر تعدادفایلها زیاد باشه چکار باید بکنیم و اینکه یه فایل رجیستری هم داریم دستور اون چطور خواهد بود
......
اگر بخواهی مستقیما" با خود برنامه nsis کار کنی بیشتر کد ها را بایستی دستی وارد کنی
ولی برنامه ای رایگان و کم حجم بنام hm nis edit 2.0.3 وجود دارد که میتواند نیاز های شما را بطور گرافیکی
گرفته و در انتها هم فایل اسکریپت لازم و هم فایل اجرائی مورد نظر را اتوماتیک برایتان درست می کند .
با مختصری جستجو میتوانید این برنامه را پیدا و دانلود کنید.
بعد از نصب برنامه سعی کنید با آن کار کرده و طرز کارش را یاد بگیرید تا کار ها را اتومات انجام دهد.
بعد از آشنائی با برنامه ، در صورت نیاز اطلاع بده تا با یک مثال واضح طرز کارش را توضیح دهم.
اگر بخواهی مستقیما" با خود برنامه nsis کار کنی بیشتر کد ها را بایستی دستی وارد کنی
ولی برنامه ای رایگان و کم حجم بنام hm nis edit 2.0.3 وجود دارد که میتواند نیاز های شما را بطور گرافیکی
گرفته و در انتها هم فایل اسکریپت لازم و هم فایل اجرائی مورد نظر را اتوماتیک برایتان درست می کند .
با مختصری جستجو میتوانید این برنامه را پیدا و دانلود کنید.
بعد از نصب برنامه سعی کنید با آن کار کرده و طرز کارش را یاد بگیرید تا کار ها را اتومات انجام دهد.
بعد از آشنائی با برنامه ، در صورت نیاز اطلاع بده تا با یک مثال واضح طرز کارش را توضیح دهم.
استاد من این برنامه رو دان کردم ولی فایل اجرایی نداشت اگه زحمتی براتون نباشه در مورد این برنامه یکم توضیح بدید بخاطر اینکه با سواد بنده کدنویسی خیلی سخت میاد وچون فرمودید بصورت گرافیکی هست بهتر وراحتتر یاد میگیرم
این تمام فایلهای این برنامه هست اسکرین شات
http://up.worldup.ir/do.php?imgf=Screenshot-1_130fd.jpg (http://up.worldup.ir/)
Magsoud
04-23-2016, 04:26 PM
اول برنامه را از پیوست دانلود فرمائید تا بعد در موردش صحبت کنیم
لطفا" فایل هائی را که دانلود کرده اید حائی آپلود کنید که ببینم چی هستند.
نتیحه را اعلام فرمائید
اول برنامه را از پیوست دانلود فرمائید تا بعد در موردش صحبت کنیم
لطفا" فایل هائی را که دانلود کرده اید حائی آپلود کنید که ببینم چی هستند.
نتیحه را اعلام فرمائید
با سلام وتشکر
اون نرم افزار رو که زحمتشو کشیدید دان ونصب کردم
اینم از فایلی که من دانلود کردم
http://s6.picofile.com/file/8248722326/nisedit203_src.zip.html
Magsoud
04-25-2016, 10:30 PM
فایل هائی که قبلا" دانلود کردی در حقیقت Source Code برنامه HM NIS EDIT 2.0.3 هستند.
یعنی برنامه با استفاده از این فایل ها ساخته شده است.
بهر حال مقداری با برنامه HM NIS EDIT 2.0.3 کار کن و بعد یاد آوری کن که یکی دو مثال از چگونگی استفاده از آن را شرح دهم.
استاد چطور میشود نرم افزاری که با nsis کامپایل شده رو ویرایش کرد مثلا چیزی از اون کم یا زیاد کرد یا چیزایی بهش افزود
Magsoud
08-10-2016, 07:47 PM
سهند عزیز
در بیشتر موارد بدست آوردن کد های اصلی برنامه NSIS خیلی سخت است.
خود بنده هم که گاهی برای نیاز های خودم یا دوستان با برنامه ای کار میکنم،برای اینکه راحت نتوانند
کد های مربوطه را بدست بیاورند از NSIS استفاده میکنم.
بهتر است بیشتر در یاد گیری موارد استفاده از NSIS کار کنی.
در ضمن برنامه سون زیپ ورژن های 15.05beta و 15.00alpha میتوانند کلیات کد های استفاده شده
توسط NSIS را استخراج کنند.
استاد با این برنامه چطور میشود فایل رجیستری به فایل setup مون اضافه کنیم
من یه فایل ستاپ درست کردم ولی هرکاری کردم راهی برای اضافه کردن فایل رجیستری نتونستم پیدا کنم
Magsoud
06-20-2017, 09:43 PM
سهند عزیز همین الان یاد داشت شما را دیدم.
روش استفاده از رجستری بسیار ساده است. البته شما نیاز به دانلود کردن یک پلاگ این چند کیلو بایتی دارید
اجازه بدهید مطالب و نیاز ها را حمع آوری کرده و سعی میکنم که اگر زنده بودم ، مطلب را فردا توضیح دهم.
Magsoud
06-21-2017, 04:23 PM
در NSIS به راحتي ميشود با رجستري كار كرد، هم مستقيما" توسط دستورات موجود در NSIS و هم بطور
غير مستقيم مثلا" اجراي يك فايل رجستري توسط NSIS
براي مثال دستور زير فايل xxx.reg را بطور مخفي اجرا خواهد كرد:
ExecWait "regedit.exe /s C:\xxx.reg"
براي اينكه بتوان مستقيما" با استفاده از دستورات NSIS با رجستري كار كرد، لازم است كه يك plug-in با
حجم 129 كيلو بايت را از لينك زير دانلود كرده و به NSIS اضافه نمائيد.
Registry plug-in (http://nsis.sourceforge.net/Registry_plug-in)
توجه داشته باشيد كه پس از اضافه كردن Registry plug-in به NSIS ، بايستي هر زماني كه لازم است از
دستورات رجستري استفاده نمائيد، حتما" بايد دستور زير را در سطر اول يا دوم كد هايتان وارد نمائيد تا
NSIS بتواند دستورات مربوطه را اجرا نمايد:
!include registry.nsh
در ضمن برنامه كوچكي بنام Reg2Nsis با حجم 170 كيلو بايت وجود دارد كه ميتواند فايل هاي رجستري را به
دستورات NSIS تبديل كند. اين برنامه را ميتوانيد از لينك زير دانلود نمائيد:
Reg2Nsis (http://nsis.sourceforge.net/Reg2Nsis_-_convert_registry_info_into_NSIS_commands)
موارد گفته شده را امتحان كرده و در صورت لازم سوالات خود را مطرح نمائيد.
يك توضيح
======
سهند عزيز، در چند مورد درخواست آموزش چگونگي ساخت فايل هاي Setup البته بروشي غير از استفاده
از برنامه هاي اينكاره موجود را داشتيد.
اگر عمري باشد سعي ميكنم كه پس از پايان مبحث بالا،يك روش خيلي ساده را در اين رابطه توضيح دهم.
استاد یه مشکلی در پک کردن این نرم افزار برام پیش اومد البته با این صورت که :
ما 2تاپوشه داریم که میخواهیم پوشه a به Program Files
وپوشه b به Common Files کپی بشه بعد توی منوی استارت همنام با پوشه a پوشه ای درست بشه وشورتکاتهای برنامه داخل اون باشه و در اخر یه فایل رجیستری اجرا بشه وهمه اینکارها بصورت سایلنت باشه
البته با کمک این نرم افزار
hm nis edit 2.0.3
Magsoud
06-23-2017, 04:33 PM
من فرض ميكنم كه شما:
1. پوشه اي بنام 00 در درايو F درست كرده و پوشه هاي A و B كه حاوي فايل هايتان هستند را درون اين
پوشه فرار داده ايد.
2. براي اينكه فايل نهائي داراي آيكن مورد نظر شما باشد، آيكن مورد نظرتان با نام فرضا" mcs.ico را هم
درون پوشه F:\00 گذاشته ايد.
حال ميتوانيد بشرح زير توسط اجراي برنامه hm nis edit نيازتان را برآورده كنيد. برنامه hm nis edit را اجرا كرده
و سپس مطابق شكل زير روي آيكن New script كليك كنيد تا Wizard برنامه شروع شود.
http://www.worldup.ir/images/rellugtcuad0ur5jd4kd.png (http://www.worldup.ir/)
1. در صفحه اول در جلوي قسمت Application name عنوان برنامه خود را (مثلا" xxxx) وارد كرده و بعد در قسمت
زير آن ورژن برنامه را وارد نمائيد.
در اين صفحه در سطور بعدي ميتوانيد نام سازنده و آدرس سايت مربوطه را وارد كرده و يا اگر نميخواهيد ميتوانيد
اطلاعات موجود در اين دو محل را پاك كنيد.
نمونه ساده را در شكل زير مشاهده مي كنيد
http://www.worldup.ir/images/vcjyej58wx9yv5ax85s0.png (http://www.worldup.ir/)
توجه داشته باشيد كه نامي كه در اين مرحله وارد مي كنيد،در حقيقت در حالت نرمال (يعني اگر در مراحل بعد
كد ها را دستكاري نكنيد)، نام پوشه اي هست كه درون پوشه Program Files درست خواهد شد و برنامه شما
درون آن نصب خواهد گرديد.
براي اين مثال كه نام xxxx را وارد كرديم يعني فايل هاي ما درون پوشه Program Files\xxxx نصب خواهند شد.
2. در صفحه بعدي مطابق شكل زير بايستي مشخصات فايل نهائي كه بايد ساخته شود را وارد نمائيم
http://www.worldup.ir/images/0ofpy6a231x5cull19e.png (http://www.worldup.ir/)
همانطور كه در شكل بالا مي بينيد در اين مثال موارد زير انتخاب شده اند:
__ فايل نهائي داراي آيكن F:\00\mcs.ico باشد.
__ نام فايل نهائي Setup.exe باشد.
__ انتحاب گزينه None در قسمت GUI (يعني اينكه برنامه بصورت سايلنت اجرا شود).
3. با انتحاب هاي بالا در صفحه بعدي عبارت $PROGRAMFILES\xxxx را نشان خواهد داد كه ميگويد فايل هاي
برنامه درون پوشه اي بنام xxxx درون Program Files نصب حواهد شد.
كه در حالت معمول بايد همين را قبول كرده و با كليك روي دكمه Next به صفحه بعد برويد و يا اگر ميخواهيد برنامه
در محل ديگري نصب شود بايستي در اين جا انتحاب نمائيد كه برابر درخواست شما در پست بالا، بايد در اين
زمان با كليك روي دكمه Next به صفحه بعد برويد.
4. در صفحه بعد مطابق شكل زير دو سطر عبارت خواهيد ديد
http://www.worldup.ir/images/thbfeauj1hikxy5fw2.png (http://www.worldup.ir/)
سطور بالا لازم نيستند و بايد آن ها را پاك كنيم. با كيك روي هر سطر و بعد كليك روي آيكن ديليت ، سطر
مورد نظر پاك خواهد شد.
================
اگر عمري باشد ادامه مطلب را در جلسه بعدي توضيح خواهم داد.
(شرمنده ام، مريضي اجازه فعاليت بيشتر نميدهد)
Magsoud
06-23-2017, 10:44 PM
صفحه اي كه داخلش شده و سطور موجود در آن را پاك كرديم، صفحه اي هست كه آدرس تمام فايل هاي مورد
نياز برنامه را خواهد گرفت.
در سمت راست اين صفحه چهار عدد آيكن در كنار هم قرار دارند كه در شكل زير آن ها را با شماره هاي 1 تا
4 مشخص كرده ام.
http://www.worldup.ir/images/a5pwddhdigi1vnjti5g.png (http://www.worldup.ir/)
_ آيكن (1) وظيفه اش ديليت كردن محتوائي هست كه انتخاب شده كه چگونگي كارش را در پست قبلي ديديم.
_ اگر بخواهيم به برنامه hm nis edit بگوئيم كه برنامه ما شامل كدام فايل ها هست، بايستي روي يكي از
دو آيكن 3 يا 4 كليك كنيم
اگر بخواهيم به برنامه بگوئيم كه محتواي يك پوشه را انتحاب كند بايد روي آيكن (3) كليك كنيم.
اگر بخواهيم فقط يك عدد فايل به برنامه معرفي كنيم بايستي روي آيكن (4) كليك كنيم.
بهر حال پس از كليك كردن روي آيكن 3 يا 4 پنجره اي نمودار خواهد شد كه ما بايد در اين پنجره فايل يا پوشه
را مشخص نمائيم.
اگر فايل هاي برنامه ما درون بيش از يك پوشه قرار گرفته باشند مجبوريم براي وارد كردن هر پوشه يك بار روي
آيكن 3 كليك كرده و ادامه دهيم.
مثلا" در مثال شما برنامه داراي دو پوشه A و B است لذا ما بايد براي وارد كردن اين دو پوشه يايستي دو بار از
آيكن 3 استفاده نمائيم.
بهر حال بصورت زير ادامه دهيد:
1. در شكل بالا روي آيكن (3) كليك كنيد، پنجره اي شبيه شكل زير ظاهر خواهد شد:
http://www.worldup.ir/images/8we0pf4y0ynscm0pltr7.png (http://www.worldup.ir/)
براي اينكه محتواي پوشه A را به برنامه معرفي نمائيد روي كليد "..." كليك كرده و مطابق شكل بالا آدرس
F:\00\A را انتخاب كنيد.
همانطور كه مي بينيد برنامه بطور اتوماتيك در قسمت Destination directory عبارت INSTDIR $ را انتحاب
كرده است.
در اين محل ما بايد مشخص كنيم كه محتواي پوشه A در كجا بايد قرار بگيرند.ما در صفحه اول ويزارد برنامه
نام xxxx را انتخاب كرده بوديم.اگر بخواهيم پوشه اي بهمين نام درون Program Files درست شده و محتواي
پوشه A بداحل آن كپي شوند، بايستي در اينجا عبارت INSTDIR $ كه برنامه انتحاب كرده را قبول كنيم كه
چون ما همين را ميخواهيم لذا در اين مرحله روي دگمه OK كليك مي كنيم.
حواهيد ديد كه چند لحظه بعد اسامي محتويات پوشه A درون پنجره نوشته شدند.
حالا بايد محتواي پوشه B را به برنامه معرفي كنيم، براي اين كار دوباره روي آيكن (3) كليك كرده و اين دفعه
در صفحه بعد آدرس F:\00\B را انتخاب مي كنيم.
ما در بالا محل Program Files\xxxx را براي محتويات پوشه A انتخاب كرديم ولي در اينجا ما نميخواهيم كه
محتواي پوشه B هم در آن جا باشندبلكه ميخواهيم محتواي پوشه B درون پوشه Program Files\Common Files
كپي شوند.
براي اين كار بايستي مطابق شكل زير در قسمت Destination directory گزينه COMMONFILES $ را انتخاب
كنيم.
http://www.worldup.ir/images/vlp0ialyks1vlj7nf1r.png (http://www.worldup.ir/)
توضيح اينكه گزينه هاي مختلفي كه در شكل بالا تعدادي از آن ها را مشاهده مي كنيد، اصطلاحا"
Environment Variables ناميده مي شوند كه يادگيري تك تك آن ها براي كسي كه ميخواهد توسط NSIS
كار كند يك بايد است.
ما ميحواهيم كه يك فايل رجستري هم (مثلا" xxx.reg) در پايان كار اجرا شود.
براي اينكار روش هاي متعددي وجود دارد. من در اينجا تصميم گرفتم كه فايل xxx.reg را هم به برنامه معرفي
كنم كه بعدا" بگويم چگونه كار كند.
لذا در اين مرحله فايل xxx.reg را هم درون پوشه F:\00 قرار داده و سپس روي آيكن 4 كليك كرده و بعد مطابق
شكل زير آن را انتحاب كرده و سپس TEMP را بعنوان محل نگهداري آن انتحاب كردم.
http://www.worldup.ir/images/9ae606dulqrkah4qg9f.png (http://www.worldup.ir/)
حالا كه تمام فايل هاي مورد نياز به برنامه معرفي شده بعد از كليك روي دگمه Next به مرحله اي ميرسيم كه
كه بايد شورت كات هاي برنامه را مشخص نمائيم كه چگونگي را در جلسه بعد ادامه خواهم داد.
Magsoud
06-24-2017, 02:55 AM
در اين مرحله صفحه اي شبيه شكل زير حواهيد ديد:
http://www.worldup.ir/images/au6gste7hb44yz3n466.png (http://www.worldup.ir/)
در اين صفحه در قسمت بالا بايد نام پوشه اي كه ميحواهيم در منوي استارت درست شود نوشته مي شود.
كه در اين مثال در شكل بالا نام برنامه ما يعني xxxx نوشته شده است.
پائين تر عبارت ... Create an Uninstall icon را مي بينيد كه انتحاب شده است.
اگر مطابق شكل اين عبارت تيك خورده باشد (يعني انتحاب شده باشد) ، بعد از نصب برنامه شورت كاتي براي
Uninstall كردن برنامه در منوي استارت گذاشته خواهد شد. و اگر انتخاب نكنيد شورت كات Uninstall در منوي
استارت وجود نخواهد داشت.
در قسمت پائين اين صفحه بايد تمام شورت كات هائي را كه مي خواهيد وجود داشته باشند، را مشخص نمائيد.
معمولا" خود برنامه بطور اتوماتيك براي فايل هاي اجرائي و نيز فايل هاي راهنماي موجود درون فايل هاي شما ،
كد هاي شورت كات ها را مي نويسد كه معمولا" بدرد نمي خورند و بهتر است كه خودتان بشرح زير اين كار را
انجام دهيد.
اول شورت كات هائي را كه حود برنامه بطوز اتوماتيك نوشته نگاه كنيد، اگر درست هستند كه بگذاريد باشند.
ولي اگر درست نيستند بايد آن ها را پاك كرده و حودتان كد هاي مربوطه را بنويسيد.
هر سطر براي يك شورت كات هست.براي پاك كردن هر سطري ، آن سطر را انتحاب كرده و سپس در بالاي
نوشته ها روي گزينه Remove shortcut كليك كنيد.
اگر شورت كاتي ميخواهيد اضافه كنيد روي گزينه New Shortcut در بالاي نوشته ها كليك كرده و در صفحه اي
كه ظاهر ميشود بايد محل ايجاد شورت كات و نام شورت كات را مشخص نمائيد.
بعد از اينكه كارتان در اين صفحه تمام شد روي كليد Next كليك كنيد.
صفحه ديگزي باز مي شود كه در اين صفحه ميتوانيد مشحصه هاي مربوط به Uninstall كردن برنامه را وارد كنيد
و يا اينكه تيك جلوي گزينه Use Uninstaller را برداريد كه برنامه Uninstaller نسازد.
دز صفحه بعد ساخت اسكريت نهائي را انتحاب كرده و بهتر است گزينه Compile script را انتخاب نكنيد.
فايل اسكريپت نهائي در محلي كه شما معين ميكنيد درست حواهد شد.
حال مي توانيد اسكريپت را باز كرده و نگاه كنيد كه كمبودي نداشته باشد.و بعد در صورتيكه مشكلي نبود ميتوانيد
روي اسكريپت كليك راست كرده و گزينه Compile را انتخاب نمائيد تا فايل نهائي ساخته شود.
ولي در اين مثال كد هاي ما كامل نيست چون كه ما دستور داده ايم كه فايلي بنام xxx.reg به پوشه TEMP
كپي شود ولي هنوز كدي در رابطه با آن ننوشته ايم.
لذا اسكريپت ساخته شده را باز كرده و اول عبارت زير را به اول آن اضافه مي كنيم تا برنامه بتواند با فايل رجستري
كار كند:
!include registry.nsh
با دستورات محتلفي مي شود فايل رجستري مورد نظر را اجرا كرد، يك روش ساده اين است كه در داحل قسمت Section سطر قبل از SectionEnd دستور زير را وارد نمائيد:
ExecWait "regedit.exe /s $TEMP\xxx.reg"
Delete $TEMP\xxx.reg
حال كار تمام شده و ميتواني اسكريپت نهائي را كامپايل كنيد.
نكته نهائي: اكثريت نكاتي كه در اين بحث گفته شده براي افرادي كه با كد هاي NSIS كار نكرده اند، نامفهوم
خواهد بود.
منظور اينكه كسي كه با برنامه HM NIS Edit و يا هر برنامه مربوط به NSIS كار ميكند و يا خودش مستقلا" كد
مي نويسد اول بايد با كليات اين برنامه آشنا باشد.
موفق باشيد.
با سلام استاد 2 تا درخواست ازتون دارم
1- استاد میشه یه فرمول کلی برای ایجاد یه سکریپت nsis برام تشریح کنید که باتوجه به اون فرمول کلی بشه یه اسکریپت nsis رو درست کرد
باتوجه به این که تعدادی فایل وتعدادی فولدر ویه فایل رجیستری داریم
2- چندتایی مثال بزنید تا باتوجه به اون روال کار دستم بیاد
Magsoud
07-22-2017, 08:14 PM
سعي ميكنم كه با دو مثال چگونگي ساخت كلي فايل هاي Setup با استفاده از برنامه NSIS را شرح دهم كه
شما ميتوانيد كد هاي گقته شده را بعنوان يك فرمول كلي در اكثر موارد استفاده نمائيد.
كد ها را طوري نوشته ام كه شما براي ساخت هر نوع Setup فقط لارم داريد كه چند تا نام را در داخل كد ها
تغيير دهيد.
و يا در صورت نياز ميتوانيد دستوراتي را از داخل كد ها حذف كرده و يا دستوراتي را برابر نيازتان براي موارد مختلف
چندين بار تكرار كنيد.
مسلم است كه بايستي مطالبي كه شرح داده مي شود را با دقت كافي مطالعه كرده و وقت كافي جهت تمرين
مطالب گفته شده بگذاريد.
توضيح:
====
با روشي كه توضيح داده ميشود، در انتهاي كار شما فرمولي را خواهيد داشت كه با استفاده از آن ميتوانيد انواع
نصب هاي اتوماتيك عمومي را بسازيد.
ولي در اين فرمول جائي براي Uninstall كردن و يا وارد كردن پاره اي از اطلاعات نيست. يعني با اين روش در حقيقت
ما داريم يك Extractor اتوماتيك درست مي كنيم. بطور ديگر بگويم با اين روش ما داريم كپي شدن تعدادي فايل و پوشه
را بجا هاي دلخواهمان و يا اجراي يك فايل رجستري را بصورت اتوماتيك انجام مي دهيم.
براي داشتن يك Setup كامل بايد بطور ديگري عمل كرد مثلا" استفاده از يرنامه هاي مخصوص اين كار. ولي بهر حال
اين روش هم در بسياري از موارد كاملا" كار ساز و كافي است.
مثال (1)
=========
فرض مي كنيم كه:
1. پوشه اي بنام A داريم كه در داخل آن تعدادي فايل و چند تا پوشه مختلف وجود دارند كه فايل اصلي قابل اجرا
بنام AAA.exe هم داخل اين پوشه مي باشد.
2. ميخواهيم بعد از ست آپ پوشه اي بنام AAA درون پوشه Program Files درست شده و تمام محتويات پوشه
A درون آن كپي شوند.
3. ميخواهيم پوشه اي بنام AAA درون منوي استارت درست شده و در داخل آن يك شورت كات براي فايل AAA.exe
گذاشته شود.
4. ميخواهيم كه يك شورت كات ديگر براي فايل AAA.exe در دسكتاپ درست شود.
5. يك فايل رجستري بنام do.reg داريم كه ميخواهيم در پايان كار اين فايل اجرا شود.
6. مي خواهيم كه فايلي بنام xxx.exe درست كنيم كه آيكن دلخواه ما را داشته باشد و بتواند تمام اعمال بالا را
بطور اتوماتيك و محفيانه انجام دهد.
براي ساخت فايل xxx.exe توسط NSIS به شرح زير عمل ميكنيم:
1.در روت يكي از درايو ها پوشه اي بنام فرضا" Sahand درست كنيد (مثلا" D:\Sahand).
2. پوشه A را با محتوياتش درون پوشه D:\Sahand كپي كنيد.
3. فايل رجستري do.reg را هم درون پوشه D:\Sahand كپي كنيد.
4. آيكني را كه ميخواهيد فايل نهائي داراي اين آيكن باشد را تهيه نموده و آن را با نام mcs.ico درون پوشه
D:\Sahand كپي نمائيد.
5. برنامه notepad را اجرا كرده و سپس متن زير را درون آن كپي نموده و سپس آن را با نام فرضا" xxx.nsi
درون پوشه D:\Sahand در كنار بقيه فايل ها ذخيره كنيد:
!include registry.nsh
SetCompressor ZLIB
InstallDir "$PROGRAMFILES\AAA"
OutFile "xxx.exe"
Icon "mcs.ico"
SilentInstall silent
CRCCheck off
AutoCloseWindow true
WindowIcon off
XPStyle on
ShowInstDetails hide
ShowUninstDetails hide
Section Main
SetOutPath "$INSTDIR"
File /nonfatal /a /r "A\"
CreateDirectory "$SMPROGRAMS\AAA"
CreateShortCut "$SMPROGRAMS\AAA\AAA.lnk" "$INSTDIR\AAA.exe"
CreateShortCut "$DESKTOP\AAA.lnk" "$INSTDIR\AAA.exe"
SetOutPath "$TEMP"
File "do.reg"
${registry::RestoreKey} "$TEMP\do.reg" $R0
Sleep 300
Delete $TEMP\do.reg
SectionEnd
6. روي فايل xxx.nsi كليك راست كرده و روي گزينه Compile كليك كنيد. بعد از چند لحظه فايلي بنام xxx.exe
درون پوشه D:\Sahand در كنار بقيه فايل ها درست خواهد شد كه اگر اجرايش كنيد تمام موارد گفته شده در
بالا را انجام خواهد داد.
توجه داشته باشيد كه آيكني كه انتحاب مي كنيد ساده باشد (فقط اندازه هاي 48 و 32 و 16 را داشته باشد)
چون اگر حجم آيكن بالا باشد برنامه NSIS قبول نخواهد كرد.
اگر عمري باشد، در جلسه بعد دستورات استفاده شده در كد هاي بالا را توضيح داده و با مثالي ديگر، امكاناتي
ديگر به برنامه اضافه خواهيم كرد.
Magsoud
07-23-2017, 03:22 PM
شرح مختصر دستورات بكار رفته در مثال (1)
========================
دستور سطر اول: براي اينكه برنامه NSIS بتواند فايل هاي رجستري را اجرا كند، اول بايستي پلاگ اين رجستري
را دانلود و نصب كنيد. و منبعد هر وقت قرار باشد كه در داحل كد هايتان با فايل يا فايل هاي رجستري كار كنيد
بايد حتما" در بالاي كد هاي برنامه دستورات سطر اول را بنويسيد. ما هم چون در مثال 1 با فايل رجستري كار
داريم لذا اين سطر را نوشتيم.
دستور سطر دوم (SetCompressor): در اين سطر به برنامه ميگوييم كه فايل نهائي را چقدر فشرده كند. مقدار
بكار رفته در اين سطر ZLIB است كه بهتر است همواره همين را استفاده نمائيد.
دستور سطر سوم (InstallDir): در اين سطر به برنامه ميگوئيم كه فايل هاي ما را در كدام محل بگذارد كه در اين
مثال گفته ايم فايل هاي ما را داخل پوشه Program Files\AAA كپي كند.
دستور سطر چهار (OutFile): در اين جا بايد مشحص كنيم كه برنامه نام فايل نهائي را چه عبارتي تعيين كند كه
در اين مثال حواسته ايم كه نام فايل نهائي xxx.exe باشد.
دستور سطر پنجم (Icon): در جلوي اين دستور نام آيكني را مي نويسيم كه مي خواهيم فايل نهائي با آن آيكن
ساخته شود.
دستورات سطور 6 تا 12 چگونگي كار فايل نهائي را مشحص مي نمايند كه اگر ميخواهيد فايل نهائي بصورت
اتوماتيك و مخفي اجرا شود بايد همواره همين عبارت ها را بنويسيد.
دستور سطور 13 و 24 - دستوراتي كه بايد فايل نهائي اجرا كند را بايد حتما" ما بين دو عبارت Section و
SectionEnd بنويسيم.
توضيح اينكه در اين برنامه فقط يك Section با نام (Section Main) داريم ولي مي توان در صورت نياز Section
هاي ديگري هم داشت.
دستور سطر 14 (SetOutPath): در هر برنامه بر اساس نيازمان لازم داريم كه به برنامه بگوئيم كه يك يا چند دستور
را اجرا كند. لازم هست كه قبل از اعلام هر دستور ، اول به برنامه بگوئيم كه دستور زير را در كجا بايد انجام دهد.
كه در اين مثال در اين سطر به برنامه گفته ايم كه دستوري كه داده مي شود را در محل INSTDIR اجرا كند. كه
همانطور كه در دستور سطر (3) گفتيم INSTDIR برابر Program Files\AAA است. يعني با اين دستور به برنامه
گفته ايم كه دستور زيري را در آدرس پوشه Program Files\AAA انجام دهد.
دستور سطر 15 : در اين جا با دستوري كه مي بينيد به برنامه گفته ايم كه تمام محتواي پوشه A را به محل
INSTDIR يعني Program Files\AAA كپي نمايد.
دستورات سطور 16 و 17 و 18 : در اين مثال ما ميخواهيم كه برنامه يك پوشه بنام AAA در داخل منوي استارت
درست كرده و در داخل آن شورت كات فايل اجرائي برنامه را قرار دهد.
با دستور سطر 16 پوشه اي بنام AAA داخل منوي استارت ساخته مي شود.
با دستور سطر 17 شورت كات فايل AAA.exe كه فايل اصلي اجرائي هست در داحل پوشه AAA درون منوي
استارت ساخته مي شود
با دستور سطر 18 شورت كات فايل AAA.exe در دسكتاپ ساخته مي شود.
دستورات سطر 19 تا آخر: در اين مرحله بايد دستور انجام كار ديگري را بدهيم كه در اين مثال مي حواهيم
به برنامه بگوئيم كه فايل رجستري مورد نظر ما يعني فايل do.reg را اجرا نمائد.
در سطز 19 به برنامه ميگوئيم كه دستور بعدي را در محل پوشه TEMP اجرا كند.
در سظر 20 به برنامه ميگوئيم كه فايل do.reg را به پوشه TEMP كپي كند.
در سطر 21 از برنامه ميخواهيم كه فايل رجستري موجود در پوشه TEMP يعني فايل do.reg را اجرا كند.
در سطر 22 از برنامه ميخواهيم كه مدت 300 ميلي ثانيه صبر كند و بعد مطابق دستور سطر 23 ميخواهيم كه
فايل do.reg موجود در پوشه TEMP را ديليت كند.
با مختصزي دقت در كد ها و چند تمرين، متوجه خواهيد شد كه كار چقدر راحت هست.
با مثالي ديگر در جلسه بعد، سعي خواهم كرد كه چگونگي اضافه كردن اعمالي ديگر را به كد هاي بالا توضيح
داده و بحث را تمام كنم.
Magsoud
07-24-2017, 09:37 PM
سهند عزيز ، ميتوان گفت كه جواب سوال شما در طي دو جلسه قبل توضيح داده شد. اكنون شما فرمولي
داريد كه فقط با تغيير دادن عبارات جلوي دستورات مختلف در اين فرمول،به سادگي ميتوانيد فايل هاي نصب
اتوماتيك مختلفي درست كنيد.
در بحث امروز فقط توضيحاتي در رابطه با اضافه نمودن دستوراتي ديگر به فرمول مورد بحث يا كم كردن دستوراتي
از آن صحبت مي كنيم.
مثال (2) اضافه نمودن اعمالي ديگر به كد هاي گفته شده در مثال (1)
=======================================
فرض مي كنيم كه دو تا فايل به نام هاي aaa.txt و bbb.png داريم و ميخواهيم كه برنامه در حين نصب اين دو تا
فايل را به درون پوشه windows كپي كند. بشرح زير عمل مي كنيم:
1. وقتي بخواهيم دستور يا دستوراتي به دستورات بالا اضافه كنيم؛ بايد آن ها را در بين دو عبارت Section Main
و SectionEnd بنويسيم.
در اينجا مي آئيم دستورات لازم را بعد از پايان يكي از دستورات بالا مي نويسيم. فرضا" دستورات جديد را بعد از
دستورات ساخت شورت كات ها يعني بعد از سطر 18 در مثال بالا اضافه مي كنيم
در اين جا ما ميخواهيم كه دو تا فايل مورد نظر ما به درون پوشه windows كپي شوند ، يعني محل اجراي دستور
داخل پوشه windows است.
بنابر اين دستورات زير را در محل گفته شده تايپ مي كنيم:
SetOutPath "$WINDIR"
File "aaa.txt"
File "bbb.png"
همانگونه كه مشاهده مي كنيد در دستورات بالا در اولين سطر محل اجراي دستور يعني پوشه windows
معرفي شده و در دو سطر بعدي مشخص شده كه فايل هاي aaa.txt و bbb.png بايد به داخل پوشه ويندوز
كپي شوند.
با مختصري دقت و تمرين در مورد اين دستوري كه توضيح داده شد و دستوراتي كه در مثال قبلي شرح داده شدند،
مي شود فهميد كه براحتي ميتوان هر فايل يا پوشه را در هر حائي كه لازم هست قرار داد و كاربر در اين موارد تنها
نيازي كه دارد اين است كه نام جا هاي مختلف را بداند .
براي مثال در اين دستور و دستورات جلسه قبل ديديم كه برنامه NSIS عبارت WINDIR را بعنوان پوشه windows
و عبارت PROGRAMFILES را بعنوان پوشه Program Files و.... مي شناسد.
يعني كاربر بايستي اين عبارات را بشناسد. توضيح اينكه اين عبارات تحت عنوان اصطلاحا" NSIS Constants و نيز
NSIS Environment Variables در راهنماي داخل NSIS شرح داده شده اند.
موفق باشيد.
سعي ميكنم كه با دو مثال چگونگي ساخت كلي فايل هاي Setup با استفاده از برنامه NSIS را شرح دهم كه
شما ميتوانيد كد هاي گقته شده را بعنوان يك فرمول كلي در اكثر موارد استفاده نمائيد.
كد ها را طوري نوشته ام كه شما براي ساخت هر نوع Setup فقط لارم داريد كه چند تا نام را در داخل كد ها
تغيير دهيد.
و يا در صورت نياز ميتوانيد دستوراتي را از داخل كد ها حذف كرده و يا دستوراتي را برابر نيازتان براي موارد مختلف
چندين بار تكرار كنيد.
مسلم است كه بايستي مطالبي كه شرح داده مي شود را با دقت كافي مطالعه كرده و وقت كافي جهت تمرين
مطالب گفته شده بگذاريد.
توضيح:
====
با روشي كه توضيح داده ميشود، در انتهاي كار شما فرمولي را خواهيد داشت كه با استفاده از آن ميتوانيد انواع
نصب هاي اتوماتيك عمومي را بسازيد.
ولي در اين فرمول جائي براي Uninstall كردن و يا وارد كردن پاره اي از اطلاعات نيست. يعني با اين روش در حقيقت
ما داريم يك Extractor اتوماتيك درست مي كنيم. بطور ديگر بگويم با اين روش ما داريم كپي شدن تعدادي فايل و پوشه
را بجا هاي دلخواهمان و يا اجراي يك فايل رجستري را بصورت اتوماتيك انجام مي دهيم.
براي داشتن يك Setup كامل بايد بطور ديگري عمل كرد مثلا" استفاده از يرنامه هاي مخصوص اين كار. ولي بهر حال
اين روش هم در بسياري از موارد كاملا" كار ساز و كافي است.
مثال (1)
=========
فرض مي كنيم كه:
1. پوشه اي بنام A داريم كه در داخل آن تعدادي فايل و چند تا پوشه مختلف وجود دارند كه فايل اصلي قابل اجرا
بنام AAA.exe هم داخل اين پوشه مي باشد.
2. ميخواهيم بعد از ست آپ پوشه اي بنام AAA درون پوشه Program Files درست شده و تمام محتويات پوشه
A درون آن كپي شوند.
3. ميخواهيم پوشه اي بنام AAA درون منوي استارت درست شده و در داخل آن يك شورت كات براي فايل AAA.exe
گذاشته شود.
4. ميخواهيم كه يك شورت كات ديگر براي فايل AAA.exe در دسكتاپ درست شود.
5. يك فايل رجستري بنام do.reg داريم كه ميخواهيم در پايان كار اين فايل اجرا شود.
6. مي خواهيم كه فايلي بنام xxx.exe درست كنيم كه آيكن دلخواه ما را داشته باشد و بتواند تمام اعمال بالا را
بطور اتوماتيك و محفيانه انجام دهد.
براي ساخت فايل xxx.exe توسط NSIS به شرح زير عمل ميكنيم:
1.در روت يكي از درايو ها پوشه اي بنام فرضا" Sahand درست كنيد (مثلا" D:\Sahand).
2. پوشه A را با محتوياتش درون پوشه D:\Sahand كپي كنيد.
3. فايل رجستري do.reg را هم درون پوشه D:\Sahand كپي كنيد.
4. آيكني را كه ميخواهيد فايل نهائي داراي اين آيكن باشد را تهيه نموده و آن را با نام mcs.ico درون پوشه
D:\Sahand كپي نمائيد.
5. برنامه notepad را اجرا كرده و سپس متن زير را درون آن كپي نموده و سپس آن را با نام فرضا" xxx.nsi
درون پوشه D:\Sahand در كنار بقيه فايل ها ذخيره كنيد:
!include registry.nsh
SetCompressor ZLIB
InstallDir "$PROGRAMFILES\AAA"
OutFile "xxx.exe"
Icon "mcs.ico"
SilentInstall silent
CRCCheck off
AutoCloseWindow true
WindowIcon off
XPStyle on
ShowInstDetails hide
ShowUninstDetails hide
Section Main
SetOutPath "$INSTDIR"
File /nonfatal /a /r "A\"
CreateDirectory "$SMPROGRAMS\AAA"
CreateShortCut "$SMPROGRAMS\AAA\AAA.lnk" "$INSTDIR\AAA.exe"
CreateShortCut "$DESKTOP\AAA.lnk" "$INSTDIR\AAA.exe"
SetOutPath "$TEMP"
File "do.reg"
${registry::RestoreKey} "$TEMP\do.reg" $R0
Sleep 300
Delete $TEMP\do.reg
SectionEnd
6. روي فايل xxx.nsi كليك راست كرده و روي گزينه Compile كليك كنيد. بعد از چند لحظه فايلي بنام xxx.exe
درون پوشه D:\Sahand در كنار بقيه فايل ها درست خواهد شد كه اگر اجرايش كنيد تمام موارد گفته شده در
بالا را انجام خواهد داد.
توجه داشته باشيد كه آيكني كه انتحاب مي كنيد ساده باشد (فقط اندازه هاي 48 و 32 و 16 را داشته باشد)
چون اگر حجم آيكن بالا باشد برنامه NSIS قبول نخواهد كرد.
اگر عمري باشد، در جلسه بعد دستورات استفاده شده در كد هاي بالا را توضيح داده و با مثالي ديگر، امكاناتي
ديگر به برنامه اضافه خواهيم كرد.
استاد توی قسمت رجیتری ارور داد ممبه جای استفده از دستورات رجستری که نوشتید اینو جایگزین کردم واین درست کارکرد
این اسکرین شات از ارور
http://up.worldup.ir/do.php?imgf=Screenshot-1_5a632.jpg (http://up.worldup.ir/)
اینم جایگزین
SetOverwrite on
InitPluginsDir
File /oname=$PLUGINSDIR\TeraCopy.reg "TeraCopy.reg"
Execwait 'regedit.exe /s "$PLUGINSDIR\TeraCopy.reg"'
ویه سوال هم اینکه اگه بخواهیم توی PROGRAMFILES دوتا پوشه ایجاد بشه یکی بطور مثال پوشه A و دومی پوشه B
دستور چجوری خواهد بود
Magsoud
07-26-2017, 03:27 AM
مسئله رجستری چیزی هست که در هر کامپیوتر طور دیگری عمل خواهد کرد. البته اشکال در اینجا این است
که ظاهرا" پلاگ این رجستری که نصب کردی اشکال دارد.
بهر حال روشی که بکار بردی روش خیلی خوبی هست.
در رابطه با سوالی که کردی بعد از دستور ساخت شورت کات ها کد های زیر را اضافه کن:
CreateDirectory "$PROGRAMFILES\B"
SetOutPath "$PROGRAMFILES\B"
File /nonfatal /a /r "B\"
با دستور فوق همه فایل ها و پوشه های موجود در پوشه B به پوشه Program Files\B کپی خواهند شد.
با سلام
استاد من یه اسکریپت دیگه نوشتم وکار هم میکنه میخواسم ببینم اسکریپت من با اسکریپتی که شما توضیح دادید چه فرقی داره
!include registry.nsh
SetCompressor ZLIB
OutFile "Sahand.exe"
Icon "mcs.ico"
SilentInstall silent
CRCCheck off
AutoCloseWindow true
WindowIcon off
XPStyle on
ShowInstDetails hide
ShowUninstDetails hide
Section Main
CreateDirectory "$PROGRAMFILES\Elaborate Bytes"
SetOutPath "$PROGRAMFILES\Elaborate Bytes"
SetOverwrite on
File /nonfatal /a /r "Elaborate Bytes\"
CreateDirectory "$SMPROGRAMS\Virtual Clone Drive"
CreateShortCut "$SMPROGRAMS\Virtual Clone Drive\Virtual CloneDrive.lnk" "$PROGRAMFILES\Elaborate Bytes\VirtualCloneDrive\VCDPrefs.exe"
CreateShortCut "$SMPROGRAMS\Virtual Clone Drive\Uninstall.lnk" "$PROGRAMFILES\Elaborate Bytes\VirtualCloneDrive\vcd-uninst.exe"
CreateShortCut "$SMPROGRAMS\Virtual Clone Drive\Revision History.lnk" "$PROGRAMFILES\Elaborate Bytes\VirtualCloneDrive\manual\changes_vcd.txt"
CreateDirectory "$PROGRAMFILES\UltraISO"
SetOutPath "$PROGRAMFILES\UltraISO"
SetOverwrite on
File /nonfatal /a /r "UltraISO\"
CreateDirectory "$SMPROGRAMS\UltraISO"
CreateShortCut "$SMPROGRAMS\UltraISO\UltraISO.lnk" "$PROGRAMFILES\UltraISO\UltraISO.exe"
CreateShortCut "$SMPROGRAMS\UltraISO\Uninstall.lnk" "$PROGRAMFILES\UltraISO\unins000.exe"
CreateShortCut "$SMPROGRAMS\UltraISO\UltraISO Help.lnk" "$PROGRAMFILES\UltraISO\ultraiso.chm"
CreateShortCut "$SMPROGRAMS\UltraISO\UltraISO Revision History.lnk" "$PROGRAMFILES\UltraISO\History.txt"
CreateDirectory "$COMMONFILES\EZB Systems"
SetOutPath "$COMMONFILES\EZB Systems"
SetOverwrite on
File /nonfatal /a /r "EZB Systems\"
SetOverwrite on
InitPluginsDir
File /oname=$PLUGINSDIR\setup.reg "setup.reg"
Execwait 'regedit.exe /s "$PLUGINSDIR\setup.reg"'
SectionEnd
واینکه کدوم یکی بهتره
Magsoud
07-27-2017, 03:19 AM
در پست فبلی برای استفاده از دایرکتوری Program Files\B سه سطر کد توضیح دادم که
عین همان روش در اسکریپتی که شما بکار برده اید استفاده شده است.
هر دو روش خوبند فقط نوع استفاده از رجستری در کدهای بنده و شما با هم فرق دارند.
استاد اگه میشه افزونه های مهمی که بیشتر کاربرد داره رو نام ببرید که اونا نصب کنیم چون نگاه کردم افزونه های زیادی داره ولی کاربردی ترین هاشو میخواستم نام ببرید بنصبم ممنون
Magsoud
07-31-2017, 05:47 PM
واقعا" نميشود گفت كه كدام پلاگ اين ضروري هست. هر كسي بنا بر نياز هايش چند تا پلاگ اين را دانلود و
نصب ميكند.
براي مثال اگر با فايل هاي رجستري سر و كار داشته باشيد، ضرورت دارد كه پلاگ اين مربوطه را داشته باشيد
ولي كسي كه با رجستري كاري ندارد، نيازي هم به نصب پلاگ اين مربوطه ندارد.
در كل بايستي مشخصه پلاگ اين ها را مطالعه كرده و برابر نياز هاي خود انتخاب كرد كه كدام لازم است.
در ضمن توجه داشته باشيد كه پس از نصب هر پلاگ اين بايد چگونگي كار با آن را هم ياد بگيريد.
استاد دوتا زحمت داشتم براتون
1-اگه ممکنه Environment Variables این نرم افزار رو بصورت جدول بذارید ممنون میشم از فایل راهنما تعدادیشو نگرفتم مثلا ProgramData
اما اگه بصورت جدول باشه راحتتره خیلی ممنون میشم این زحمت رو بکشید
2-من ورژن 2.5 نرم افزار رو دارم در طرف راست نرم افزار تعدادی plug ins هست میخواستم اگه ممکنه در مورد اونا یکم توضیح بدید که این پلاگها برای چیه ((حتما خیلی مهم هستن که با خود نرم افزار نصب میشوند))
Magsoud
08-02-2017, 04:15 PM
در جدول زير مقادير مربوط به Environment Variables را براي مواردي كه معمولا" لازم هست قرار داده ام
توجه داشته باشيد كه در اين جدول نام كاربر سيستم xxx فرض شده است :
$COMMONFILES C:\Program Files\Common Files
================================================== ===========================
$PROGRAMFILES C:\Program Files
================================================== ===========================
$SYSDIR C:\Windows\system32
================================================== ===========================
$ADMINTOOLS current ADMINTOOLS=C:\Users\xxx\AppData\Roaming\Microsoft\ Windows\Start Menu\Programs\Administrative Tools
all ADMINTOOLS=C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
================================================== ===========================
$APPDATA current APPDATA=C:\Users\xxx\AppData\Roaming
all APPDATA=C:\ProgramData
================================================== ===========================
$DESKTOP current DESKTOP= C:\Users\xxx\Desktop
all DESKTOP= C:\Users\Public\Desktop
================================================== ===========================
$DOCUMENTS current DOCUMENTS= C:\Users\xxx\Documents
all DOCUMENTS= C:\Users\Public\Documents
================================================== ===========================
$FAVORITES current FAVORITES= C:\Users\xxx\Favorites
all FAVORITES= C:\Users\xxx\Favorites
================================================== ===========================
$LOCALAPPDATA current LOCALAPPDATA= C:\Users\xxx\AppData\Local
================================================== ===========================
$PROFILE C:\Users\xxx
================================================== ===========================
$QUICKLAUNCH C:\Users\xxx\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch
================================================== ===========================
$SENDTO C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Sen dTo
================================================== ===========================
$SMPROGRAMS current SMPROGRAMS= C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Sta rt Menu\Programs
all SMPROGRAMS= C:\ProgramData\Microsoft\Windows\Start Menu\Programs
================================================== ===========================
$SMSTARTUP current SMSTARTUP=C:\Users\xxx\AppData\Roaming\Microsoft\W indows\Start Menu\Programs\Startup
all SMSTARTUP=C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
================================================== ===========================
$STARTMENU current STARTMENU= C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Sta rt Menu
all STARTMENU= C:\ProgramData\Microsoft\Windows\Start Menu
================================================== ===========================
$TEMP C:\Users\xxx\AppData\Local\Temp
================================================== ===========================
$WINDIR C:\Windows
================================================== ===========================
همانطور كه مشاهده مي كنيد،در جدول بالا بعضي مقادير را در يك سطر و بعضي را در دو سطر مشخص
كرده ام.
اين به خاطز آن است كه بعضي مقادير همواره يكسان هستند كه اين ها در يك سطر مشخص گرديده اند.
ولي بعض از مقادير داراي دو حالت هستند يك مقدار براي كاربر عادي سيستم بوده و مقدار دوم مخصوص
كار بر اصطلاحا" All Users مي باشد كه اين گروه را در دوسطر مشخص نموده ام.
نكته خيلي مهمي كه در اين مورد بايد در نظز داشته باشيد اين است كه NSIS موارد را براي كاربر فعلي
سيستم بيان كرده است . براي مثال اگر عبارت APPDATA $ را استفاده نمائيد اين عبارت مخصوص كاربر
عادي سيستم بوده و معادل آدرس C:\Users\xxx\AppData\Roaming مي باشد.
ولي اگر بخواهيم كه اين عبارت براي كاربر All Users بكار رود در اين صورت برنامه آدرس را C:\ProgramData
خواهد شناخت.
براي اينكه سيستم به آدرس All Users عمل كند بايد قبل از دستور مربوطه دستور SetShellVarContext all
زا بنويسيم.
براي مثال دستور زير در آدرس C:\Users\xxx\AppData\Roaming كار خواهد كرد:
SetOutPath "$APPDATA"
ولي دستور زير دز آدرس C:\ProgramData كار خواهد كرد:
SetShellVarContext all
SetOutPath "$APPDATA"
موفق باشید
استاد سوال دیگه هم داشتم
1- چطوری میشه دستوری داد که قبل نصب یه نرم افزاری که با nsis درست کردیم یه پیامی نشون بده مثلا به مدت 3ثانیه بعدشروع به نصب کنه ؟؟؟
2- واینکه یه نوار پیشرفت نصب نرم افزار هم نشون بده؟؟؟؟
Magsoud
08-05-2017, 03:19 PM
سهند عزيز
حدود يك هفته قبل چند تا سوال مطرح كردي كه يكي از آن ها در رابطه با شرح پلاگ اين هائي هست كه بطور
پيش فرض همراه برنامه NSIS وجود دارند.
حدود 12 تا پلاگ اين بطور پيش فرض همراه نصب برنامه NSIS نصب ميشوند كه شرح هر كدام يك بحث مفصلي
هست.
متاسفانه بعلت مريضي جسمي و درد مداوم، برايم امكان اين كه شروع به شرح اين مفصل كنم وجود ندارد، لذا
برخلاف عادتم كه دوست ندارم كه سوالي را كه ميدانم بي پاسخ بگذارم، به اين سوال پاسخ ندادم.
اما سوال امروز شما كه شرحش را در سطور زير مشاهده خواهيد كرد، يكي از پلاگ اين هائي هست كه همراه
NSIS وجود دارد.
========================
گاهي ميخواهيم كه برنامه ما قبل از شزوع نصب، فرضا" با نشان دادن يك تصوير بمدت چند ثانيه، پيغامي را به
استفاده كننده نشان داده و بعد كار اصلي اش را ادامه دهد.
اين عمل را اصطلاحا" نشان دادن Splash مي نامند.
اين كار را به روش هاي مختلفي مي توان انجام داد كه يكي از آن ها استفاده از پلاگ اين Splash است كه داخل
NSIS وجود دارد. نمونه استفاده از اين پلاگ اين را در زير مشاهده مي نمائيد:
1. يك تصوير نوع BMP را با نام splash.bmp درست كنيد.
2. فايل كد با نام فرضا" splash.nsi با محتواي زير را درست نموده و آن را هم در كنار فايل splash.bmp قرار دهيد:
Name "Splash"
OutFile "Splash.exe"
SilentInstall silent
XPStyle on
Function .onInit
InitPluginsDir
File /oname=$PLUGINSDIR\splash.bmp "splash.bmp"
splash::show 5000 $PLUGINSDIR\splash
FunctionEnd
Section
SectionEnd
3. حالا روي فايل splash.nsi كليك راست نموده و روي گزينه Compile كليك كنيد. چند لحظه بعد قايلي بنام
Splash.exe در كنار بقيه فايل ها درست خواهد شد كه اگر اجرايش كنيد، خواهيد ديد كه تصوير splash.bmp
بمدت 5 ثانيه نشان داده شده و بعد برنامه خاموش مي شود.
شما ميتوانيد كد هاي مربوطه را به اول دستورات موجود در فايل نصب مورد نظرتان اضافه كنيد.
با اين كار برنامه شما اول بمدت 5 ثانيه تصوير مورد بحث را نشان داده و سپس بقيه اعمال را شروع خواهد كرد.
توصيح اينكه در كد هاي بالا عبارت 5000 مدت زماني است كه تصوير نشان داده خواهد شد. 5000 برابر 5 ثانيه
هست و شما ميتوانيد اين عدد را بدلخواه كم و زياد انتخاب كنيد.
سهند عزيز
حدود يك هفته قبل چند تا سوال مطرح كردي كه يكي از آن ها در رابطه با شرح پلاگ اين هائي هست كه بطور
پيش فرض همراه برنامه NSIS وجود دارند.
حدود 12 تا پلاگ اين بطور پيش فرض همراه نصب برنامه NSIS نصب ميشوند كه شرح هر كدام يك بحث مفصلي
هست.
متاسفانه بعلت مريضي جسمي و درد مداوم، برايم امكان اين كه شروع به شرح اين مفصل كنم وجود ندارد، لذا
برخلاف عادتم كه دوست ندارم كه سوالي را كه ميدانم بي پاسخ بگذارم، به اين سوال پاسخ ندادم.
اما سوال امروز شما كه شرحش را در سطور زير مشاهده خواهيد كرد، يكي از پلاگ اين هائي هست كه همراه
NSIS وجود دارد.
========================
گاهي ميخواهيم كه برنامه ما قبل از شزوع نصب، فرضا" با نشان دادن يك تصوير بمدت چند ثانيه، پيغامي را به
استفاده كننده نشان داده و بعد كار اصلي اش را ادامه دهد.
اين عمل را اصطلاحا" نشان دادن Splash مي نامند.
اين كار را به روش هاي مختلفي مي توان انجام داد كه يكي از آن ها استفاده از پلاگ اين Splash است كه داخل
NSIS وجود دارد. نمونه استفاده از اين پلاگ اين را در زير مشاهده مي نمائيد:
1. يك تصوير نوع BMP را با نام splash.bmp درست كنيد.
2. فايل كد با نام فرضا" splash.nsi با محتواي زير را درست نموده و آن را هم در كنار فايل splash.bmp قرار دهيد:
Name "Splash"
OutFile "Splash.exe"
SilentInstall silent
XPStyle on
Function .onInit
InitPluginsDir
File /oname=$PLUGINSDIR\splash.bmp "splash.bmp"
splash::show 5000 $PLUGINSDIR\splash
FunctionEnd
Section
SectionEnd
3. حالا روي فايل splash.nsi كليك راست نموده و روي گزينه Compile كليك كنيد. چند لحظه بعد قايلي بنام
Splash.exe در كنار بقيه فايل ها درست خواهد شد كه اگر اجرايش كنيد، خواهيد ديد كه تصوير splash.bmp
بمدت 5 ثانيه نشان داده شده و بعد برنامه خاموش مي شود.
شما ميتوانيد كد هاي مربوطه را به اول دستورات موجود در فايل نصب مورد نظرتان اضافه كنيد.
با اين كار برنامه شما اول بمدت 5 ثانيه تصوير مورد بحث را نشان داده و سپس بقيه اعمال را شروع خواهد كرد.
توصيح اينكه در كد هاي بالا عبارت 5000 مدت زماني است كه تصوير نشان داده خواهد شد. 5000 برابر 5 ثانيه
هست و شما ميتوانيد اين عدد را بدلخواه كم و زياد انتخاب كنيد.
استاد فط با این پلاگین میشه فایل bmp رونشون داد یا فایلهای دیگه مثل text -jpg وغیره هم نشون داد؟؟؟
Magsoud
08-06-2017, 04:02 AM
بله این پلاگ این فقط با تصاویر BMP کار میکند. پلاگ این های دیگری هم وجود دارند ( مثل NewAdvSplash plug-in ).
برای نشان دادن text یا باید عکس نوشته را بکار برده و یا از دستور Messagebox استفاده نمائید.
بله این پلاگ این فقط با تصاویر BMP کار میکند. پلاگ این دیگری هم وجود دارد (NewAdvSplash plug-in )که
اگر درست خاطرم باشد، با JPG کار میکند
برای نشان دادن text یا باید عکس نوشته را بکار برده و یا از دستور Messagebox استفاده نمائید.
استاد شرمنده
اگه میشه یه مثال برای messagebox بزنید و دیگه اینکه ایا Nsis دارای چنین امکانی هست
1-نصب سا یلنت اما روند نصب رو نشون بده
2- در پایان نصب یه پیامی بر تکمیل نصب نشون بده مثلا 3ثانیه نشون بده compelet
Magsoud
08-06-2017, 04:26 PM
صفحه پيغام
=======
در برنامه NSIS با استفاده از دستور messageBox ميتوان پيغام هاي مختلفي را با شرايط مختلف به كار بر
ارايه نمود.
براي مثال به نمونه زير توجه نمائيد:
1. كد هاي زير را در notepad نوشته و آن را فرضا" با نام Message.nsi ذخيره نمائيد:
outfile "Message.exe"
SilentInstall silent
section
messageBox MB_OK "Sahand is my Good friend!"
sectionEnd
2. حال روي فايل Message.nsi كليك راست كرده و روي گزينه Compile كليك نمائيد. چند لحظه بعد فايلي
بنام Message.exe درست خواهد شد كه اگر اجرايش كنيد پنجره اي شبيه شكل زير خواهيد ديد:
http://www.worldup.ir/images/sra7qka7z9yreczdz5z.png (http://www.worldup.ir/)
همانطور كه مشاهده مي كنيد، پنجره پيغام عبارتي را كه ما در كد هاي بالا بعد از دستور messageBox MB_OK
مابين علايم "" نوشته ايم را نشان مي دهد.
معلوم است كه اندازه پنجره نشان داده شده بسته به مقدار نوشته هاي ما كوچكتر يا بزرگتر خواهد شد.
در اين مثال يك كليد OK هم نشان داده مي شود كه پس از كليك روي اين دگمه صفحه پيام بسته خواهد شد.
مثال بالا يك مثال خيلي ساده بوده و ميتوانيم تغييرات ديگري در اين پنجره انجام دهيم مثل گذاشتن دگمه هاي
ديگر مثل Yes ,No ,Cancel و غيره كه خوداين مسئله بحث جداگانه اي هست. بهر حال براي مورد مصرف شما
همين نوع هم كافي بنظر مي رسد.
سوال كرده ايد كه آيا ميشود روند نصب نشان داده شود؟ بله برنامه NSIS پلاگ اين هائي از جمله RealProgress plug-in
براي نشان دادن روند كار دارند ولي تجربيات بنده حداقل به خود بنده ثابت كرده كه نشان دادن روند كار فقط با برنامه نويسي
درست كار كرده و در بقيه موارد، هم زحمت زيادي دارد و هم بايد سطور كد زيادي نوشت و هم اينكه با تمام اين كار ها ممكن
است درست كار نكرده و باعث توقف در ادامه كار كردد.. لذا بنده در اين مورد حرفي نزده و رد مي شوم.
من عقيده دارم كه در اول و انتهاي برنامه ات يك پيام تصويري استفاده نمائيد. براي مثال بنده دو تا فايل اجرائي
با نام هاي Begin.exe و End.exe درست كرده و در پيوست فرار داده ام كه شما ميتوانيد فايل Begin.exe زا به اول
برنامه ات و فايل End.exe را به آخر برنامه ات اضافه كنيد كه در نتيجه در شروع و پايان كار، پيام هاي تصويري زير
را خواهيد داشت:
در شروع كار:
http://www.worldup.ir/images/0nhhuxfr6kl5k03pu81.png (http://www.worldup.ir/)
در انتهاي كار
http://www.worldup.ir/images/t71z4t8sijz75z4wt935.png (http://www.worldup.ir/)
صفحه پيغام
=======
در برنامه NSIS با استفاده از دستور messageBox ميتوان پيغام هاي مختلفي را با شرايط مختلف به كار بر
ارايه نمود.
براي مثال به نمونه زير توجه نمائيد:
1. كد هاي زير را در notepad نوشته و آن را فرضا" با نام Message.nsi ذخيره نمائيد:
outfile "Message.exe"
SilentInstall silent
section
messageBox MB_OK "Sahand is my Good friend!"
sectionEnd
2. حال روي فايل Message.nsi كليك راست كرده و روي گزينه Compile كليك نمائيد. چند لحظه بعد فايلي
بنام Message.exe درست خواهد شد كه اگر اجرايش كنيد پنجره اي شبيه شكل زير خواهيد ديد:
http://www.worldup.ir/images/sra7qka7z9yreczdz5z.png (http://www.worldup.ir/)
همانطور كه مشاهده مي كنيد، پنجره پيغام عبارتي را كه ما در كد هاي بالا بعد از دستور messageBox MB_OK
مابين علايم "" نوشته ايم را نشان مي دهد.
معلوم است كه اندازه پنجره نشان داده شده بسته به مقدار نوشته هاي ما كوچكتر يا بزرگتر خواهد شد.
در اين مثال يك كليد OK هم نشان داده مي شود كه پس از كليك روي اين دگمه صفحه پيام بسته خواهد شد.
مثال بالا يك مثال خيلي ساده بوده و ميتوانيم تغييرات ديگري در اين پنجره انجام دهيم مثل گذاشتن دگمه هاي
ديگر مثل Yes ,No ,Cancel و غيره كه خوداين مسئله بحث جداگانه اي هست. بهر حال براي مورد مصرف شما
همين نوع هم كافي بنظر مي رسد.
سوال كرده ايد كه آيا ميشود روند نصب نشان داده شود؟ بله برنامه NSIS پلاگ اين هائي از جمله RealProgress plug-in
براي نشان دادن روند كار دارند ولي تجربيات بنده حداقل به خود بنده ثابت كرده كه نشان دادن روند كار فقط با برنامه نويسي
درست كار كرده و در بقيه موارد، هم زحمت زيادي دارد و هم بايد سطور كد زيادي نوشت و هم اينكه با تمام اين كار ها ممكن
است درست كار نكرده و باعث توقف در ادامه كار كردد.. لذا بنده در اين مورد حرفي نزده و رد مي شوم.
من عقيده دارم كه در اول و انتهاي برنامه ات يك پيام تصويري استفاده نمائيد. براي مثال بنده دو تا فايل اجرائي
با نام هاي Begin.exe و End.exe درست كرده و در پيوست فرار داده ام كه شما ميتوانيد فايل Begin.exe زا به اول
برنامه ات و فايل End.exe را به آخر برنامه ات اضافه كنيد كه در نتيجه در شروع و پايان كار، پيام هاي تصويري زير
را خواهيد داشت:
در شروع كار:
http://www.worldup.ir/images/0nhhuxfr6kl5k03pu81.png (http://www.worldup.ir/)
در انتهاي كار
http://www.worldup.ir/images/t71z4t8sijz75z4wt935.png (http://www.worldup.ir/)
استاد کدهای این دوتا فایل رو که درست کردید اینجا میذارید خیلی ممنون
Magsoud
08-09-2017, 03:00 AM
....کدهای این دوتا فایل رو که درست کردید اینجا میذارید ....
در ساخت فايل هاي Begin.exe و End.exe از پلاگ اين newadvsplash اسقاده كرده
و كد هاي زير را بكار برده ام:
براي Begin.exe
===========
OutFile "Begin.exe"
Icon "mcs.ico"
SilentInstall silent
Function .onInit
InitPluginsDir
File /oname=$PLUGINSDIR\mcs.bmp "mcs.bmp"
newadvsplash::show 3000 1000 500 -1 "$PLUGINSDIR\mcs.bmp"
FunctionEnd
Section
SectionEnd
براي End.exe هم دقيقا" كد هاي بالا را استفاده كرده ام با اين فرق كه نام عوض شده
و تصوير استفاده شده هم تغيير داده شده است.
استاد چطوری میشه دستوری داد که کدهایی که نوشتیم رو هم پاک نکنه مثلا بذاره تو پوشه خود برنامه یا هرجای دیگه
وسیو بشه
این برام مهمه ومیخوام این کدها حفظ بشه برا هربرنامه ای که درست میکنم تا در اینده برا تغییرات مجبور به دوباره نویسی نشم فقط تغییرات و توش اعمال کنم
Magsoud
08-16-2017, 10:12 PM
سهند جان
من هر کاری که میکنم (در رابطه با پروژه های کامپیوتری)، قبل از هرکار دیگری کد ها و نمونه کار انجام شده
را در یک هارد External نگهداری کرده و بعدا" که لازم شد یک کپی از همان را برداشته و استفاده میکنم.
چون خود کامپیوتر بهیچ عنوان محل مناسبی برای نگهداری اطلاعات نیست.
اگر میحواهید که برنامه ای که دزست کردید در حین کامپایل خود کد ها را هم ذخیره کند بایستی کد ها را
بصورت فایل دیگری به برنامه معرفی کرده و با نوشتن کد مشخص کنید که آن را در کجا ذخیره کند.
ولی راه درست همان است که بنده انجام میدهم ، یعنی نگهداری کد ها درست بعد از مطمئن شدن از آن
در یک هارد بیرونی.
معلومه که قضایای اخیر بشدت عصبی و ناراحتت کرده اند.
استاد وقتی یه فایلی با nsis میسازیم برای اینکه وقی نشانگر موس رو روی فایل بردیم اطلاعات فایل موردنظر رو نشون بده چه دستوری و از کدوم پلاگین استفاده میکنیم ؟؟
vBulletin v4.2.5, Copyright ©2000-2025, Jelsoft Enterprises Ltd.