PDA

View Full Version : نوشتن نسخه Update نرم افزار (Patch)



h_m0zhdeh
شنبه 14 بهمن 1391, 17:20 عصر
با سلام
من یه نرم افزار نوشتم و به کاربرم تحویل دادم(با سی شارپ و sql).
حالا بعد از یه ماه استفاده و ورود اطلاعات توسط کاربرم ، از من خواسته که یه چند تا از صفحه ها رو حذف و چند تا صفحه جدید اضافه کنم (که مسلما باعث تغییر database هم میشه).
ولی من نمیدونم که چطوری یه patch براش بنویسم و بذارم تو internet که بره دانلود کنه و نصب کنه روی ورژن قبلی نرم افزار به طوری که اطلاعاتش پاک نشه و تغییرات هم رو نرم افزارش اعمال بشه.

لطفا اگه کسی کار کرده منو راهنمایی کنه:افسرده:

ma.rad
سه شنبه 17 بهمن 1391, 17:11 عصر
از چه روشی برای اتصال به بانک استفاده کردید؟

ordebehesht
سه شنبه 17 بهمن 1391, 18:57 عصر
بهتره تو سایتهای لاتین دنبالش بگردی من خودم چندین ماه هستش که یکی از مشکل هام همینه هرچی تاپیک زدم به نتیجه نرسیدم

ma.rad
سه شنبه 17 بهمن 1391, 19:10 عصر
بروز کردن خود برنامه از طریق اینترنت کار ساده ای: شما تو برنامه یه لینک برای دانلود ورژن جدید برنامه رو قرار می دید که بعد از دانلود فایل مورد نظر ، فایل Extract می کنید(زمان دانلود فایل برنامه باید بسته بشه) وبعد کاربر نسخه جدید برنامه رو به صورت دستی نصب می کنه که فایل جدید جایگزین نسخه قبلی بشه
اما مشکل اصلی بانک برنامه چون حاوی اطلاعات،نمی شه از این روش استفاده کرد وباتوجه به روش اتصال به بانک باید با کدنویسی فیلدهای جدید رو اضافه وکم کنید.

ordebehesht
سه شنبه 17 بهمن 1391, 19:17 عصر
نکته یافتن مسیر نسخه قبلس برای جایگزین نسخه جدید چه جوری میشه

ma.rad
سه شنبه 17 بهمن 1391, 19:28 عصر
شما زمان ایجاد setup مسیر نصب برنامه رو می دیدو مسلما در نسخه جدید هم باید همون مسیر نصب داد.اینکه چیز پیچیده ای نیست.

ordebehesht
سه شنبه 17 بهمن 1391, 19:34 عصر
یعنی تو ساخت پکیجهای بروز هم باید مسیر داد شاید یکی تغییر بده مسیر پیشفرض رو اونوقت چه

ordebehesht
سه شنبه 17 بهمن 1391, 19:35 عصر
فکر کنم باید کدی بنویسه که اصلان همچین نرم افزاری نصب هست یا نه اگه هست کجا نصبه و مسیر رو برگردونه درست میگم دیگه؟؟؟؟؟؟؟؟؟؟

ma.rad
سه شنبه 17 بهمن 1391, 19:55 عصر
:متعجب::متعجب::متعجب::متعجب:: تعجب::متعجب::متعجب::متعجب::م عجب::متعجب::متعجب::متعجب::مت جب::متعجب::متعجب::متعجب::متع ب::متعجب::متعجب::متعجب::متعج ::متعجب::متعجب:
عزیز دلم اگر برنامه نصب نیاشه کاربر باید رو چی کلیک کنه برنامه آپدیت بشه؟
مسئله مهم تعریف یه پارامتر به عنوان نسخه برنامه است که هم باید رو برنامه باشه وهم روی هاست ،می تونی یه قسمتی از آدرس لینک (مثلا آخر فایل زیپ شده در این صورت باید آدرس دهی لینک دانلود داینامیک باشه) این پارامتر قراربدی (مثلا یه عدد )و زمانی که کاربر روی لینک کلیک کرد اگر نسخه جدید بود آپدیت بشه

