PDA

View Full Version : سوال: برنامه با قابلیت آپدیت



ابوذر محمودی
چهارشنبه 19 تیر 1387, 01:02 صبح
سلام
دوستان عزیز چه طوری می شه یه برنامه با قابلیت آپدیت شدن از طریق اینترنت رو ساخت؟:متفکر:
به عنوان مثال ما یه برنامه داریم که می خواهیم در یک یا چند تا از فرم های اون تغییراتی داده بشه .
یا اینکه فرم هایی به برنامه اضافه بشه .
* لازم به ذکره که منظور من آپدیت کلی برنامه نیست آپدیت بخشی از برنامه است

parselearn
دوشنبه 24 تیر 1387, 06:53 صبح
دوست عزيز ما نمي تونيم محتويات فايل رو به روز كنيم
ولي ميتونيم فايل اصلي رو به روز كنيم (رونوشت)
براي به روز كردن هم بهتره فايلها با حجم پايين باشند
در همين تالار جستجو كنيد كدهايي براي اين كار پيدا ميكنيد

r0ot$harp
دوشنبه 24 تیر 1387, 13:26 عصر
دوست عزیز بهترین انتخاب اینه که شما بیاین و روی یه سرور یه فایل به نام Upload.txt بزارین و در داخل اون هر موقع احتیاج داشتین رویه این فایل مثلا می نویسید :
Version=1.4.2
و برنامه از طریق Winsock بیاد و چک کنه ورژن فعلی برنامه مثلا 1 هست ولی در سرور 1.4.2 نشون می ده . پس 100 درصد ورژن جدید هست و وینسوک شروع کنه به دریافت فایل و بعد از دریافت شما باید به صورت باینری فایل رو بنویسید .


باتشکر احسان

ابوذر محمودی
سه شنبه 25 تیر 1387, 23:09 عصر
سلام دوستان تشکر ، ممنون . ولی مثل اینکه من نتونستم دقیقاً منظورمو بیان کنم . یه مثال می زنم شاید کمی مسئله روشن تر بشه : فرض کنیم ما یه برنامه داریم که تو یکی از فرمهای اون مثلاً فرم ثبت اطلاعات یه مشکل کوچیکی داره به عنوان مثال تکست شماره شناسنامه باید فقط عدد بگیره ولی حروف هم می گیره ! حالا می خوایم کاری کنیم که برنامه وقتی به اینترنت وصل می شه این مشکل رو برطرف کنه.(فقط همین یک فرم رو آپدیت کنه ) ان شاءا.. که تونسته باشم منظورمو بیان کنم . * من دقیقا فهمیدم باید چیکار کنم ، فقط باید یه فرصت پیدا کنم تا اونو پیاده سازی کنم ؛ راهی که من پیدا کردم هم خیلی جالبه هم کاربردی . وقتی که پروژه تموم شد واستون آپ می کنم ، تا بقیه هم از اون استفاده کنند . تو این مدت اگه کسی راه حلی داره که به نظرش جالب می یاد لطف کنه اونو توی تاپیک قرار بده شاید به نتیجه بهتری رسیدیم .

r0ot$harp
سه شنبه 25 تیر 1387, 23:27 عصر
سلام دوستان تشکر ، ممنون . ولی مثل اینکه من نتونستم دقیقاً منظورمو بیان کنم . یه مثال می زنم شاید کمی مسئله روشن تر بشه : فرض کنیم ما یه برنامه داریم که تو یکی از فرمهای اون مثلاً فرم ثبت اطلاعات یه مشکل کوچیکی داره به عنوان مثال تکست شماره شناسنامه باید فقط عدد بگیره ولی حروف هم می گیره ! حالا می خوایم کاری کنیم که برنامه وقتی به اینترنت وصل می شه این مشکل رو برطرف کنه.(فقط همین یک فرم رو آپدیت کنه ) ان شاءا.. که تونسته باشم منظورمو بیان کنم . * من دقیقا فهمیدم باید چیکار کنم ، فقط باید یه فرصت پیدا کنم تا اونو پیاده سازی کنم ؛ راهی که من پیدا کردم هم خیلی جالبه هم کاربردی . وقتی که پروژه تموم شد واستون آپ می کنم ، تا بقیه هم از اون استفاده کنند . تو این مدت اگه کسی راه حلی داره که به نظرش جالب می یاد لطف کنه اونو توی تاپیک قرار بده شاید به نتیجه بهتری رسیدیم .

اینم کاری نداره شما بیاین و کناره هر خط از برنامه یه برکپوینت بزارین مثل زیر :

Private Sub Command1_Click()

On Error GoTo Command1_Click_Err

100 CommonDialog1.ShowOpen
102 If CommonDialog1.FileName <> "" Then
104 Picture1.Picture = LoadPicture(CommonDialog1.FileName)
106 Command2.Enabled = True
108 Command3.Enabled = True
End If

