PDA

View Full Version : برنامه ای که خودش exe درست کند



persianboy
پنج شنبه 18 مرداد 1386, 19:35 عصر
سلام
چطوری میتونم برنامه ای بنویسم که مثل کامپایلر ها خودش exe درست کند .
مثلا چندتا متغیر بگیره و exe ای را بسازه که با استفاده از اونا کاری رو برای کاربر انجام بده.
شفاف تر میگم ، مثلا یه آدرس از رم رو از کاربر بگیره ، تغییری هم که باید بکنه ، بگیره ،
بعد یه exe بسازه که با فشاره یه دکمه تغییراتو اعمال کنه .
فکر کنم از dcc32 هم نشه تو کامپیوتری که delphi روش نصب نباشه استفاده کرد .
اگر یه sample کسی برام بفرسته ، ممنون میشم

mzjahromi
پنج شنبه 18 مرداد 1386, 20:17 عصر
سلام
چطوری میتونم برنامه ای بنویسم که مثل کامپایلر ها خودش exe درست کند .
مثلا چندتا متغیر بگیره و exe ای را بسازه که با استفاده از اونا کاری رو برای کاربر انجام بده.
شفاف تر میگم ، مثلا یه آدرس از رم رو از کاربر بگیره ، تغییری هم که باید بکنه ، بگیره ،
بعد یه exe بسازه که با فشاره یه دکمه تغییراتو اعمال کنه .
فکر کنم از dcc32 هم نشه تو کامپیوتری که delphi روش نصب نباشه استفاده کرد .
اگر یه sample کسی برام بفرسته ، ممنون میشم

این میشه همون کامپایلر
Dcc32 هم همون کامپایلر دلفی هست

