PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال در مورد آپدیت کردن برنامه



meyti
28 / October / 2013, 09:24 PM
با سلام
خواستم تجربه دوستان را در مورد ارتقا دادن برنامه های نوشته شده بدونم .
شما از چه روشی استفاده میکنید ؟
برای نمونه یه برنامه مثل firefox چطور کار میکنه ؟ یه پکیج دانلود میکنه و به حجم فایل اصلی اضافه میشه !
امکان دستکاری فایل کامپایل شده با یه برنامه دیگه امکان پذیر هست ؟
میشه یه برنامه نوشت و به برنامه ای که قبلا نوشتیم اضافه کرد ؟
اگه دوستان تجربه ای دارند لطف کنند و توضیح بدهند . ممنون

yanin
29 / October / 2013, 03:14 PM
ساده ترین کارش از نظر من اینه که وقتی برنامه رو توسعه دادید و خواستید به عنوان اپدیت بدید یه بار دیگه کامپایل کنیدش و Exe جدید رو که دارید با یه Install ساده رو Exe قبلی بریزید یعنی Install شما جوری باشه که Exe قبلی رو Del کنه و جدیدرو جاش بزاره البته اگه دیتابیس جدید دارید یا فایل های جدید اونا هم همزمان اضافه شن البته این Update رو میتونید تو اینترنت هم Upload کنید که هرکی خواست دانلود کنه و نصب کنه تا برنامش Update شه

admin
29 / October / 2013, 06:38 PM
منظور ایشون اینه که :*اگه قراره یه پچ اضافه بشه چیکار کنند ؟؟؟

meyti
29 / October / 2013, 09:33 PM
ممنون از توجه شما - به قول دوست عزیزمون ساده ترین راه همینه و کم دردسرتره . میخواستم ببینم شاید کسی روش بهتر و ساده ای بلد باشه .
ولی اصل سوالم اینه* چطوری یه فایل اجرایی فایرفاکس 12 مگابایته . بعد یه آپدیت میزنی 2 مگ دانلود میشه و فایل اصلی میشه 14 مگ ! !
البته فک کنم دردسرش زیاد باشه اینجور آپدیتی .
حالا اگه دوستان تجربه ای داشتند ممنون میشم .
بازم ممنون

yanin
30 / October / 2013, 04:06 PM
درسته مشکل این روش دقیقا اینه که هر دفعه باید تمام حجم Update دانلود شه
ولی فک کنم اون کاری که FireFox میکنه با استفاده از Script هاست
یا شایدم Recompile میکنه میکنه و کد جدیدی اضافه میکنه شایدم Dll هارو فقط اپدیت میکنه

admin
30 / October / 2013, 08:36 PM
نقل قول از yanin
درسته مشکل این روش دقیقا اینه که هر دفعه باید تمام حجم Update دانلود شه
ولی فک کنم اون کاری که FireFox میکنه با استفاده از Script هاست
یا شایدم Recompile میکنه میکنه و کد جدیدی اضافه میکنه شایدم Dll هارو فقط اپدیت میکنه



دقیقا* آپدیت dll* هاست و چیزی غیر این نمیتونه باشه ، به طور معمول یک طراح نرم افزار حرفه ای سعی میکنه که برنامه اش رو به صورتی بنویسه که با ساده ترین جزئیات بتونه اون رو ارتقاء بده.
شما میتونید با استفاده از dll ها و همچنین میان افزارها به راحتی با عوض کردن یکی از فایلها خیلی از امکانات نرم افزار رو ارتقاء بدید.

yanin
01 / November / 2013, 11:04 PM
*رو به برنامه اینجا یه سوال مطرح میشه ایا اگه بخواهیم ظاهر برنامه رو تغییر بدیم یا اصلا امکانات جدید را به برنامه اضافه کنیم هم میشه از این روش استفاده کرد ؟*

yanin
01 / November / 2013, 11:07 PM
نقل قول از admin
نقل قول از yanin
درسته مشکل این روش دقیقا اینه که هر دفعه باید تمام حجم Update دانلود شه
ولی فک کنم اون کاری که FireFox میکنه با استفاده از Script هاست
یا شایدم Recompile میکنه میکنه و کد جدیدی اضافه میکنه شایدم Dll هارو فقط اپدیت میکنه



دقیقا* آپدیت dll* هاست و چیزی غیر این نمیتونه باشه






اگه فقط Dll هاست دلیل اضافه شدن حجم Exe چیه اونجوری که شما میگید فقط باید حجم DLl *ها تغییر کنه*

admin
02 / November / 2013, 01:39 AM
سلام.در برنامه های استاندارد به ندرت حجم فایل EXE تغییر می کند ، ضمنا شما می توانید تمام اجزای نرم افزارتان رو به صورت فایلهای dll در آوردید* و به صورت ماژولار برنامه نویسی کنید.