Exit Sub

Command1_Click_Err:
MsgBox Err.Description & vbCrLf & _
"in Project1.Form1.Command1_Click " & _
"at line " & Erl, _
vbExclamation + vbOKOnly, "Application Error"
Resume Next

End Sub

بعد باید برنامه وقتی اررور پیدا کرد یه ایمیل شما یه ایمیل بزنه و مثلا بگه خط 5 ارور این . حالا شما میاین و برنامه رو اصلاح میکنید و بعد اونو رو سرور خودتون آپلود می کنید . بعد برنامه میاد چک می کنه اگر ورژن جدید بود بیاد دانلود کنه .

باتشکر احسان

ابوذر محمودی
سه شنبه 25 تیر 1387, 23:56 عصر
سلام .
آقا احسان عزیز(sanaz13x) ممنون .
منظور من این که شما گفتید نیست ، من به خطاهای برنامه یا اینجور چیزا کاری ندارم .
حتما تا به حال شده یه نرم افزاری رو آپدیت کنید ؛ حتماً متوجه شدید که اکثر برنامه ها فقط بخشی از برنامه رو آپدیت می کنند . من این آپدیت مد نظرمه !
برنامه هایی هم هستند که وقتی آپدیت می شن عمر آدمو تموم می کنن یعنی هر دفعه که آپدیتشون می کنی خودشون رو به طور کامل آپدیت می کنن و بعد از اتمام کار بازم می بینیم که فقط بخشی از اون آپدیت شده .

من می خوام از روش آپدیت جزئی استفاده کنم چون نسبت به آپدیت کلی هم سریعتر و هم کاربردی تر.

فکر کنم دیگه منظور من رو گرفته باشید.

r0ot$harp
چهارشنبه 26 تیر 1387, 00:31 صبح
سلام .
آقا احسان عزیز(sanaz13x) ممنون .
منظور من این که شما گفتید نیست ، من به خطاهای برنامه یا اینجور چیزا کاری ندارم .
حتما تا به حال شده یه نرم افزاری رو آپدیت کنید ؛ حتماً متوجه شدید که اکثر برنامه ها فقط بخشی از برنامه رو آپدیت می کنند . من این آپدیت مد نظرمه !
برنامه هایی هم هستند که وقتی آپدیت می شن عمر آدمو تموم می کنن یعنی هر دفعه که آپدیتشون می کنی خودشون رو به طور کامل آپدیت می کنن و بعد از اتمام کار بازم می بینیم که فقط بخشی از اون آپدیت شده .

من می خوام از روش آپدیت جزئی استفاده کنم چون نسبت به آپدیت کلی هم سریعتر و هم کاربردی تر.

فکر کنم دیگه منظور من رو گرفته باشید.

ببین دوست عزیز تا این جایی که من علم دارم و می دونم وقتی برنامه کامپایل بشه دیگه نمی شه سورس اونو عوض کرد ولی می شه کاری کرد که تمام خصوصیت های برنامه رو آپدیت کنی یعنی یه فایل بزاری مثلا به نام Config.ini بعد داخل اون بیای و برای تکست 1 اینجوری عمل کنی :
Top=10
Left=20
Text="ehsan"
visible=True

بعد میای وقتی برنامه اجرا شد به تک تک این کارا عمل می کنی و بعد برنامه اجرا می شه و تا این جایی که من می دونم امکان این کار وجود نداره که سورس برنامه رو دوباره بیای عوض کنی اونم بعد از کامپایل . من سرچ می کنم بازهم اگر اطلاعاتی گیر آوردم کوتاهی نمی کنم و اینجا می زارم .

باتشکر احسان

ali_md110
چهارشنبه 26 تیر 1387, 00:35 صبح
شما میتونید پلاگین بسازید و از طزیق اون برنامتون رو اصلاح کنید

r0ot$harp
چهارشنبه 26 تیر 1387, 00:41 صبح
شما میتونید پلاگین بسازید و از طزیق اون برنامتون رو اصلاح کنید

دوست عزیز لطف کنید بیشتر توضیح بدید و در صورت امکان همراه با مثال

باتشکر احسان

ابوذر محمودی
چهارشنبه 26 تیر 1387, 02:13 صبح
شما میتونید پلاگین بسازید و از طزیق اون برنامتون رو اصلاح کنید
سلام .

آره من هم می خواستم از همین روش استفاده کنم .
البته الگوریتمی که من واسه این کار طراحی کردم خیلی راحته .

فقط نمی دونم کی وقت می شه برنامشو بنویسم .