ordebehesht
سه شنبه 17 بهمن 1391, 19:59 عصر
نه دوست من نگرفتی حرف منو ببین ما یه برنامه نوشتیم ارسال کردیم کاربر در حال استفاده هست حالا مانسخه های بروز رو جداگانه گذاشتیم رو سایت کاربر دانلود میکنه خودش نسبت به نصب اقدام میکنه نه اینکه نرم افزار به سرور سایت وصل شه و بروز بشه

rezaei_y
سه شنبه 17 بهمن 1391, 20:29 عصر
دوست عزیز برای ایجاد جدول یا فید جدید شما باید یکسری دستور sql بنویسید و توسط sqlcommand روی بانک اجرا کنید

برای این کار میتونید دستورات sql رو تو چندتا فایل text بنویسید و موقع اجرای نرم افزار اونا رو اجرا کنید

ma.rad
سه شنبه 17 بهمن 1391, 20:48 عصر
نه دوست من نگرفتی حرف منو ببین ما یه برنامه نوشتیم ارسال کردیم کاربر در حال استفاده هست حالا مانسخه های بروز رو جداگانه گذاشتیم رو سایت کاربر دانلود میکنه خودش نسبت به نصب اقدام میکنه نه اینکه نرم افزار به سرور سایت وصل شه و بروز بشه

اینکه دیگه هیچ کاری نداره ، فکر نمی کنم سوال دوستمون این باشه!

ordebehesht
سه شنبه 17 بهمن 1391, 21:05 عصر
آقای (این که هیچ کار نداره) لطف کنین راهنمایی کنین من خودم نحوه پابلیش رو میدونم تو این مورد توقسمت مسیر یابی فایلهای نصبی ایراد دارم به جای رفع معلول به رفع علت بپردازید

ma.rad
سه شنبه 17 بهمن 1391, 21:25 عصر
شما جواب می خواید یا دوست دارید کل کل کنید، من حوصله این جور بازیارو ندارم
چیو پابلیش کنی؟؟؟!!!خب فایل ها رو آپلود کنید تو هاستتون
من که گفتم

شما زمان ایجاد setup مسیر نصب برنامه رو می دیدو مسلما در نسخه جدید هم باید همون مسیر نصب داد.اینکه چیز پیچیده ای نیست.
میتونید setup هم درست نکنید(منظورم با vs) و با WinRar اینکارو بکنید ومسیر برنامه روبدید
کلی تاپیک تو این زمینه هست جستجو کنید
دوست عزیز ضعف شما اینه که اصلا به پاسخ ها توجه نمی کنی

ordebehesht
سه شنبه 17 بهمن 1391, 21:33 عصر
ممنون از تذکرتون
ولی اصلا اهل کل کل نیستم ادمی کل کل میکنه دانشمند وعالم باشه نه من بیسواد شما راست میگین تایپیک های زیادی هست اما همشون مثل شما همونطور که گفتین حوصله ندارن و به جزئیات آن کمی توجه نمیکنند

چیزی که من میخوام توضیحی که بتونه منو قانع کنه من با جرئیات شرح واقع میکنم و میگم حتی برای حرفم مثال میارم اما شما فقط سطحی و بی محتوا پاسخ میدین

متاسفم برای خودم همین دیگه حرفی ندارم

ma.rad
سه شنبه 17 بهمن 1391, 21:41 عصر
ببین دوست من قرار نیست من و یا دوستان برا شما برنامه رو بنویسیم یا کد برنامه رو اینجا بزارن،وظیفه ما فقط راهنمایی ورفع اشکاله ،یه برنامه نویس باید تیز باشه ومطلب رو زود بگیره ، در غیر اینصورت شما باید اول برید مطالعه کنید یا کلاس آموزشی برید وبعد برای رفع اشکال به سایت سر بزنید.
اگر بعضی موقع ها نمونه برنامه یا کد میزاریم لطف دوستان
اگر میخواید پست تاتون زیاد شه این راهش نیست.
موفق باشید.

