NSIS (سیستم نصب اسکریپتی Nullsoft) یک سیستم حرفهای متنباز برای ایجاد نصبکنندههای ویندوز است. این سیستم طوری طراحی شده که تا حد امکان کوچک و انعطافپذیر باشد و به همین دلیل برای توزیع اینترنتی بسیار مناسب است.
از آنجا که نصبکننده اولین تجربه کاربر با محصول شماست، داشتن یک نصبکننده پایدار و قابل اعتماد یک جزء مهم در موفقیت نرمافزار است. با NSIS میتوانید چنین نصبکنندههایی بسازید که قادر به انجام تمام کارهای لازم برای نصب نرمافزار شما هستند.

NSIS مبتنی بر اسکریپت است و به شما امکان میدهد منطق لازم برای مدیریت حتی پیچیدهترین وظایف نصب را ایجاد کنید. پلاگینها و اسکریپتهای زیادی در حال حاضر در دسترس هستند: میتوانید نصبکنندههای تحت وب بسازید، با ویندوز و سایر اجزای نرمافزاری ارتباط برقرار کنید، اجزای مشترک را نصب یا بهروزرسانی کنید و موارد بیشتر.
ویژگیها:
- تولید نصبکنندههای اجرایی مستقل
- پشتیبانی از فشردهسازی دادهها با ZLib، BZip2 و LZMA (فایلها میتوانند به صورت جداگانه یا با هم فشرده شوند)
- پشتیبانی از حذف نصب (نصبکننده میتواند یک حذفکننده تولید کند)
- رابط کاربری قابل سفارشیسازی (دیالوگها، فونتها، پسزمینهها، آیکونها، متن، علامتهای چک، تصاویر و غیره)
- رابط جادویی کلاسیک و مدرن
- کاملاً چندزبانه، پشتیبانی از چندین زبان (از جمله زبانهای RTL) در یک نصبکننده. بیش از 40 ترجمه در حال حاضر موجود است، اما میتوانید ترجمه خود را نیز ایجاد کنید
- سیستم صفحهبندی: میتوانید صفحات جادویی استاندارد یا صفحات سفارشی اضافه کنید
- انتخاب اجزای نصب توسط کاربر، درخت برای انتخاب اجزا
- پیکربندیهای نصب متعدد (معمولاً حداقل، معمولی، کامل) و پیکربندی سفارشی
- خودآزمایی نصبکننده با استفاده از چکسام CRC32
- سربار کم نسبت به اندازه داده فشرده شده (34 کیلوبایت با تنظیمات پیشفرض)
- توانایی نمایش توافقنامه مجوز در قالب متن یا RTF
- توانایی تشخیص پوشه مقصد از رجیستری
- سیستم پلاگین آسان برای استفاده (پلاگینهای زیادی برای ایجاد دیالوگهای سفارشی، اتصالات اینترنتی، دانلود HTTP، وصلهکاری فایل، فراخوانیهای API Win32 و غیره شامل میشود)
- نصبکنندهها میتوانند تا 2 گیگابایت بزرگ باشند
- حالت خاموش اختیاری برای نصبهای خودکار
- یک پیشپردازنده با پشتیبانی از نمادهای تعریف شده، ماکروها، کامپایل شرطی، پیشتعریفهای استاندارد
- تجربه کدنویسی دلپذیر با عناصری از PHP و اسمبلی (شامل متغیرهای کاربر، پشته، کنترل جریان واقعی و غیره)
نصب کنندهها دارای ماشینهای مجازی خود هستند که به شما امکان میدهند کدی بنویسید که میتواند از موارد زیر پشتیبانی کند:
- استخراج فایل (با پارامترهای رونویسی قابل تنظیم)
- کپی، تغییر نام، حذف، جستجوی فایل/پوشه
- فراخوانی پلاگین DLL
- ثبت/لغو ثبت DLL/کنترل ActiveX
- اجرای فایل اجرایی (گزینههای اجرای پوسته و انتظار)
- ایجاد میانبر
- خواندن/تنظیم/شمارش/حذف کلید رجیستری
- خواندن/نوشتن فایل INI
- خواندن/نوشتن فایل متنی عمومی
- دستکاری قدرتمند رشته و عدد صحیح
- یافتن پنجره بر اساس نام کلاس یا عنوان
- دستکاری رابط کاربری (تنظیم فونت/متن)
- ارسال پیام پنجره
- تعامل کاربر با جعبههای پیام یا صفحات سفارشی
- شاخهبندی، مقایسهها و غیره
- بررسی خطا
- پشتیبانی از راهاندازی مجدد، از جمله حذف یا تغییر نام در راهاندازی مجدد
- دستورات رفتار نصبکننده (مانند نمایش/مخفی/انتظار و غیره)
- توابع کاربر در اسکریپت
- توابع callback برای اقدامات کاربر
تغییرات NSIS 3.11:
- تلاش مجدد برای ایجاد $PLUGINSDIR محدود شده (با تشکر از Sandro Poppi برای اعلام مسئولانه، باگ #1315) این جلوی یک افزایش امتیاز احتمالی را میگیرد. یک مهاجم میتواند پوشه موقت پلاگینها ($PLUGINSDIR) را در زمان مناسب ایجاد کرده و آن را با فایلهای مخرب که نصبکننده ممکن است استفاده کند، پر کند. نصبکنندههایی که به عنوان SYSTEM اجرا میشوند از C:\windows\temp استفاده میکنند که برای همه کاربران سیستم قابل دسترسی است. هر کاربری میتواند از این باگ برای دستیابی به امتیازات SYSTEM با برنده شدن در شرایط مسابقه با نصبکنندهای که به عنوان SYSTEM شروع میشود، استفاده کند.
تغییرات جزئی:
- تلاش مجدد برای باز کردن خود در صورت وجود خطای اشتراکگذاری (وصله جزئی #316)
- پشتیبانی از تنظیم کدگذاری فایل منبع با نظر جادویی (وصله #292)
- رفع مشکل LicenseBkColor برای حذفکننده (باگ #1314)
- مدیریت پارامتر خط فرمان CHARSET در MakeNSISW (وصله #315)
- تکرارپذیر کردن System/Resource.dll (وصله #312)
- Zip2Exe پارامتر خط فرمان zip. را میپذیرد
- بهروزرسانی فنلاندی (وصله #313)