سلام
یک توضیح:
-----------
چند سال پیش (روز هشتم از ماه آگوست 2008) ،بنده آموزشی را در مورد اینکه چگونه باید برنامه های پرتابل بسازیم
در لینک زیر قرار دادم .مسئول پرتقالی سایت که برنامه نویس دلفی هم هست ، از این روش خوشش آمده و در پیامی
به بنده گفت که برای این آموزش یک بخش مجزا در فروم مربوطه درست کرده و انتظار دارد که بنده مطالب بیشتر و
متنوع تری در مورد ساخت برنامه های پرتابل بنویسم که همینطور هم شد و این بخش فروم هم مشتری های خودش
را پیدا کرد.
[PortableApps] How to Make Portable programs - reboot.pro
در همان زمان اعضای فروم مذکور پیام های زیادی داده و از حقیر خواستند که روش پرتابل کردن برنامه ها را به روش
PortableApps.com توضیح دهم.لذا در آن زمان روش سایت مذکور را مطالعه و یاد گرفتم و در موردش مطالبی نوشتم.
منظور از داستان سرایی بالا (و شاید به عقیده بعضی ها تعریف از خود کردن) ، این بود که بگویم روشی که در سطور
زیر در موردش صحبت خواهم کرد همان روشی است که همان موقع یاد گرفتم. و ممکن است که درحال حاضر در سایت
مورد بحث روش یا روش های دیگری هم بکار رفته باشد که بنده دنبالش نرفته ام که بفهمم و در حال حاضر هم سایت
مذکور ما را تحریم کرده است و دسترسی به سورس فایل هایش مقداری سخت است.لذا در این بحث بنده به همان
روش سال 2008 بسنده خواهم کرد.
----------------------------------------
دوستان ، دراین روشی که توضیح خواهم داد ، برای هر برنامه پرتابل باید پوشه های زیر را بسازیم
__ پوشه ای با نام برنامه پرتابل درست کنید.
__ داخل پوشه بالا سه تا پوشه دیگر با نام های Appdata و portable و Source درست کنید.
در این مثال ما سه برنامه را پرتابل کردیم لذا اکنون پوشه های زیر را میسازیم:
1. برای برنامه Sumatra PDF Viewer ، پوشه ای بنام SumatraPDF ساخته و در داخل آن سه تا پوشه دیگر با نام های
Appdata و portable و Source درست کنید.
2. برای برنامه UltraISO PE 9.5.0.2800، پوشه ای بنام UltraISO ساخته و در داخل آن سه تا پوشه دیگر با نام های
Appdata و portable و Source درست کنید.
3. برای برنامه WinRAR 4.10 Beta 2 ، پوشه ای بنام WinRAR ساخته و در داخل آن سه تا پوشه دیگر با نام های
Appdata و portable و Source درست کنید.
توضیحات در مورد پوشه های ساخته شده
---------------------------------------------
__ در پوشه Appdata باید فایل های لازم برای اجرای برنامه را بگذاریم.
__ در پوشه portable باید فایل های رجستری لازم برای اجرای برنامه را بگذاریم.
__ در پوشه Source باید فایل کد برنامه NSIS و یک آیکن برای برنامه بگذاریم.که برنامه NSIS از این کد و آیکن برای
ساخت فایل اجرایی هر برنامه پرتابل استفاده خواهد کرد.
حال بیاییم و اولین برنامه را یعنی Sumatra PDF Viewer را کامل کنیم. در سطور بالا پوشه ای با نام SumatraPDF
ساختیم که حاوی سه پوشه خالی با نام های گفته شده بود.در زمان ساخت نوع پرتابل این برنامه ، در انتها گفتم
که فایل های لازم را در پوشه C:\SumatraPDF نگهدارید.حال کلیه محتویات پوشه C:\SumatraPDF را به داخل پوشه
تازه ساخته شده SumatraPDF\Appdata... منتقل کنید.
قبلا" گفتم که در داخل پوشه portable باید فایل های رجستری لازم برای اجرای برنامه را بگذاریم و در پستهای قبلی
دیدیم که برای اجرای برنامه Sumatra PDF Viewer نیاز به هیچ تغییرات رجستری نداریم، لذا پوشه SumatraPDF\portable
را میگذاریم خالی بماند.
حال باید فایل کد NSIS ونیز آیکن لازم برای برنامه را در داخل پوشه SumatraPDF\Source قرار دهیم.
هر آیکنی که دوست دارید برنامه پرتابل Sumatra PDF Viewer در منوی انتهایی به آن شکل نشان داده شود را ساخته و
یا تهیه کرده و آن را دقیقا" با نام SumatraPDF.ico در پوشه SumatraPDF\Source قرار دهید.
در این مرحله فقط کد NSIS باقی مانده که در اینجا من راه درست کردن یک کد عمومی را توضیح میدهم که خیلی ساده
است.
notepad را باز کرده کد های زیر را عینا" در آن وارد کرده و سپس آن را با نام general.nsi جایی ذخیره نمایید:
کد:
کد:
!define SNAME "XXX"
!include "Registry.nsh"
CRCCheck off
AutoCloseWindow True
SilentInstall silent
WindowIcon off
XPSTYLE on
Name "${SNAME}"
Icon "${SNAME}.ico"
Caption "${SNAME} Launcher"
OutFile "..\${SNAME}.exe"
LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
Section "Main"
;Needed settings to apply to registry
${registry::RestoreKey} "$EXEDIR\portable\AAA.reg" $R0
Sleep 300
;File to run after applying registry settings
ExecWait "$EXEDIR\Appdata\Application.exe"
;Cleaning up when we close the application
${registry::RestoreKey} "$EXEDIR\portable\RegClean.reg" $R0
SectionEnd
این یک فایل بسیار ساده برای ساختن بار کننده برنامه های پرتابل معمولی توسط برنامه NSIS است.
ما دقیقا" از همین فایل در هر سه برنامه پرتابلی که ساخته ایم استفاده خواهیم کرد، با این تفاوت که برای هر برنامه
نام و بعضی مشخصات داخل این فایل را عوض خواهیم کرد.
فعلا" نسخه ای از این فایل را به محل های زیر کپی کنید:
__ داخل پوشه SumatraPDF\Source
__ داخل پوشه UltraISO\Source
__ داخل پوشه WinRAR\Source
حال میتوانیم آخرین کار را برای برنامه پرتابل SumatraPDF بشرح زیر انجام دهیم:
1__ وارد پوشه SumatraPDF\Source شده و نام فایل general.nsi را به SumatraPDF.nsi تغییر دهید.
2__ حال فایل SumatraPDF.nsi را با notepad باز کرده و تغییرات زیر را انجام دهید:
_____ عبارت !define SNAME "XXX" را به !define SNAME "SumatraPDF" تغییر دهید.(مشخص کردن نام فایل پرتابل).
_____ در عبارت EXEDIR\Appdata\Application.exe نام Application.exe را با نام فایل اجرایی برنامه عوض نمایید که
در این مثال فایل اجرایی برنامه (داخل پوشه SumatraPDF\Appdata ) عبارت است از SumatraPDF.exe
_____ قیلا" گفتیم که این برنامه برای اجرا نیاز به هیچ تغییری در رجستری ندارد لذا ما نیازی یه اجرای قسمت رجستری
کد نداشته و لذا کد های مربوطه را حذف میکنیم.
کار تمام است و کد ما برای این برنامه تکمیل شده و بصودت زیر درآمده است:
کد:
!define SNAME "SumatraPDF"
!include "Registry.nsh"
CRCCheck off
AutoCloseWindow True
SilentInstall silent
WindowIcon off
XPSTYLE on
Name "${SNAME}"
Icon "${SNAME}.ico"
Caption "${SNAME} Launcher"
OutFile "..\${SNAME}.exe"
LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
Section "Main"
;File to run after applying registry settings
ExecWait "$EXEDIR\Appdata\SumatraPDF.exe"
SectionEnd
فعلا" کارمان با پوشه SumatraPDF تمام شده و میرویم سراغ پوشه WinRAR . در اینجا هم دقیقا" مثل برنامه بالا
بشرح زیر عمل میکنیم:
1. قبلا" در بحث WinRAR دیدیم که برنامه در محل (C:\Program Files\WinRAR) نصب شده .الان محتویات پوشه
WinRAR موجود در C:\Program Files را به داخل پوشه WinRAR\Appdata منقل میکنیم.
2. قبلا" دیدیم که این برنامه هم نیاز به فایل های رجستری ندارد،لذا برای این برنامه هم پوشه WinRAR\portable
را خالی میگذاریم.
3. یک آیکن برای برنامه انتخاب و آن را با نام WinRAR.ico در پوشه WinRAR\Source قرار میدهیم.
4.فایل general.nsi را در داخل پوشه WinRAR\Source به WinRAR.nsi تغییر نام میدهیم.
5. مثل مثال بالا تغییرات لازم را در فایل WinRAR.nsi انجام مبدهیم که در انتها بصورت زیر در می آید:
کد:
!define SNAME "WinRAR"
!include "Registry.nsh"
CRCCheck off
AutoCloseWindow True
SilentInstall silent
WindowIcon off
XPSTYLE on
Name "${SNAME}"
Icon "${SNAME}.ico"
Caption "${SNAME} Launcher"
OutFile "..\${SNAME}.exe"
LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
Section "Main"
;File to run after applying registry settings
ExecWait "$EXEDIR\Appdata\WinRAR.exe"
SectionEnd
خوب این قسمت از کارمان با WinRAR هم در این مرحله تمام شده و باید به سراغ UltraISO برویم.
----------------------
سعی میکنم مطلب را حتی الامکان در جلسه بعدی تمام کنم
تا فرصتی دیگر و ادامه بحث
علاقه مندی ها (بوک مارک ها)