h_m0zhdeh
جمعه 20 بهمن 1391, 12:57 عصر
با سلام و تشکر از دوستان خوبم که در این بحث شرکت کردند
برنامه من windows application که با #C و SQL نوشتم و از database file استفاده کردم
نحوه اتصال به database هم به صورت linq می باشد.
می خواستم بدونم اگه کاربر از database که ورود اطلاعات هم کرده backup بگیره، چه طوری اون رو روی دیتابیس جدیدم که تو نسخه بعدی گذاشتم و باید نصب کنه restore کنه؟
یعنی با حفظ اطلاعات قبلی جداول و فیلدهای جدید جایگزین بشه؟

ma.rad
جمعه 20 بهمن 1391, 13:12 عصر
زمانی که شما Backup بانک قبلی رو بازیابی کنید دوباره شِمای قبلی جایگزین شِمای جدید دیتابیس جدیدتون می شه
همانطور که دوستمون گفتن:


برای ایجاد جدول یا فیلد جدید شما باید یکسری دستور sql بنویسید و توسط sqlcommand روی بانک اجرا کنید
برای این کار میتونید دستورات sql رو تو چندتا فایل text بنویسید و موقع اجرای نرم افزار اونا رو اجرا کنید


یا به همراه نسخه جدید برنامه یه فایل دیگه بزارید تا تغییرات لازم روی دیتابیس رو انجام بده

h_m0zhdeh
شنبه 21 بهمن 1391, 16:18 عصر
ممنون که کمکم می کنید
می خوام ببینم درست متوجه شدم!
من یکسری دستورات مثل insert table و ... تو یک فایل text بنویسم و داخل فایل exe یرنامه ام بگذارم
خوب برنامه ام فایل فایل متنی رو چجوری اجرا می کنه، یا چجوری باید بهش بگم که اجرا بشه؟:افسرده:
فکر کنم نفهمیدم چی شد!!!
میشه یه sample بهم بدید؟؟؟