حالا فرض می کنیم که شما اصلا قرار است که یک فایل dll جدید برای قابلیت های جدید به برنامه اتون اضافه کنید که در فایل EXE قدیمی شما از اون استفاده نشده ، کافیه در فایلی که جهت آپدیت نرم افزار می گذارید تعریف کنید که ابتدا نرم افزار را بسته ، در ثانی فایل اجرایی جدید رو جایگزین فایل قبلی بکند و فایل dll جدید رو هم به دایرکتوری ای که نرم افزار در آن نصب شده اضافه نماید.
با این روش شما با کمترین حجم ممکن خواهید توانست نرم افزارتون رو بروز کنید .
جهت تغییر در فرمها هم می توانید فرمتان رو به یک فایل bpl تبدیل کنید... ( این مقاله (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>)رو بخونید )
در واقع سعی کنید که طوری کار کنید که فایل اجرایی شما کمترین حجم ممکن را داشته باشد.

yanin
02 / November / 2013, 11:27 AM
نقل قول از admin
سلام.در برنامه های استاندارد به ندرت حجم فایل EXE تغییر می کند ، ضمنا شما می توانید تمام اجزای نرم افزارتان رو به صورت فایلهای dll در آوردید* و به صورت ماژولار برنامه نویسی کنید.

حالا فرض می کنیم که شما اصلا قرار است که یک فایل dll جدید برای قابلیت های جدید به برنامه اتون اضافه کنید که در فایل EXE قدیمی شما از اون استفاده نشده ، کافیه در فایلی که جهت آپدیت نرم افزار می گذارید تعریف کنید که ابتدا نرم افزار را بسته ، در ثانی فایل اجرایی جدید رو جایگزین فایل قبلی بکند و فایل dll جدید رو هم به دایرکتوری ای که نرم افزار در آن نصب شده اضافه نماید.




دقیقا منظور من هم همِین بود من هم همین رو گفتم که در این صورت باید Exe جدید جایگزین بشه*

ولی سوال اینه ایا راهی هست که بدون جایگزین کردن Exe جدید Exe قدیم رو سورسش رو تغییر داد و دوباره Exe جدید رو ساخت ( در کامپیوتر کاربر) بدونه اینکه اون متوجه بشه*

admin
05 / November / 2013, 07:34 PM
شما دارید میگید که* سورس EXE قدیم رو تغییر داد و دوباره EXE جدید رو ساخت ، این میشه ساخت فایل اجرایی جدید*...
*پس بهتره که اون فایل اجرایی قبلی رو در زمان اجرای فایل آپدیت بسته و حذف و فایل جدید رو که تمام تغییرات اون در کامپایلر انجام شده رو جایگزین کنیم . این کار هم آسانتر و هم فنی تر خواهد بود .اون کار هم از طریق نرم افزارهای زیادی ممکنه ولی پیشنهاد نمیشه ...

yanin
05 / November / 2013, 09:58 PM
نه ادمین عزیز منظور من این نبود ببین ما یه Exe داریم با حجم مثلا 14 mb و یه سری Dll و فایل های دیگه*
ولی حجم فایل اجرایی ما 14 mb هست حال فایل اجرایی ما بنا به دلایلی باید تغییر کنه و به 20 mb برسه*
حالا من میخوام بدونم راهی هست به جای 20 mb دانلود کردن فقط 6 mb دانلود کنیم یعنی کد هایی که اون فایل اجرایی کم داره فقط دانلود بشه و به اون اضافه بشه*
من فک میکنم با Script ها بشه همچین کاری کرد*
اگه چیزی به ذهنتون میرسه بگید *
دو تا* سوال دیگه هم دارم اینکه
1- میشه onMousedown و onmouseup رو برای ویندوز هم داشت مثلا برنامه ای داشته باشی Windows Service
که تمام کلیک هایی که تو ویندوز انجام میشه رو بخونه یا مثلا هر برنامه ای که باز میشه یه هشدار به ما بده با اسم برنامه
2-اینکه راهی هست که برنامه ای ( بدون استفاده از Windows Service ) به محض بالا اومدن ویندوز Auto Run شه*

admin
06 / November / 2013, 05:36 AM
راه و روش های زیادی وجود داره ، البته بحث اینجاست که اگه برنامه ی ما برنامه ای بود که قرار بود تفسیر بشه این کار شما درست بود ، اما وقتی یک برنامه نیاز به کامپایل داره و خصوصا کد ما Native باشه ، این کار یک اشتباه خواهد بود ، ضمنا هدف از برنامه نویسی ماژولار اینه که فایل اجرایی شما کمترین حجم ممکن رو داشته باشه ، مثلا نهایتا 4 مگ ...
البته در این زمینه ها و این گونه نکته ها هر برنامه نویسی روش مخصوص به خودش رو داره ...
برای جواب سوال دوم :
اگه فایل های اجرایی رو با یک نرم افزار ستاپ ساز مثل Setup Factory برای نصب آماده و در واقع بسته بندی کنیم* به صورت اتوماتیک Run خواهد شد.
یا این روش :
1. روي منوی*start ويندوز كليك كنيد.
2. روي run كليك كنيد تا باز بشه .
3.حالا اين عبارت رو اونجا تايپ كنيد msconfig
4.حالا يه صفحه اي باز ميشه كه اسمشsystem configuration هستش روي تب*یکی به* آخرش كه startup هستش كليك کنيد
5.ليست برنامه هايي كه تو start up شما قرار داره ظاهر مي شوند.حالا كافيه هركدومو مي خواهين كه ديگه موقع بالا اومدن ويندوز run نشه رو تيكشو برداريد و apply و بعد ok كنيد* و همچنین بر عکس ...
در مورد سوال اولتون هم میشه یه کم بیشتر توضیح بدید ، این رو واسه چه کاری می خواهید ؟؟؟

