PDA

View Full Version : سوال: چگونه برنامه ام را با برنامه جديدتر Upgrade كنم



baran_1551
یک شنبه 22 آذر 1388, 17:33 عصر
چگونه ميشود برنامه اي را كه قبلا نوشته ام را upgrade كنم ولي برنامه قبلي را حذف نكنم اگر ورژن جديد شد خودش عوض كند اگر جديد است عوض نكند

Computer.Programmer
یک شنبه 22 آذر 1388, 18:28 عصر
راه حلی که من دارم به این صورته:
شما برای این کار باید ابتدا پروژه ای درست کنید که قابلیت آپدیت رو داشته باشه. حالا بخش های برنامه که به هم مرتبط هستند رو جدا در فایل های جدا قرار بده. سپس تک تک اون فایل ها رو داخل برنامۀ اصلیت لود کن. البته مدیریت این کار کمی سخت میشه ولی به عنوان یک گزینه برای این کار میشه روش حساب کرد. حالا هر زمان که فایل های جدیدت تغییر می کنه کاربر می تونه با دانلود اونها تغییرات رو روی برنامش اعمال کنه.

توضیحات بالا به صورت تئوری بود اگه در بخش عملی مشکلی داشتی بگو تا کمکت کنم.
(مهمترین بخش تشخص و لود فایل ها به صورت اتومات در برنامه است)

baran_1551
چهارشنبه 25 آذر 1388, 18:42 عصر
در صورت امكان مراحل عملي كار را توضيح بدهيد.

DoDoklak
پنج شنبه 26 آذر 1388, 16:12 عصر
در هنگام آپدیت دو حالت وجود داره آپدیت فایل EXE و آپدیت بانک اطلاعاتی

برای آپدیت فایل exe کافی آپدیت جدید رو به مشتری بدید با کپی کردن حل میشه

اما بانک اطلاعاتی:
شما میتونید از دو روش استفاده کنید
1-اینکه مشتری یک بکاپ براتون بفرسته (با ایمیل یا هرچی) و شما تغییرات رو اعمال کنید و فایل جدید رو بهش پس بدید
2-یه برنامه جدا به نام آپدیت بنویسید تا به صورت نرم افزاری تغییرات رو اعمال کنه(با کد نویسی)

البته روش اول راحتره ولی دردسر انتقال فایلش بیشتره
روش دوم کارایی بهتری داره و دانش بیشتری تو تغییرات در بانک میخواد

چند تا نکته:
1- هرگز ساختار جداولتان را تغيير ندهيد
2- ايندكس هاي يونيك را به هيچ عنوان تغيير ندهيد
3 - براي ارتقاء حتي الامكان سعي كنيد از جداول جديد استفاده كنيد ، مگر اينكه نشود يا سربار پردازشي بصورت چشمگيري بالا برود
4- ويو ها ، توابع ، پروسيجرهاي ذخيره شده را با خيال راحت تغيير دهيد و از تغيير در آنها نترسيد !

جهت ارتقاء نياز داري كه هر نسخه از ديتابيست رو بتوني تشخيص بدي ، خيلي روي اين نكته دقيق باش . بايد در يك نقطه از ديتابيس ورژن رو ذخيره كني حالا ميخواد جدول تنظيمات باشه يا هر كجاي ديگه

مثال:
فرض کنید بانک شما احتیاجات زیر رو جهت آپدیت داره:
اضافه کردن فیلد X5 به جدول X
حذف کردن فیلد Y4 از جدول Y

روش اول : یه بکاپ از مشتری رو میگری اون تو سیستم خودت تو محیط SQL SERVER بصورت دستی دو کار بالا رو انجام میدی و بعد بکاپ رو به مشتری پس میدی و تغییرات اعمال میشه

روش دوم : یک فایل exe جهت آپدیت ایجاد میکنی و تغییرات بالا رو با کد نویسی اعمال میکنی و فقط کافی این فایل رو مشتری بدی و وقتی اونو اجرا میکنه برنامه تغییرات رو تو بانک اعمال میکنه

روش اول زیاد اطلاعات آنچنانی نمیخواد فقط یکم دردسر داره
ولی روش دوم کارایی بیشتری داره و اطلاعات نسبتا بیشتری میخواد (البته نه زیاد)

یک نمونه:
فرض کنید شما قرار عملیات زیر رو جهت آپدیت انجام بدید
1-خالی کردن جدول TableName
2-صفر کردن شماره AutoNumber
3- حذف ستون X1
4-ایجاد ستون Y1

با نمونه کد زیر تمام اینکارها به صورت اتوماتیک توسط فایل آپدیت شما انجام میشه


Dim CmdInsert As New OleDbCommand
AccessCon.Open()

‘**** 1 اجرای مرحله
CmdInsert = New OleDb.OleDbCommand(“DELETE FROM TableName”, AccessCon)
CmdInsert.ExecuteNonQuery()

‘**** 2 اجرای مرحله
CmdInsert = New OleDb.OleDbCommand("Alter Table TableName Alter COLUMN ID counter(1)", AccessCon)
CmdInsert.ExecuteNonQuery()
‘**** 3 اجرای مرحله
CmdInsert = New OleDb.OleDbCommand("Alter Table TableName DROP COLUMN X1", AccessCon)
CmdInsert.ExecuteNonQuery()
‘**** 4 اجرای مرحله
CmdInsert = New OleDb.OleDbCommand(“Alter Table TableName ADD COLUMN Y1 Text”, AccessCon)
CmdInsert.ExecuteNonQuery()

امیدوارم مشکلت حل بشه اگه منظورت هم این نیست میتونی توضیحات بیشتری بدی تا بهتر بشه راهنمایتون کرد