naghshineh m&h
شنبه 21 بهمن 1391, 19:05 عصر
دوست عزیز بنده برای آپدیت ابتدا آگدیت را به صورت اتوماتیک باز می کنم و مسیر نصب برنامه را بدست می آورم و سپس آن را انجام می دهم و دوباره نرم افزار اصلی را باز می کنم سوالی در مورد باز کردن فایل اجرایی در مسیر نصب پرسیده شده بود که به آن جواب دادم و برای آپدیت بیشترین کارایی را دارد نقل قول: چگونه می شود یک فایل exe رو تحت برنامه اجرا کرد (http://barnamenevis.org/showthread.php?320649-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D9%85%DB%8C-%D8%B4%D9%88%D8%AF-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-exe-%D8%B1%D9%88-%D8%AA%D8%AD%D8%AA-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%D8%AC%D8%B1%D8%A7-%DA%A9%D8%B1%D8%AF&p=1685378#post1685378)

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


use Dbeton
Go


ALTER TABLE dbo.AzmayeshAnjamShodeh
ALTER COLUMN moghavematfeshari decimal (18,0)


در این کد من می خواستم به خاطر محاسبه جمع کل آزمایشات از نوع دابل به دسیمال برم که اینطوری تغییرش دادم و هیچ مشکلی برای داده ها به وجود نمییاد

keyvan_s89
شنبه 21 بهمن 1391, 20:05 عصر
بروز کردن خود برنامه از طریق اینترنت کار ساده ای: شما تو برنامه یه لینک برای دانلود ورژن جدید برنامه رو قرار می دید که بعد از دانلود فایل مورد نظر ، فایل Extract می کنید(زمان دانلود فایل برنامه باید بسته بشه) وبعد کاربر نسخه جدید برنامه رو به صورت دستی نصب می کنه که فایل جدید جایگزین نسخه قبلی بشه
اما مشکل اصلی بانک برنامه چون حاوی اطلاعات،نمی شه از این روش استفاده کرد وباتوجه به روش اتصال به بانک باید با کدنویسی فیلدهای جدید رو اضافه وکم کنید.
حالا اگه برنامه اصلا بانک نداشته باشه و مثلا بخوایم یک تکست باکس رو از یه فرم حذف کنیم باید چیکار کرد؟
باید یه برنامه جدید بنویسیم که اون تکست باکس رو نداشته باشه ؟ یا میشه یه patch درست کرد که تو برنامه فقط اون تکست باکس رو حذف کنه ؟

barnamenevisjavan
شنبه 21 بهمن 1391, 20:21 عصر
حالا اگه برنامه اصلا بانک نداشته باشه و مثلا بخوایم یک تکست باکس رو از یه فرم حذف کنیم باید چیکار کرد؟
باید یه برنامه جدید بنویسیم که اون تکست باکس رو نداشته باشه ؟ یا میشه یه patch درست کرد که تو برنامه فقط اون تکست باکس رو حذف کنه ؟

برای اینکه برنامه جدید تکس باکس رو نداشته باشه شما باید برنامه اصلی رو از ابتدا بصورت پلاگین طراحی کنید یعنی هر قسمت از برنامه در یک فایل dll باشه اونوقت میتونید اینجور تغییرات رو اعمال کنید

keyvan_s89
شنبه 21 بهمن 1391, 20:29 عصر
برای اینکه برنامه جدید تکس باکس رو نداشته باشه شما باید برنامه اصلی رو از ابتدا بصورت پلاگین طراحی کنید یعنی هر قسمت از برنامه در یک فایل dll باشه اونوقت میتونید اینجور تغییرات رو اعمال کنید
میشه بیشتر توضیح بدید چه جوری به صورت پلاگین طراحی کنیم ؟

kingtak
شنبه 21 بهمن 1391, 23:17 عصر
با توجه به نیاز خودتون برنامه رو به چند بخش تقسیم کنید و هر قسمت رو بصورت یک برنامه مستقل بنویسید و در نهایت هنگامی که فایل نهایی رو تولید میکنید از تنظیمات پروژه نوع خروجی که Windows Application هست رو به Class Library تغییر بدید و خروجی رو بگیرید که به شما بجای فایل Exe یک فایل Dll میده سپس این dll هارو توی فرم اصلی مثل هر کامپوننت دیگه ای فراخوانی کنید و ازش استفاده کنید اگر متوجه روند کار نشدید میتونید این آموزش رو دنبال کنید البته رایگان نیست:
http://barnamenevisjavan.com/post/553

این که عضویت وِیژه توی سایت میخواد.شما دارید واسه سایتتون تبلیغات می کنید دوست عزیز.:عصبانی++:
اگه مرجع رایگان دارید معرفی کنید!

این سایت چند تا لینک برای اینکار معرفی کرده.
Creating a plug-in framework in C#: Resources (http://blog.caljacobson.com/2007/07/26/creating-a-plug-in-framework-in-c-resources/)

barnamenevisjavan
یک شنبه 22 بهمن 1391, 08:45 صبح
پست منو با دقت بخونید:من قبلش گفتم رایگان نیست تبلیغ هم نمیکنم.

RED-C0DE
یک شنبه 22 بهمن 1391, 10:28 صبح
پست منو با دقت بخونید:من قبلش گفتم رایگان نیست تبلیغ هم نمیکنم.

OT:
اینجا ی محیط آزاده (از لحاظ یادگیری و یاد دادن) و شما با این کار دقیقا دارین سو استفاده و تبلیغ سایت خودتون رو می کنین و از وضع موجود ب نفع خودتون بهره می برین.
چطوره برین تو جاهایی ک واسه تبلیغ گذاشتن اینکارو انجام بدین

behnam_bwg
دوشنبه 15 مهر 1392, 13:17 عصر
سلام .....من یه پیشنهاد دارم که اگه استفاده کنید نتیجه بدی نداره.....
شما کارهای زیادی متونید برای آپدیت انجام بدید که یک روش رو من میگم, اگه مشکلی داشت یه روش دیگه رو اگه بلد بودم بهت پیشنهاد میکنم.....

اگر نرم افزار شما dtabase sql داره:
1.شما یه windows app جدید وساده طراحی کنید که کار های زیر رو برای update انجام بده(البته میتونید این امکان رو توی برنامتون بزارید که update کنه ولی باید یه آدرس سایتی رو مشخص کنید که فقط تو اون آدرس فایل update تون رو قرار بدید )

2. شما تو برنامه ای که ایجاد کردید یه قطعه کد یا ماژول یا هر چیزی که بشه از بانک sql تون بک آپ بگیرید رو بزارید. حالا یه سوال پیش میاد که بانک نرم افزار رو چطوری پیدا کنم و ازش بک آپ بگیرم, تازه برای فرایند بک آپ من باید یه sqlconnection با یه آدرس مشخص تعیین کنم...
تعریف کانکشن sql کار نداره فقط کافیه شما از کانکشن استرینگ sql که باهاش کار میکنید تو این برنامتون کپی پیست کنید فقط برای پیدا کردنش نام بانک مورد نظر کافیه از :
Application.StartUpPath+"\\dbfolder\\dbfile"
استفاده کنی یعنی قبل از بک آپ گرفتن این عمل رو انجام بدی...برای اینک بانکی که میخواید اطلاعاتش رو حفظ کنید بعد برنامتون رو update کنید که اطلاعات بانک از دست نره باید موقع اجرای عمل update ازتون درخواست انتخاب فایل db کنه...که برای این عمل هم کافیه به محل نصب نرم افزار برید و بانکش رو انتخاب کنید...پس از انتخاب بانک هم به برنامه این امکان رو اضافه کنید که از اون فایل بانک یه کپی بگیره بزار تو قسمت root نرم افزار یا همون روش application.startupath ..منظورم نرم افزاره آپدیته...بعد برای گرفتن بک آپ وارد مرحله بعد برای آپدیت بشه....البته بزارید بک آپ رو سعی کنید تو درایو c بزاره بعد از همونجا هم بتونه بازیابی یا ریستور کنه...
2. تغییراتی که شما تو نرمافزارتون دادید و میخواهید اونو به عنوان update قرار بدید کافیه که فایل exe برنامه رو به همراه database (اگر database تون تو پوشه بود به همراه پوشش کپی کنید)(اگر dll ای یا فایلی به برنامه اضافه کردید رو به همراه فایل exe)رو کپی بگیرید به همراه برنامه update تون بریزید تو یه پوشه ....تا موقع زدن دکمه آپدیت نرم افزار update تون این فایل هارو تو پوشه نرم افزاری که کاربر درسیستمش موجود بوده کپی کنه.برای اینکه کپی کنه کافیه که آدرس محل directory برنامه رو از کاربر بگیره تا فایل هارو ببره اونجا کپی کنه...شما برای اینکه مطمئن شید تو محل مورد نظر یا برنامه ای که میخواید آپدیت شه کپی کنه , کافیه یه دستور شرطی بنویسید که کنترل کنه که اگر فایل exe ای با این نام تو نرم افزار موجود بود عمل کپی رو با موفقیت انجام بده...

3.بعد از اینکه عمل کپی تون تموم شد کافیه آدرس db نرم افزار نصب شده تو سیستم کاربر رو از طریق همین فرایند کپی دریافت کنید و در قسمت connenction string مربوط به عمل ریستور database قرار بدید..بعد از اینکه ریستور گرفت نرم افزارتون Update میشه.......

فقط قبل از عملیات update برنامتون رو حتما ببندید...از پروژه update یه setup تهیه کنید و تو اینترنت بزارید...یا اگه دوست داشتید تو قسمت root پروژتون برید و فایل هاتون رو بردارید بریزید تو یه پوشه بعد تو اینترنت قرار بدید..

این روش ساده بود ولی راه های خیلی ساده تر و بهتری هم وجود داره....