yanin
07 / November / 2013, 01:39 PM
هنوز 2 تا سوال دیگه منو جواب ندادید

admin
07 / November / 2013, 06:56 PM
سوال دومتون*پاسخ داده شده*، سوال اول رو هم قرار بود که توضیح بدید که واسه چی لازمش دارید ...

yanin
07 / November / 2013, 10:02 PM
در مورد پاسخ سوال 2 من میخوام یه برنامه مثل اینا داشته باشم یعنی یکی به اینا اضافه کنم نه غیر فعال کنم
در مورد سوال اول فرض کنیم برنامه یک Windows Service باشه حالا من میخوام کاربر قبل از باز کردن هر برنامه یه پیغام*
در مورد ایا میخواهید این برنامه باز شود با گزینه های بله و خیر البته اسم اون برنامه ای که روش کلیک کرده هم در انتهای*
پیغام نوشته شود البته من فک میکنم تابع رو برای این کار باید تو رخ داد OnKeyDown و OnMouseDown
نوشت یکی برای Enter زدن ما میتونیم این کار رو تو فرم ساده انجام بدیم مثلا رو هر شی کلیک کردم اسم و نوع شی رو برگردونه ولی من نمیدونم ایا این کارو میشه تو windows و با Software ها انجام داد

admin
08 / November / 2013, 01:43 AM
سلام.در مورد سوال دوم اگه دقت کرده باشید ، من گفتم که با نرم افزارهای ستاپ ساز وقتی فایل Setup رو درست می کنید و اون رو نصب می کنید یا به صورت خودکار برنامه به Start up اضافه میشه و اگه نشد ، از* طریق اون 5 مرحله بعدی کارتون رو انجام بدید که فکر کنم شما انتهای قسمت پنجم رو نخونده باشید که گفتم &quot;و همچنین بر عکس ...&quot;* یعنی به جای برداشتن تیک ، این بار تیک این نرم افزار رو بزنید ....
در مورد سوال اولتون هم این کار امکان پذیر است و قابل انجام ، البته من در دلفی این کار رو تا به حال ندیدم ولی یک سورس* ساده از VB6 برای این کار دارم که فکر میکنم این کار رو با گرفتن مقادیر از رجیستری انجام داده ...
.بدردتون میخوره ؟

yanin
08 / November / 2013, 01:57 PM
در مورد سوال 2*
اون 5 مرحله که گفتید برای غیر فعال کردن پیش فرض ها بود و بالعکسش هم میشه فعال کردن اونها من میخوام یه دونه خودم*
اضافه کنم به اونا نه اونا رو فعال غیر فعال کنم از برنامه Setup ساز هم نمیخوام استفاده کنم*
در مورد سوال 1*
نه من میخوام بدونم چجوری با دلفی باید همچین کاری کرد*به نظر من ویندوز هم باید یک رخداد برای KeyDown و MouseDown داشته باشه*

ولی این رخداد ها از کجا قابل دسترسی هستنند چجوری میتونیم تابعی رو روی اینها تعریف کنیم نمیدونم*

و اینکه شما گفتید با ریجستری ها اینکارو میکنه یعنی هر برنامه ای میخواد اجرا بشه اسمش تو یه جایی تو ریجستری

ثبت میشه ؟

اگه اینطور باشه فقط مشکل میمونه پیدا کردن رخداد هایی که روی صفحه Windows بشه اعمال کرد من فک میکنم*

باید از Handle های ویندوز استفاده کرد*

خود ویندوز وقتی کلید start یا Ctrl+Alt+Delete رو میزنی فک کنم از همین رخداد های keyDown استفاده میکنه*

yanin
13 / November / 2013, 12:50 AM
کسی نیست جواب ما رو بده*

admin
13 / November / 2013, 05:36 AM
سلام.
من*خودم با ستاپ ساز این کار رو انجام میدم ، احتمالا روش دیگه ای هم باشه ...
برای رویدادهای موس هم من یک مثال براتون میزارم دانلودش کنید و امیدورام که به کارتون بیاد ...

دانلود کد MouseSystemHook (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>)*