ابوذر محمودی
چهارشنبه 26 تیر 1387, 02:27 صبح
ببین دوست عزیز تا این جایی که من علم دارم و می دونم وقتی برنامه کامپایل بشه دیگه نمی شه سورس اونو عوض کرد ولی می شه کاری کرد که تمام خصوصیت های برنامه رو آپدیت کنی یعنی یه فایل بزاری مثلا به نام Config.ini بعد داخل اون بیای و برای تکست 1 اینجوری عمل کنی :
Top=10
Left=20
Text="ehsan"
visible=True

بعد میای وقتی برنامه اجرا شد به تک تک این کارا عمل می کنی و بعد برنامه اجرا می شه و تا این جایی که من می دونم امکان این کار وجود نداره که سورس برنامه رو دوباره بیای عوض کنی اونم بعد از کامپایل . من سرچ می کنم بازهم اگر اطلاعاتی گیر آوردم کوتاهی نمی کنم و اینجا می زارم .

باتشکر احسان

سلام .

بازم حرف شما متین آقا احسان .

هدف من از طرح این سوال فقط آشنایی افراد با این مسئله کاربردی بود .

منظوره من فقط تغییرات در مختصات و ... نیست ؛ منظور من تغییر در کد ، شکل ظاهری بعضی از اجزا و فرمهای برنامه هست .

حالا بزارید من یه کم راهنمایی کنم :
ما همهء برنامه رو تو یک فایل نباید کامپایل کنیم ، چون اینجوری به قول فرمایش شما نمی تونیم سورسشو تغییر بدیم .

ما باید برنامه رو به چندین قسمت تقسیم کنیم تا موقع آپدیت ، فایل جدید جایگزین فایل قبلی بشه . حالا تو این وسط یه فایل اصلی داریم که وظیفه برقراری ارتباط بین اجزای برنامه رو داره .

! ما فقط بعضی از قسمت ها رو که مد نظرمونه با فایل جدید جایگزین میکنیم ، یعنی همون آپدیت جزئی که عرض کردم .

r0ot$harp
چهارشنبه 26 تیر 1387, 11:11 صبح
سلام .

بازم حرف شما متین آقا احسان .

هدف من از طرح این سوال فقط آشنایی افراد با این مسئله کاربردی بود .

منظوره من فقط تغییرات در مختصات و ... نیست ؛ منظور من تغییر در کد ، شکل ظاهری بعضی از اجزا و فرمهای برنامه هست .

حالا بزارید من یه کم راهنمایی کنم :
ما همهء برنامه رو تو یک فایل نباید کامپایل کنیم ، چون اینجوری به قول فرمایش شما نمی تونیم سورسشو تغییر بدیم .

ما باید برنامه رو به چندین قسمت تقسیم کنیم تا موقع آپدیت ، فایل جدید جایگزین فایل قبلی بشه . حالا تو این وسط یه فایل اصلی داریم که وظیفه برقراری ارتباط بین اجزای برنامه رو داره .

! ما فقط بعضی از قسمت ها رو که مد نظرمونه با فایل جدید جایگزین میکنیم ، یعنی همون آپدیت جزئی که عرض کردم .

دوست عزیز من که تا حالا رو همچنین کاری تحقیق نکردم و هیچ برنامه ای رو هم تا حالا اینجوری ننوشتم . لطفا اگر سورس دارین بزارین اینجا تا بقیه هم آشنا شن .

باتشکر احسان

vb_hamed
چهارشنبه 26 تیر 1387, 12:12 عصر
سلام

يك قسمت از سورس كه مشكل هست
راهش اينه كه شما برنامتون رو چند قسمتي بنويسيد
يعني مثلا فايلهاي Exe يا Dll مختلف كه هر كدوم كار خاصي رو انجام مي دن
بعد براي به روز آوري هر قسمت فقط Exe يا Dll مربوطه رو Update كنيد، كاري كه اكثر نرم افزارهاي بزرگ انجام مي دن همينه

ShimaIGI
چهارشنبه 26 تیر 1387, 12:26 عصر
يه راه عملي و ساده براي انجام اين كار استفاده از برنامه هاي چند تكه هست. همونطور كه قبلا هم ديديد برنامه هاي سنگين و حجيمي مثل Photoshop از يه هسته مركزي ( فايل اجرائي اصلي ) و پلاگينهاي مختلفي( فايلهاي OCX و Dll ... ) تشكيل شده كه به هنگام نياز ، برنامه اونها رو اجرا مي كنه.
البته استفاده از اين روش بيشتر براي كنترل حافظه مورد استفاده برنامه هست چرا كه لود كردن تمامي اين پلاگين ها به طور همزمان داخل خود برنامه اگه غير ممكن نباشه بار بسيار بسيار سنگيني رو دوش CPU‌مي زاره.
در ضمن در اين روش مي شه هر كدام از پلاگين ها رو به تنهائي آپديت كرد .