persianboy
جمعه 19 مرداد 1386, 01:24 صبح
منظورم رو خوب نتونستم برسونم ، برنامه های patcher ساز (patch generator ) رو باید دیده
باشید که مثلا با vb نوشته شده باشند ، حجم اونها خیلی کمتر از حجم کامپایلر vb هستش.
یا مثلا برنامه inno setup از (http://www.innosetup.com) که یک install سازه ، سورس باز هم
هستش ، تو اون هیچ خبری از dcc32 نیست .
در ضمن من اشاره کردم که حتی اگر dcc32 رو هم به برناممون attach کنیم ، تو سیستمی که
توش دلفی نصب نباشه ، ارور میده .
من منظورم از استفاده از dcc32 ، تو سیستم خودم نبود ، تو سیستمی که کاربرش مثلا میخواد
با استفاده از برنامه من یه patch بسازه .
اگه میشه سورس inno setup رو دانلود کنید و یه نگاهی بش بندازید ، من که چیز زیادی ازش
سر در نیووردم.

vcldeveloper
جمعه 19 مرداد 1386, 01:55 صبح
inno setup از installer ویندوز استفاده میکنه.

persianboy
جمعه 19 مرداد 1386, 03:33 صبح
تا حالت کسی امتحان کرده که dcc32 بدون نصب دلفی هم درست کار میکنه یا نه ؟

اَرژنگ
جمعه 19 مرداد 1386, 03:55 صبح
سلام
چطوری میتونم برنامه ای بنویسم که مثل کامپایلر ها خودش exe درست کند .
مثلا چندتا متغیر بگیره و exe ای را بسازه که با استفاده از اونا کاری رو برای کاربر انجام بده.
شفاف تر میگم ، مثلا یه آدرس از رم رو از کاربر بگیره ، تغییری هم که باید بکنه ، بگیره ،
بعد یه exe بسازه که با فشاره یه دکمه تغییراتو اعمال کنه .
فکر کنم از dcc32 هم نشه تو کامپیوتری که delphi روش نصب نباشه استفاده کرد .
اگر یه sample کسی برام بفرسته ، ممنون میشم
قسمتی را که رنگش را آٓبی کردم اصلا احتیاجی به درست کردن exe نداره، این کاری را که گفتید میشه ر دلفی نوشت و اجراش کرد.

اَرژنگ
جمعه 19 مرداد 1386, 03:59 صبح
منظورم رو خوب نتونستم برسونم ، برنامه های patcher ساز (patch generator ) رو باید دیده
باشید که مثلا با vb نوشته شده باشند ، حجم اونها خیلی کمتر از حجم کامپایلر vb هستش.

لبته که کمتره! چونکه فقط فرقهایه بین دو برنامه را نگه میداره و بعدش اعمال میکنه.



یا مثلا برنامه inno setup از (http://www.innosetup.com) که یک install سازه ، سورس باز هم
هستش ، تو اون هیچ خبری از dcc32 نیست .
در ضمن من اشاره کردم که حتی اگر dcc32 رو هم به برناممون attach کنیم ، تو سیستمی که
توش دلفی نصب نباشه ، ارور میده .
من منظورم از استفاده از dcc32 ، تو سیستم خودم نبود ، تو سیستمی که کاربرش مثلا میخواد
با استفاده از برنامه من یه patch بسازه .
اگه میشه سورس inno setup رو دانلود کنید و یه نگاهی بش بندازید ، من که چیز زیادی ازش
سر در نیووردم.
مشکل شما چی هست، احتیاجی به دانلود ککردن سوورس inno setup نیست. شما پشت جناب کشاور را خواندید؟

Inprise
جمعه 19 مرداد 1386, 05:08 صبح
.
.

Arman_1367
جمعه 19 مرداد 1386, 08:20 صبح
ببین یکی از راحتترین کارهایی که می توانی انجام بدی اینه که یک برنامه جدا درست کنی و مثلاً هنگام اجرا شدن چک کنی ریسورس خاصی در آن هست یا نه و اطلاعات را از ان ریسورس به دست بیاورید و برنامه مقصد کار کند و برنامه اصلی شما هم داده ها را به صورت ریسورس در برنامه اجرا شونده قرار بده دیگه نیازی به استفاده از کمپایلر هم نیست.
در ضمن برنامه های پچر مخصوص یک نوع Exe نوشته می شود که مثلاً آدرس خاصی را تغییر داده تا برنامه کرک شود نه اینکه برنامه را کمپایل کنه.

مهدی کرامتی
جمعه 19 مرداد 1386, 08:56 صبح
برنامه هایی مثل InnoSetup و یا Patch Generator ها کارهایی که باید انجام شوند را در قالب یک فایل دستورالعمل ذخیره کرده و به یک فایل Stub میچسبانند. شما هم میتوانید همین کار را انجام دهید.

SalarSoft
جمعه 19 مرداد 1386, 09:02 صبح
نیازی به کامپایل نیست. نمونه:
http://salarsoft.somee.com/downlist/ssoft_downloads.htm#wrapper

persianboy
جمعه 19 مرداد 1386, 15:55 عصر
آقای DelphiAssistant شما سمپلی دارید که از stub استفاده کند ؟
در ضمن یکی از دوستان(Arman_1367) اشاره کردند که از ریسورس ها استفاده شود .
اگر ممکن توضیح بدید که چطور داده ها رو تو ریسورس بذارم ، چون من بلد نیستم .
جناب SalarSoft ، من نمیخوام یه exe خاص رو extract کنم ، من میخوام برنامم exe های
مختلف برای شرایط مختلف بسازه ، البته شرایطش با هم فرق اساسی نداشته باشن ،
دقیقا یه چیزی مثل پچ سازها با یه اختلاف کوچولو .
بازم میگم هر کی بلد بیزحمت توضیح بده چطور تو این موارد میشه از ریسورس ها استفاده
کرد ، چون من زیاد دیدم که از این روش استفاده میکنن ولی به نظرم اومد استفاده از dcc32
راحت تره(استفاده از اینجور ریسورسها هم بلد نبودم) ، ولی اینجوری که بوش میاد اصلا نسبت
به ریسورسها به صرفه نیست . اگه میشه سمپل بفرستید .

persianboy
شنبه 20 مرداد 1386, 02:48 صبح
دوستان ، باید بگم از dcc32 توی سیستمی که دلفی توش نصب نیست ، نمیشه استفاده کرد .
من امتحانش کردم . پس باید کار دیگه ای کرد ، لطفا در مورد ریسورسها و stub ها بیشتر توضیح بدید .

مهدی کرامتی
شنبه 20 مرداد 1386, 03:53 صبح
سورس InnoSetup از اینترنت قابل ابتیاع است. در آن از روش Stub برای ساخت Installer استفاده شده است.

persianboy
شنبه 20 مرداد 1386, 03:54 صبح
جناب SalarSoft ببخشید . من برنامه شما رو درست ندیده بودم ،تازه بررسیش کردم ، میشه
راجع بهش یکمی توضیح بدید . یا لا اقل سورسشو بدید !!!!!!
ضمنا در مورد پاک کردن بعد از ریست یه توضیح کوچیک بدید ( البته اگه در حدیه که لازم نیست
یه تاپیک راجع بش باز بشه، چون من خیلی دنبالشم)
در مورد inno setup هم باید بگم که به دلیل زیاد بودن یونیت ها و دی پی ار ها و همچنین بخاطر
اینکه نتونستم کامپایلش کنم ، چیزی ازش سر در نمیارم .

Hamid_PaK
شنبه 20 مرداد 1386, 21:45 عصر
به نظرم کل صحبتهای دوستان کامل بود فقط شما نیاز به یک نمونه دارید که موضوع را کامل درک کنید ...

که این هم لینک دانلود (http://barnamenevis.org/forum/attachment.php?attachmentid=7812&d=1176235140) طرز کار STUB هست ، نحوه فراخوانی اطلاعات از stub رو مطالعه کنید ...

یا حق ...

m.zakery
شنبه 20 مرداد 1386, 23:37 عصر
این کار در حقیقت کار کامپایلرهاست چون من خودم چند وقت دنبال ساخت نرم افزاری مالتی مدیا ساز مانند multymedia builderبودم تحقیقات ارزنده ای در این زمینه هستم که میتونم در اختیارت بگذارم m.zakery

persianboy
یک شنبه 21 مرداد 1386, 00:17 صبح
خواهش میکنم . البته لینک جناب hamid_pak کامل بود ولی ممنون میشم اگه این کاررو انجام بدید .

Hamid_PaK
یک شنبه 21 مرداد 1386, 16:17 عصر
این کار در حقیقت کار کامپایلرهاست چون من خودم چند وقت دنبال ساخت نرم افزاری مالتی مدیا ساز مانند multymedia builderبودم تحقیقات ارزنده ای در این زمینه هستم که میتونم در اختیارت بگذارم m.zakery
نمی خواهم تجربه های شما رو رد کنم ولی در مورد مالتی مدیا هم در اکثر موارد از STUB استفاده می شود !!!
بهترین نمونه Multimedia Builder هست ...

یا حق ...

Arman_1367
یک شنبه 21 مرداد 1386, 17:16 عصر
منم STUB خیلی روش خوبی هست مخصوصاً اینکه کمپایلر نمی خواهد.چون کمپایلر نویسی آدم را پیر می کند.

SalarSoft
دوشنبه 22 مرداد 1386, 17:08 عصر
الگوریتم کار wrapper همانند STUB است با این تفاوت که شیوه پیاده سازی متفاوتی انجام شده است. همون مثال برای شما کافی میتونه باشه.


ضمنا در مورد پاک کردن بعد از ریست یه توضیح کوچیک بدید
تابع MoveFileEX با پارمتر flag برابر MoveFile_Replace_existing or MoveFile_Delay_until_Reboot
البته این دستور در ویندوز خانواده NT کار خواهد کرد