درود بر شما
در این موارد بهتره گاهی اوقات از فایل Batch کمک گرفت و به اسکریپتمان گفت که این فایل Batch را بصورت مخفی اجرا کند.درود
برنامه UltraISO اطلاعات مربوط به درایو مجازی ساخته شده را در قسمت [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\servic es\ISODrive] نگهداری میکنه!
فرضا اطلاعات مربوط به نام درایو مجازی ساخته شده :
که در اینجا X نام درایو مجازی است! ولی گذاشتن اطلاعات به طریق بالا کامل نیست؟ چون با تغییر نام درایو چیزی تغییر نمیکنه! شاید باید درایور مربوطه را هم قبلش نصب بشه کرد در مسیر Appdata\drivers قرار داره : ISODrv64.sys برای ویندوز 64 بیتی و ISODrv.sys برای ویندوز 32 بیتی!
کنار این دو فایل فایلی به نام IsoCmd.exe قرار داره که به نظر می رسه کارها توسط اون انجام میشه!!؟ باید بیشتر بررسی کرد!!
بنابراین برای ساخت UltraISO پرتابل طوری که درایو مجازی اش کار کنه لازمه که دستورات بالا را نیز وارد اسکریپت نویسی Nsis کرد! که یکم پیچیده تر میشه! باید نوع ویندوز 32 و 64 بیتی تشخیص داده بشه و از دستورات شرطی استفاده کرد و ...
برای تشخیص 32/64 در بت باید به این شکل عمل کرد:
و دستورات IsoCMD را هم در بت می توان به این شکل صادر کرد :کد:@echo off echo. IF defined ProgramFiles(x86) ( Echo It's 64 Bit. ) else ( Echo It's 32 Bit. ) pause>nul
کد:@IsoCMD.exe parameters
یه سوال دارم: توی Nsis چجوری میشه مسیر فایل اجرایی رو استخراج کرد؟ مثلا بشه فایل اجرایی برنامه پرتابل شده UltraISOportale.exe توی مسیر D:\My Portable App\Ultra ISO\UltraISOportale.exe اجرا میشه چطوری میشه مسیر D:\My Portable App\Ultra ISO رو تو Nsis پیدا کرد و توی حافظه کلیپ بورد قرار داد!!؟
به این شکل می توان دایرکتوری فایل اجرا شده را بدست اورد :
به این شکل ادرس دایرکتوری در 0$ قرار می گیرد.کد:System::Call "kernel32::GetCurrentDirectory(i ${NSIS_MAX_STRLEN}, t .r0)"
روز خوش
علاقه مندی ها (بوک مارک ها)