روش ديگه اي كه براي اين كار متصور هست استفاده از فايل هاي ini در كنار برنامه است. همونطور كه دوستان اشاره كردن مي شه برخي از تنظيمات داخل برنامه رو از اين فايل ها خواند. علاوه بر اون شما مي تونيد با پيشرفته تر كردن اين فايلها و استفاده از ساخت آبجكتهاي فرمتون به صورت رانتايم ( مثل ساخت فرمها، منوها، .... ) هر بار اطلاعات مربوط به ساخت آبجكتها رو از اين فايلها فراخواني كنيد.

اما يكي از مرسوم ترين راه ها استفاده از Patch‌هاست. اغلب برنامه هاي بزرگ و معروف براي برطرف كردن باگها يا ايجاد تغييرات جزئي داخل برنامه از اين روش استفاده مي كنند.
در اين روش شما به مانند كسي كه برنامه رو كرك مي كنه ، يك فايل پچ ايجاد و اون رو براي كاربر ارسال مي كنيد تا كاربر با اجراي اون تغييرات جزئي كه مي خواهيد رو داخل فايل انجام بده.
اين فايلهاي پچ رو ، هم خودتون مي تونيد بسازي و هم از برنامه هاي مختلفي كه براي اين كار موجود هستند مي تونيد استفاده كنيد.

در نهايت آپديت كردن برنامه ها رو مي شه تابعي از نوع برنامه و عملكرد اون به شمار آورد. شما براي آپديت كردن يك آنتي ويروس تنها به آپديت ليست سيگناتورها احتياج داريد و براي آپديت كردن يك برنامه پخش فايل هاي صوتي مي توني به اون پلاگين اضافه كنيد.
تنها زماني مي شه دقيق ترين و بهترين روش رو بدست آورد كه با كاركرد و نوع برنامه مورد نظر به خوبي آشنا باشيم.

ابوذر محمودی
چهارشنبه 26 تیر 1387, 12:32 عصر
. لطفا اگر سورس دارین بزارین اینجا تا بقیه هم آشنا شن .

سلام .

دوست عزیز حتماً این کار رو انجام می دم . در اسرع وقت این برنامه رو می نویسم و توی برنامه های اعلان قرار می دم .

شاید یه کم طول بکشه آخه فعلا وقت ندارم واسه همین به صورت پیام خصوصی به شما اطلاع می دم .

ابوذر محمودی
چهارشنبه 26 تیر 1387, 12:47 عصر
يك قسمت از سورس كه مشكل هست
راهش اينه كه شما برنامتون رو چند قسمتي بنويسيد
يعني مثلا فايلهاي Exe يا Dll مختلف كه هر كدوم كار خاصي رو انجام مي دن
بعد براي به روز آوري هر قسمت فقط Exe يا Dll مربوطه رو Update كنيد، كاري كه اكثر نرم افزارهاي بزرگ انجام مي دن همينه


يه راه عملي و ساده براي انجام اين كار استفاده از برنامه هاي چند تكه هست. همونطور كه قبلا هم ديديد برنامه هاي سنگين و حجيمي مثل Photoshop از يه هسته مركزي ( فايل اجرائي اصلي ) و پلاگينهاي مختلفي( فايلهاي OCX و Dll ... ) تشكيل شده كه به هنگام نياز ، برنامه اونها رو اجرا مي كنه

سلام .

آره دوستان عزیز ! ما توی سورس تغییراتی نمی دیم ؛ همونطوریکه خودتون هم عرض کردید ما هر قسمت از برنامه رو به صورت یه فایل جدا در می آریم . اینطوری برنامه برای کار آپدیت کاملاً انعطاف پذیر می شه .


روش ديگه اي كه براي اين كار متصور هست استفاده از فايل هاي ini در كنار برنامه است. همونطور كه دوستان اشاره كردن مي شه برخي از تنظيمات داخل برنامه رو از اين فايل ها خواند. علاوه بر اون شما مي تونيد با پيشرفته تر كردن اين فايلها و استفاده از ساخت آبجكتهاي فرمتون به صورت رانتايم ( مثل ساخت فرمها، منوها، .... ) هر بار اطلاعات مربوط به ساخت آبجكتها رو از اين فايلها فراخواني كنيد.

نظر شخصی من اینه که بهتره برای اینکار از فایلهای اجرایی یا dll استفاده بشه ؛ اینطوری هر کسی نمی تونه توی فایل تغییراتی رو بده.

من یه سورس به زبان دلفی دارم اگه کسی خواست میتونم اینجا آپ کنم .

من یه تاپیک دیگه در رابطه با همین موضوع می دم تا شاید خیلی راحت خودتون هم بتونید این کار رو بکنید .

به هر حال شروع کار یه کم سخته ولی نتیجه خیلی شیرینه !