الگوی ساخت برنامه نصب با استفاده از nsis
سلام
برنامه NSIS یا بطور کامل تر Nullsoft Scriptable Install System یک برنامه نصب بسیار قدرتمند است که همه کار
ها را بر اساس زبان اسکریپت مخصوص خودش انجام میدهد.
برنامه ای رایگان و open source بوده و کار کردن با آن بسیار راحت و دلنشین است.در همه ویندوز ها کار میکند و
اکثریت زبان ها حتی فارسی را هم ساپورت مینماید.
در اصل توسط سازندگان برنامه محبوب WinAmp ساخته شده و بسیار انعطاف پذیر است.
ولی یک اشکال کلی دارد ، و آن این است که این برنامه صفحه گرافیکی (GUI) ندارد و کاربر بایستی اول اسکریپت
های این برنامه را یاد گرفته و بعد دستورات را در یک فایل متنی بنویسد.
البته برای کار با این برنامه وافعا" عالی دهها برنامه مختلف نوشته شده است.
امروز میخواهیم یک الگو بسازیم که هر کسی حتی بدون داشتن کوچکترین اطلاعاتی از اسکریپت نویسی NSIS
بتواند به راحتی و در یک دقیقه فایل نصب مورد علاقه اش را بسازد. البته بنده نصب نوع مخفی را مختصرا" توضیح
خواهم داد.
-----------------------------
ما زمانی میخواهیم یک فایل نصب بسازیم که تعدادی فایل از قبل یرای منظور های مختلف ساخته و یا داشته
باشیم و بخواهیم همه این ها را به یک فایل EXE تبدیل کنیم که با اجرای آن فایل ، فایل های ما در جا های
بخصوصی از سیستم قرار بگیرند و در صورت نیاز تنظیماتی را در سیستم اعمال کرده و یا تنظیماتی از سیسنم
را عوض کنیم. و و و...
لذا در این آموزش ، بنده مفروضات زیر را خواهم داشت (در انتهای آموزش فایل های بکار گرفته در این تاپیک را هم
جهت استفاده شما عزیزان آپلود خواهم نمود).
فر ضا" ما فایل ها و پوشه های زیر را داریم و میخواهیم آن ها را به یک فایل EXE تبدیل کنیم:
__ فایلی بنام Thank you.exe
__ فایلی بنام USB Port Locked.exe
__ فایلی بنام ColorCop.exe
__ پوشه ای بنام spider که داخلش فایلی بنام spider.exe قرار دارد.
__ پوشه ای بنام Starter که داخلش فایلی بنام Starter.exe قرار دارد.
اما چکار میخواهیم بکنیم:
__ همه این ها را تبدیل به یک فایل EXE بنام setup.exe بکنیم.
__ فایل setup.exe باید آیکن مورد نظر ما را داشته باشد.
__ با اجرای setup.exe بایستی کار های زیر انجام شود:
1. مرحله نصب مخفی باشد و دیده نشود.
2. پوشه ای بنام MyTool داخل پوشه Program Files درست شود.
3. پوشه های نامبرده در بالا یعنی پوشه های spider و Starter با محتویاتشان داخل پوشه MyTool که در شماره 2
گفتیم قرار بگیرند.
4. داخل پوشه Windows پوشه ای بنام Needs ساخته شود و فایل ColorCop.exe داخل آن قرار بگیرد.
5. فایل USB Port Locked.exe در داخل پوشه system32 قرار بگیرد.
6. در دسکتاپ و استارت منو و Quick Launch شورت کات های همه فایل های ما درست شوند.
7.در داخل پوشه MyTool درون Program Files ، یک فایل بنام uninst.exe ساخته شود که اگر آن را اجرا کنیم
فایل های نصبی ما را از سیستم Uninstall نماید.
8. در داخل پوشه MyTool یک لینکی وجود داشته باشد که اگر اجرایش کنیم سایت مورد نظر ما را باز کند.
9. موقع Uninstall کردن رد پای برنامه ما را از رجستری پاک نماید.
خوب تا اینجا فهمیدیم که چی داریم و چکار میخواهیم بکنیم.
در فرصت بعدی بقیه داستان را عرض خواهم کرد.
1 فایل پیوست
اضافه کردن آدرس مورد نظر به فایل hosts به روش هوشمندانه!
درود بر شما
تو این پست به شما آموزش میدم چطوری به طریق هوشمندانه یه آدرس دلخواه رو توی فایل hosts قرار بدین تا آدرس اون سایت بره توی بلک لیست ویندوز و برنامه مورد نظرتون نتونه به اینترنت متصل بشه و سریال به هم بخوره!!.
حالا چرا اسم اش رو گذاشتم هوشمندانه؟ چون با دستوراتی که آوردم اول فایل hosts رو می بینه اگه قبلا همچین آدرسی وجود داشته باشه دوباره اونو اضافه نمی کنه!! و اگه وجود نداشته باشه اونو به آخر فایل اضافه میکنه!
اول فایل FileSearch.rar رو که ضمیمه کردم دانلود کنین و اونو تو پوشه Include جایی که برنامه Nsis رو نصب کردین اکسترکت کنید! بعد دستورات زیر رو استفاده کنین:
کد:
!define URL "martau.com"
!include "FileSearch.nsh"
.
.
.
.
;-----Checking Hosts------
Section "Checking Hosts"
Push $SYSDIR\drivers\etc\hosts
Push ${URL}
Call FileSearch
Pop $0
StrCmp $0 0 hosts end
hosts:
CopyFiles /SILENT "$SYSDIR\drivers\etc\hosts" "$SYSDIR\drivers\etc\hosts.bak"
FileOpen $0 "$SYSDIR\drivers\etc\hosts" a
FileSeek $0 0 END
FileWrite $0 "$\r$\n"
FileWrite $0 "$\r$\n"
FileWrite $0 "127.0.0.1 ${URL}.com"
FileWrite $0 "$\r$\n"
FileWrite $0 "127.0.0.1 www.${URL}.com"
FileClose $0
end:
SectionEnd
توضیحات:
1- تو دستور بالا غیر از خط اول martau.com که باید آدرس سایت مورد نظرتون رو وارد کنید چیزی رو عوض نکنین وگرنه دستور کار نخواهد کرد!
2- آدرس وارد شده برای بلوک شدن رو بدون www قرار بدین مثل martau.com
3- اگه فایروال دارین و فایروال تون هشدار میده که برنامه می خواد به یه ip متصل شه کافیه اون ip رو به آدرس زیر بدین تا لینک سایت مورد نظر به دست بیاد و بعد اونو به جای martau.com تو دستور بالا قرار بدین (با تشکر از حسین جان)
http://www.hcidata.info/host2ip.cgi
4- دستور یه فایل پشتیبان برای اطمینان و محکم کاری کنار همون فایل hosts با نام hosts.bak میگیره!
5- دستور بالا رو قبل از Section اصلی قرار بدین!
موفق باشین!
تشخیص 32 یا 64 بیتی بودن ویندوز
درود
تو این پست به شما آموزش میدم که چطوری با Nsis نوع 32 یا 64 بیتی بودن ویندوز رو تشخیص بده و دستورات لازم رو انجام بده!
این دستوررو قبلا تو یه پست دیگه آورده بودم ولی چون می خوام تمام آموزش های Nsis اینجا یکجا باشه دوباره اینجا میارم!
به طریق زیر عمل کنین:
کد:
!include "x64.nsh"
.
.
.
.
${If} ${RunningX64}
اگر 64 بیتی بود این دستورات رو انجام بده
${Else}
اگر 32 بیتی بود این دستورات رو انجام بده
${EndIf}
موفق باشین!
آموزش چک کردن موجودیت یک فایل توسط Nsis
درود
تو این پست به شما آموزش میدم چطوری می تونین با برنامه Nsis یک فایل بخصوص رو تو یه آدرس چک کنین ببینین هست یا نه؟ و طبق اون دستورات لازم رو انجام بده!
این دستور یکی از دستورات مهمه!
کد:
!include "LogicLib.nsh"
.
.
.
.
;${If} ${FileExists} "Your File Path"
اگر فایل مورد نظر موجود بود این دستورات رو انجام بده
;${Else}
اگر فایل مورد نظر موجود نیست این دستورات رو انجام بده
;${EndIf}
دستورات مربوط به رجیستری در Nsis
درود
تو این تایپیک بخشی از مهم ترین دستورات مربوط به رجیستری قرار میگیره:
کد:
${registry::RestoreKey} "Data\RegInfo.reg" $R0
با دستور بالا فایل RegInfo.reg موجود در پوشه Data به رجیستری ویندوز اضافه میشه
کد:
${registry::DeleteKey} "HKCU\..." $R0
با دستور بالا مسیر HKCU\... از رجیستری حذف میشه! HKCU : HKEY_CURRENT_USER
به جای HKCU\... می تونین هر مسیری رو قرار بدین!
کد:
${registry::SaveKey} "HKCU\..." "Data\RegInfo.reg" "/G=1" $R0
این هم یکی از دستورات مهم هستش! مخصوصاً وفتی بخواین Setting یه برنامه رو که تو رجیستری هستش ذخیره کنین برای اجرای بعدی!
تو این دستور مسیر دلخواه HKCU\... در پوشه Data با نام RegInfo.reg ذخیره میشه!
خسته شدم فعلا برای این سری بسه!!
موفق باشین