نمایش نتایج: از شماره 1 تا 10 , از مجموع 25

موضوع: ساخت برنامه های پرتابل (Portable ) روش (3)

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    مدیر بخش اموزشی
    تاریخ عضویت
    Apr 2011
    نوشته ها
    294
    تشکر تشکر کرده 
    2,174
    تشکر تشکر شده 
    2,141
    تشکر شده در
    294 پست
    حالت من : Ghafelgir
    قدرت امتیاز دهی
    289
    Array

    پیش فرض

    درود بر شما

    درود
    برنامه UltraISO اطلاعات مربوط به درایو مجازی ساخته شده را در قسمت [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\servic es\ISODrive] نگهداری میکنه!

    فرضا اطلاعات مربوط به نام درایو مجازی ساخته شده :


    که در اینجا X نام درایو مجازی است! ولی گذاشتن اطلاعات به طریق بالا کامل نیست؟ چون با تغییر نام درایو چیزی تغییر نمیکنه! شاید باید درایور مربوطه را هم قبلش نصب بشه کرد در مسیر Appdata\drivers قرار داره : ISODrv64.sys برای ویندوز 64 بیتی و ISODrv.sys برای ویندوز 32 بیتی!
    کنار این دو فایل فایلی به نام IsoCmd.exe قرار داره که به نظر می رسه کارها توسط اون انجام میشه!!؟ باید بیشتر بررسی کرد!!

    بنابراین برای ساخت UltraISO پرتابل طوری که درایو مجازی اش کار کنه لازمه که دستورات بالا را نیز وارد اسکریپت نویسی Nsis کرد! که یکم پیچیده تر میشه! باید نوع ویندوز 32 و 64 بیتی تشخیص داده بشه و از دستورات شرطی استفاده کرد و ...
    در این موارد بهتره گاهی اوقات از فایل Batch کمک گرفت و به اسکریپتمان گفت که این فایل Batch را بصورت مخفی اجرا کند.

    برای تشخیص 32/64 در بت باید به این شکل عمل کرد:
    کد:
    @echo off
    echo.
    IF defined ProgramFiles(x86) (
    
    Echo It's 64 Bit.
    
    
    ) else (
    
    Echo It's 32 Bit.
    
    
    )
    
    pause>nul
    و دستورات IsoCMD را هم در بت می توان به این شکل صادر کرد :

    کد:
    @IsoCMD.exe  parameters


    یه سوال دارم: توی Nsis چجوری میشه مسیر فایل اجرایی رو استخراج کرد؟ مثلا بشه فایل اجرایی برنامه پرتابل شده UltraISOportale.exe توی مسیر D:\My Portable App\Ultra ISO\UltraISOportale.exe اجرا میشه چطوری میشه مسیر D:\My Portable App\Ultra ISO رو تو Nsis پیدا کرد و توی حافظه کلیپ بورد قرار داد!!؟

    به این شکل می توان دایرکتوری فایل اجرا شده را بدست اورد :
    کد:
    System::Call "kernel32::GetCurrentDirectory(i ${NSIS_MAX_STRLEN}, t .r0)"
    به این شکل ادرس دایرکتوری در 0$ قرار می گیرد.

    روز خوش



    اگه برای بقیه لاتی برای ما شکلات هم نیستی
    1725128855

    زندگی شاید آن لبخندی ست، که دریغش کردیم
    زندگی زمزمه پاک حیات ست، میان دو سکوت
    زندگی، خاطره آمدن و رفتن ماست
    لحظه آمدن و رفتن ما، تنهایی ست
    من دلم می خواهد
    قدر این خاطره را دریابیم

    سهراب سپهری


     
    من چه سبزم امروز
    و چه اندازه تنم هوشیار است
    نكند اندوهی ‚ سر رسد از پس كوه

    چه كسی پشت درختان است ؟
    هیچ می چرد گاوی در كرد
    ظهر تابستان است
    سایه ها می دانند كه چه تابستانی است
    سایه هایی بی لك
    گوشه ای روشن و پاك
    كودكان احساس! جای بازی اینجاست

    زندگی خالی نیست
    مهربانی هست سیب هست ایمان هست
    آری تا شقایق هست زندگی باید كرد

    در دل من چیزی است مثل یك بیشه نور مثل خواب دم صبح
    و چنان بی تابم كه دلم می خواهد
    بدوم تا ته دشت بروم تا سر كوه
    دورها آوایی است كه مرا می خواند



  2. 6 کاربر مقابل از n1ma عزیز به خاطر این پست مفید تشکر کرده اند.


  3. #2
    مدیر بخش اموزشی
    !Busy
    تاریخ عضویت
    Dec 2011
    محل سکونت
    . : : I R A N : : .
    نوشته ها
    1,330
    تشکر تشکر کرده 
    4,575
    تشکر تشکر شده 
    6,033
    تشکر شده در
    1,280 پست
    حالت من : Khoshhal
    قدرت امتیاز دهی
    1144
    Array
    نقل قول نوشته اصلی توسط n1ma نمایش پست ها

    برای تشخیص 32/64 در بت باید به این شکل عمل کرد:

    درود
    نیما جان برای تشخیص 32 یا 64 بیتی بودن با خود nsis میشه ! با دستورات زیر:
    !include "x64.nsh"
    .
    .
    .
    {If} ${RunningX64}$
    اگه 64 بیتی بود دستورات اینجا بشه
    {Else}$
    اگه 32 بیتی بود دستورات اینجا اجرا بشه
    {EndIf}$
    خود دستورات IsoCmd.exe رو هم میشه مستقیم با nsis با دستور ExecWait یا Exec وارد کرد موردی نداره!
    فعلا مشکل اینجاست باید پروسه رو پیدا کرد! که طی چه پروسه ای یا دستوراتی درایو مجازی ساخته میشه چون همون طور تو شکل دیدین تو حالت معمولی غیر فعال هستش و عملا مهم ترین قابلیت این برنامه تو پرتابل کردن از دست رفته!
    اون مورد دایرکتوری هم ممنون جالب بود!
    کسی رو برای دوست داشتن انتخاب کن که قلب بزرگی داشته باشه!
    تا مجبور نشی به خاطر اينکه تو قلبش وارد بشی خودت را کوچک کنی!


    موفق كسی است كه با آجرهايی كه به طرفش پرتاب می شود، يک بنای محكم بسازد!
    اشکی که برای شکست می ریزیم، عرقی است که برای تلاش نریختیم!



  4. 4 کاربر مقابل از borhan_3010 عزیز به خاطر این پست مفید تشکر کرده اند.


علاقه مندی ها (بوک مارک ها)

علاقه مندی ها (بوک مارک ها)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست در پست خود ضمیمه کنید
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

http://www.worldup.ir/