# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET > حرفه ای: ایجاد یک برنامه که با اینترنت بتوان آن را آپدیت کرد ؟

## milad.biroonvand

سلام

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

اینکار به چه صورت انجام می شود ؟

----------


## ArashRoshan

سلام من هم خیلی دنبال این مورد بودم  :گریه: !!!!!

جواب رو پیدا کردم ولی نسبتا سخت می شه انجامش داد : 

اول باید یک فایل txt یا ini  یا xml یا هرچیز دیگه برای ورژن برنامه بسازی ، مثلا بنویسی : Version = 2
بعد باید هر دفعه این فایل رو از اینترنت دانلود کنی ببینی آیا ورژن فایل دانلودی از ورژن کنونی بشتر یا نه اگه بیشتر بود روشهای آپدیت به شرح زیر است :

*روش اول : (روشی خوب برای برنامه های کم حجم مثلا زیر 50 مگابایت )*

باید کل برنامه رو از اینترنت دانلود کنی و  بجای برنامه کنونی جایگزین کنی .

*روش دوم :(جالب ترین روش )*
برنامت Plugin Based باشه یعنی بتونه پلاگین لود کنه .
باید هر قسمت برنامت رو به صورت یک پلاگین بنویسی که هر قسمت رو از یک فایل که مثلا در پوشه ی Plugins قرار داره لود کنی . بعد این پوشه Plugins  رو هر دفعه آپدیت کنی و جایگزین کنی ، مثلا می تونی یک منو اضافه کنی به برنامت .

*روش سه :( بهترین روش ولی سخت)* 

از تکنولوژی بسیار پیچیده ی  clickonce deployment  استفاده کنی . من این روش رو  بهت پیشنهاد می کنم که نه جایگزینی کل برنامه و نه پلاگین سازی می خواد ولی سخته ، طرز کارش هم اینه که هردفعه فقط یک قسمت از برنامتو عوض میکنه مثلا همون یک دکمه . اگه می خوای یاد بگیری باید بری تو Google سرچ کنی و منبع فارسی هم نداره !! تازه فکر کنم خود انگلیس زبان ها هم سر در نمیارن چون برنامه sample ندیدم !! :لبخند:

----------


## oliya24

من هم یه مدت تو این موضوع در گیر بودم و به همین تگنولوزی رسیدم

----------


## Mani_rf

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

----------


## milad.biroonvand

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


ظاهر فرم ها ، چی ، ظاهر فرم ها هم باید بصورت یک فایل دی ال ال باشه ؟ ما که تمام کدهایی که می نویسیم ، تو یه فایل exe خلاصه می شه ، پس چجور می تونیم اینکار و بکنیم .

----------


## ArashRoshan

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


ممنون از آقای Mani_rf .  ولی آیا خودتون امتحان کردید ؟ 
من امتحان کردم و Dll رو عوض کردم ولی نشد . البته شاید اشتباه می کنم .




> ظاهر فرم ها ، چی ، ظاهر فرم ها هم باید بصورت یک فایل دی ال ال باشه ؟ ما که تمام کدهایی که می نویسیم ، تو یه فایل exe خلاصه می شه ، پس چجور می تونیم اینکار و بکنیم .


و اما در این مورد که بسیار جالب است :

شما میتوانید یک فرم لود کننده درست کنی !!! که می تونه حتی فرم خالی باشه یا به به عنوان splash ازش استفاده کنی !!! 
*1 -* به این صورت که یک پروژه معمولی درست می کنی  به عنوان اجرا کننده !
*2 -* یک پروژه ی Class  به برنامت اضافه می کنی به عنوان فرم اصلی !!  یه وقت نگی <این که کلاسه ، فرم نیست .> وایسا الان می گم .
*3 -* می ری داخل کلاست و این کد رو بهش اضافه می کنی :
Inherits System.Windows.Forms.Form
*4 -* اگه نشناخت باید بری داخل refrence های برنامت اونجا System.windows رو به برنامت اضافه کنی !!
*5 -* جالب ترین جا همین جاست ، اگه دقت کنی کلاست تبدیل میشه به فرم و می تونی توش همون کارهای دکمه و لیبل و تکست باک و .... که تو فرم انجام می دادی رو انجام بدی !!!
*6 -* حالا خیلی جالبه که بدونی دیگه فرم اصلی با پسوند exe ذخیره نمی شه و پسوندش dll هست !!!!!!!
*7 -* حالا برگرد به فرم لود کنندت و موقع لود شدن بگو فرم اصلی برنامت رو اجرا کنه !!! حالا می تونی به روش آقای Mani_rf (البته اگه می شه) برنامت رو با عوض کردن Dll تغییر بدی .

----------


## milad.biroonvand

> ممنون از آقای Mani_rf .  ولی آیا خودتون امتحان کردید ؟ 
> من امتحان کردم و Dll رو عوض کردم ولی نشد . البته شاید اشتباه می کنم .
> 
> 
> 
> و اما در این مورد که بسیار جالب است :
> 
> شما میتوانید یک فرم لود کننده درست کنی !!! که می تونه حتی فرم خالی باشه یا به به عنوان splash ازش استفاده کنی !!! 
> *1 -* به این صورت که یک پروژه معمولی درست می کنی  به عنوان اجرا کننده !
> ...


سلام

اگه میتونی  یک نمونه برنامه رو سایت بزار که همه بتونیم ، ازش استفاده کینم ، یا یه قسمتی ازش رو بزار تا من ، سایر قسمتهاشو تو یه هاست آپلود کنم ، و بتونه برنامه ی مثلا نسخه ی 1 به نسخه 2 آپدیت بشه .  

موفق باشی

----------


## oliya24

سلام من یکم گشتم و به یه برنامه رسیدم لینکش رو میزارم برای دانلود اما لطف کنید اگر وقت کردید برنامه رو تجزیه و تحلیل کنید همینجا یه اموزش ازش بزارید شرمنده این درخواست رو دارم اینم لینک
http://www.persianupload.com/2863076

----------


## milad.biroonvand

> سلام من یکم گشتم و به یه برنامه رسیدم لینکش رو میزارم برای دانلود اما لطف کنید اگر وقت کردید برنامه رو تجزیه و تحلیل کنید همینجا یه اموزش ازش بزارید شرمنده این درخواست رو دارم اینم لینک
> http://www.persianupload.com/2863076


سلام

مر30 از لینکت ، بله حتما  .

----------


## milad.biroonvand

> سلام من یکم گشتم و به یه برنامه رسیدم لینکش رو میزارم برای دانلود اما لطف کنید اگر وقت کردید برنامه رو تجزیه و تحلیل کنید همینجا یه اموزش ازش بزارید شرمنده این درخواست رو دارم اینم لینک
> http://www.persianupload.com/2863076



دوست عزیز اگه میتونی ، سایتی که این برنامه رو گذاشته هم همینجا بزار  .

----------


## oliya24

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

----------


## oliya24

سلام و خسته نباشید من یه لینک گیر اوردم خودم روش کار میکنم اما خواهش میکنم شما هم کار کنید چون همش انگلیسیه و من هم زیاد ترجمه بلد نیستم ok پس از دوستان تقاضا میکنم ما رو یاری کنن 
http://msdn.microsoft.com/en-us/library/ms404263.aspx
ترجمه صفحه اول زیاد مشکل نیست ولی همین لینک لینکهای دیگه ای هم داره که خیلی میتونه به ما کمک کنه پس بازم تقاضا دارم کمک کنیدتا قضیه این کار رو حل کنیم

----------


## milad.biroonvand

> سلام و خسته نباشید من یه لینک گیر اوردم خودم روش کار میکنم اما خواهش میکنم شما هم کار کنید چون همش انگلیسیه و من هم زیاد ترجمه بلد نیستم ok پس از دوستان تقاضا میکنم ما رو یاری کنن 
> http://msdn.microsoft.com/en-us/library/ms404263.aspx
> ترجمه صفحه اول زیاد مشکل نیست ولی همین لینک لینکهای دیگه ای هم داره که خیلی میتونه به ما کمک کنه پس بازم تقاضا دارم کمک کنیدتا قضیه این کار رو حل کنیم


سلام

تا میتونم رو این قضیه کار می کنم ،

بازم ازت بابت تلاش هایی که میکشی تشکر می کنم . 

موفق باشی

----------


## oliya24

سلام اقا من با یکی از دوستانم در این مورد صحبت کردم گفت که من این کار رو با تکنولوژی click once انجام دادم ولی گفت اگر بخواهی کمکت کنم که این کار رو به صورت عملی انجام بدی باید یه سرور بگیری که مثلا اگر خواستی یه فایل رو به برنامه اضافه کنی و بعد برنامت رو اپدیت کنی اون فایل رو میزاری تو سرور و بعد برنامه هم اون رو برمیداره حالا من خودم دنبال یه سرور هستم باید ببینم دوستام بم میدن یا نه ؟؟؟؟

----------


## ArashRoshan

خب درسته ، از کارتون ممنون . ولی خب هر آپدیتی از سرور انجام میشه(درسته !) . میتونی از سرور های رایگان DropBox یا احتمالا از Microsoft Skydrive استفاده کنی . هر دو رایگانند ، 
من در اسرع وقت آموزش ClickOnce رو قرار میدم .

----------


## oliya24

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

----------


## milad.biroonvand

> سلام اقا من با یکی از دوستانم در این مورد صحبت کردم گفت که من این کار رو با تکنولوژی click once انجام دادم ولی گفت اگر بخواهی کمکت کنم که این کار رو به صورت عملی انجام بدی باید یه سرور بگیری که مثلا اگر خواستی یه فایل رو به برنامه اضافه کنی و بعد برنامت رو اپدیت کنی اون فایل رو میزاری تو سرور و بعد برنامه هم اون رو برمیداره حالا من خودم دنبال یه سرور هستم باید ببینم دوستام بم میدن یا نه ؟؟؟؟


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

----------


## ArashRoshan

سلام
من با استفاده از یک مقاله که از اینترنت گرفتم تونستم ، برنامه ی آپدیت شونده بسیار راحت درست کنم :
این روش به دو صورت قابل پیاده سازی است  :

*1 - به صورت اتوماتیک از طریق خود برنامه .*
*2 - به صورت دستی و با استفاده از کد .*

گزینه 2 بهتره چون می تونید UI (قیافه ی آپدیت کننده ) اون رو خودتون بسازید و سختره خوب و احتیاج به کد نویسی داره ، ولی گزینه 1 همه  کار رو خود برنامه انجام می ده  .

آدرس مقاله 
http://weblogs.asp.net/shahar/archiv...lications.aspx

مقاله به صورت تصویری هستش و شما به راحتی می تونید این کار رو انجام بدید .

----------


## oliya24

این لینک خرابه برادر میشه تجربیاتت رو اینجا فارسی به ما یاد بدی فکر میکنم یه ملت رو با این کارت مدیونت میکنی؟؟؟لطفا این کار رو بکن خواهش میکنم

----------


## milad.biroonvand

> سلام
> من با استفاده از یک مقاله که از اینترنت گرفتم تونستم ، برنامه ی آپدیت شونده بسیار راحت درست کنم :
> این روش به دو صورت قابل پیاده سازی است :
> 
> *1 - به صورت اتوماتیک از طریق خود برنامه .*
> *2 - به صورت دستی و با استفاده از کد .*
> 
> گزینه 2 بهتره چون می تونید UI (قیافه ی آپدیت کننده ) اون رو خودتون بسازید و سختره خوب و احتیاج به کد نویسی داره ، ولی گزینه 1 همه کار رو خود برنامه انجام می ده .
> 
> ...


سلام

لینک خرابه  ، اگه میشه لینک درستش بزار ، ببینیم چیه 

مر30

----------


## ArashRoshan

سلام
هرچی توی اون سایت هستش رو ترجمه کردم : بفرمایید :
البته شاید از نگارشم خوشتون نیاد ولی خوب هم ترجمه است و ه م سریع نوشتم ، به بزرگی خودتون ببخشید .
توی این مقاله چگونگی انجام یک پروژه ی Clickonce به صورتی بسیار ساده گفته شده است .

http://www.4shared.com/document/9tc8...Clickonce.html

----------


## mansourii

من حیرون موندم !

چرا انقدر کار خودتون رو سخت می کنید / این کارها که نمیخواد انجام بدید
اینکاری رو که من میگم انجام بدید 100 در 100 کار میکنه (خودم از این روش  استفاده میکنم)

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

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


تنها و تنها کاربرد اف تی پی:
مثلا شما برای یک شرکت یک نرم افزار تولید می کنید و در عوض سه فقره چک بهتون میده /اگه چکش پاس نشد میتونید از طریق اف تی پی کل نرم افزارتون رو Disable کنید (این روش تنها موقعی کاربرد داره که طرف به اینترنت یا اینترانت وصل باشه - اگه به اینترنت وصل نبود باید برای نرم افزارتون وقت تعیین کنید تا تاریخ چک ها بیشتر کار نکنه و ازش ریجستر بخواد)

چون فکر میکنم نیازه (وقتی شرکت رفتم براتون sample می زارم)

----------


## oliya24

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

----------


## ArashRoshan

> من حیرون موندم !
> 
> چرا انقدر کار خودتون رو سخت می کنید / این کارها که نمیخواد انجام بدید
> اینکاری رو که من میگم انجام بدید 100 در 100 کار میکنه (خودم از این روش  استفاده میکنم)
> 
> اول باید یک هاست و دامنه برای خودتون بخرید بعد از طریق FTP به نرم افزارتون دسترسی پیدا کنید
> یعنی اف تی پی شما میشه پدر و نرم افزار شما میشه فرزند ( اینها همش توی سرور هست ها- یعنی پدر و پسر هر دو سرور اند)
> 
> فقط توی نرم افزارتون یک متغییر بولی تعریف کنید که هر دفعه نرم افزار لود میشه بره چک کنه که اگه یک بود بره از اف تی پی شما تغییرات نرم افزار رو اعمال کنه مثلا مسیج باکس های جدید بزاره یا مثلا کلا عوض بشه! و اگر هم صفر بود یعنی تغییری ایجاد نشده و نرم افزار بصورت قبلی بالا بیاد
> ...


آقا فکر کن یه برنامه نوشتی 20MB حجمشه ، می خوای همشو هر دفعه دانلود کنی ! اگه این طور نیست ، بگو چطور مسیج باکس های جدید اضافه کنیم ؟ منظورم اینه که هردفعه برای مسیج باکس های جدید باید کل برنامه عوض بشه ، درست میگم ؟ اگر هم منظورتون اینه که DLL بسازیم و کنار برنامه بذاریم ،  درسته ، شاید بشه (برای من نشد)  ولی خب یک دفعه خواستی  یه متغیر به برنامه اضافه کنی ، خب حالا چکار میکنی ؟ ولی ClickOnce دقیقا همون یک متغیر رو اضافه میکنه .


_ولی آقای الیا24 ، چرا خنده دار ؟ سوال جالبیه اتفاقا ، لطفا هیچ جا این طور نگید و لطفا این خط رو حذفش کنید ، به همه میگم ،  ما این جا برای کمک و افزایش دانش اومدیم ._

من راه حلی برای مشکل شما دارم :

می تونی یک Ftp برای فقط این برنامه بسازید. یعنی خصوصی سازی انجام بدید . و هر آپدیت این برنامه رو داخل این FTP بذاری . واضح تر اینکه یک FTP برای یک برنامه .

ولی باز هم تحقیق می کنم و اطلاعات بیشتری بهتون میدم .

----------


## milad.biroonvand

> آقا فکر کن یه برنامه نوشتی 20MB حجمشه ، می خوای همشو هر دفعه دانلود کنی ! اگه این طور نیست ، بگو چطور مسیج باکس های جدید اضافه کنیم ؟ منظورم اینه که هردفعه برای مسیج باکس های جدید باید کل برنامه عوض بشه ، درست میگم ؟ اگر هم منظورتون اینه که DLL بسازیم و کنار برنامه بذاریم ،  درسته ، شاید بشه (برای من نشد)  ولی خب یک دفعه خواستی  یه متغیر به برنامه اضافه کنی ، خب حالا چکار میکنی ؟ ولی ClickOnce دقیقا همون یک متغیر رو اضافه میکنه .
> 
> 
> _ولی آقای الیا24 ، چرا خنده دار ؟ سوال جالبیه اتفاقا ، لطفا هیچ جا این طور نگید و لطفا این خط رو حذفش کنید ، به همه میگم ،  ما این جا برای کمک و افزایش دانش اومدیم ._
> 
> من راه حلی برای مشکل شما دارم :
> 
> می تونی یک Ftp برای فقط این برنامه بسازید. یعنی خصوصی سازی انجام بدید . و هر آپدیت این برنامه رو داخل این FTP بذاری . واضح تر اینکه یک FTP برای یک برنامه .
> 
> ولی باز هم تحقیق می کنم و اطلاعات بیشتری بهتون میدم .




سلام

مر30 ، مطالبتون خیلی خوب بود منتظر توضیحات بیشتر و نمونه هاتون هستیم .

موفق باشید

----------


## milad.biroonvand

سلام

لطفا نزارید تاپیک بخوابه و ایده های جدید بدید .

----------


## sadeghlinux

با سلام

من قبلا تو فکرم بود اما نمیدونستم از کجا باید شروع کنم ، تو همین تاپیک با این قضیه آشنا شدم
ممنون از همه دوستان خوب

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

----------


## milad.biroonvand

> با سلام
> 
> من قبلا تو فکرم بود اما نمیدونستم از کجا باید شروع کنم ، تو همین تاپیک با این قضیه آشنا شدم
> ممنون از همه دوستان خوب
> 
> لطفا همه با هم تلاش بکنیم که یه تاپیک خوب بسازیم و هرکی میاد این تاپیکو دنبال میکنه دست پر بیرون بره


سلام

بله حتما ، سایر دوستان هم تلاش کنند .

----------


## oliya24

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

----------


## mehrdad1991h

پس از جستجوی فراوان بالاخره این تاپیک پیدا شد
همه جا اخرش ختم شده به همون Clickonce من روش کار کردم یکم پیچیدس ولی در نهایت نتونستم هنوز اجراییش کنم :گریه: 

به نظر من اگه اقای *mansourii بر میگشتند و حداقل یه نمونه که قولش را داده بودن میزاشتن عالی میشد
روشی که گفتن هم خیلی خوبه فقط نیازمند یه نمونه هستیم تا اجرا کنیم ببینیم چوریه

یکی به نظرتون بهتر نیس خبرشون کنه ؟(یه پی ام ارسال کردم براشون

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

----------


## milad.biroonvand

من با دی ال ال تونستم یه مقدار پیش برم ولی کار جالب در نمیاد  ،

----------


## alimanam

با سلام

ای بابا یعنی حل این قضیه اینقدر سخت بود !!!؟ خوب یه تابع می نوشتین یه فایل که تو هاست شماست رو چک میکرد اگه مقدارش 1 بود یعنی آپدیت نیازه و اطلاعات مربوط به آپدیت رو هم در اون فایل می نوشتین و علی آخر ...  من یه سورس کوچولو نوشتم دوستان می تونین تکمیل ترش کنن .

موفق باشید ./

----------


## milad.biroonvand

با تشکر از فایل شما . 

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

مر30

----------


## alimanam

با سلام




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


در این باره شما میتونی از روش های متعدد و ابتکاری خودت استفاده کنی واین تعدد روش بر میگرده به نوع برنامه نویسی شما به طور مثال اگه برنامه شما از پلاگین استفاده میکنه میتونی با دانلود فایل های مورد نیاز و معرفی اونها به برنامه خودت اون رو آپدیت کنی یا اگه کل برنامه تغییر کرده میشه با دانلود نسخه جدید و جایگزین کردن برنامه جدید با قبلی اون رو آپدیت کنی . در ضمن اون مثالی که من زدم در تمامی این روش ها کاربرد داره یعنی اینکه هر روشی رو بخوای بری باید قبلش چک کنی که آیا اصلا نسخه جدیدی ( فایل آپدیت جدیدی ) موجود هست که بخوایم ادامه کار رو انجام بدیم یا نه !
دوستان کمی وقت بزارن میتونن کاملش کنن خودم در *یکی از برنامه های خودم* البته با کمی تغییرات دارم از همین روش برنامه رو آپدیت میکنم .

موفق باشید ./

----------


## milad.biroonvand

سلام

کسی از دوستان نتونست ابتکاری در این باره بده . ، ما منتظریم .

----------


## mohamnag

سلام
نمی دونم الان برای جواب دادن دیره یا نه اما من یه سرچ ساده توی اینترنت کردم و نتیجه ش این بود:
1. کلیک وانس به درد منظور شما نمی خوره چون برنامه باید از روی یک سرور نصب بشه و بعدا امکان عوض کردن آدرسی که برنامه ازش نسب شده وجود نداره. عملا برنامه فقط از وب اجرا میشه و روی کامپیوتر طرف کش میشه. مشکل دیگه کلیک وانس اینه که برنامه برای کاربر جاری نصب میشه نه برای کل ماشین، این نتیجه اش اینه که اگر کامپیوتر مورد نظر توسط بیش از یک کاربر استفاده بشه باید برای هر کاربر یه نسخه نصب بشه و هر کاربر باید جدا آپدیت کنه و . .. 
2. راه حل دومی که پیدا کردم استفاده از سیستم آپدیت ویندوزه، این البته احتمالا مشکلات خودش رو داره. چون نسخه ویندوز اکس پی که الان روی بیش از 40 درصد کامپیوتر های کاربرها نصبه این سیستم رو نداره. از طرف دیگه هم شما باید سرور مخصوص خودتون رو داشته باشید که نرم افزار خاصی (یه سرور ویژه) باید روش نصب باشه و . .. خلاصه اینکه هزینه اش اینقدر هست که اگر تعداد بالا نباشه نمی ارزه.
3. راه حل بهتری که پیدا کردم استفاده ازاین کامپاننت دات نت هست. البته این به زبان سی شارپ نوشته شده اما فکر نکنم مشکلی برای استفاده با وی بی داشته باشه: http://wyday.com/wyupdate/

من به شخصه متاسفانه مشکل زمانی دارم که بیشتر توی این قضیه دقیق بشم اما فکر می کنم راه حل هایی که ارائه شده تو این لینک خیلی جامع باشن:
http://stackoverflow.com/questions/2...once-all-users

----------


## milad.biroonvand

> سلام
> نمی دونم الان برای جواب دادن دیره یا نه اما من یه سرچ ساده توی اینترنت کردم و نتیجه ش این بود:
> 1. کلیک وانس به درد منظور شما نمی خوره چون برنامه باید از روی یک سرور نصب بشه و بعدا امکان عوض کردن آدرسی که برنامه ازش نسب شده وجود نداره. عملا برنامه فقط از وب اجرا میشه و روی کامپیوتر طرف کش میشه. مشکل دیگه کلیک وانس اینه که برنامه برای کاربر جاری نصب میشه نه برای کل ماشین، این نتیجه اش اینه که اگر کامپیوتر مورد نظر توسط بیش از یک کاربر استفاده بشه باید برای هر کاربر یه نسخه نصب بشه و هر کاربر باید جدا آپدیت کنه و . .. 
> 2. راه حل دومی که پیدا کردم استفاده از سیستم آپدیت ویندوزه، این البته احتمالا مشکلات خودش رو داره. چون نسخه ویندوز اکس پی که الان روی بیش از 40 درصد کامپیوتر های کاربرها نصبه این سیستم رو نداره. از طرف دیگه هم شما باید سرور مخصوص خودتون رو داشته باشید که نرم افزار خاصی (یه سرور ویژه) باید روش نصب باشه و . .. خلاصه اینکه هزینه اش اینقدر هست که اگر تعداد بالا نباشه نمی ارزه.
> 3. راه حل بهتری که پیدا کردم استفاده ازاین کامپاننت دات نت هست. البته این به زبان سی شارپ نوشته شده اما فکر نکنم مشکلی برای استفاده با وی بی داشته باشه: http://wyday.com/wyupdate/
> 
> من به شخصه متاسفانه مشکل زمانی دارم که بیشتر توی این قضیه دقیق بشم اما فکر می کنم راه حل هایی که ارائه شده تو این لینک خیلی جامع باشن:
> http://stackoverflow.com/questions/2...once-all-users


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

----------


## mohamnag

باز هم سلام
همون طور که عرض کردم متاسفانه فرصت زدن مثال ندارم، چون خودم هم با این سیستم ها کار نکردم اما با سرچ تو اینترنت واقعا بینهایت راه حل پیدا می کنید:
اینم یه مقاله دیگه که از یه کامپاننت از خود مایکروسافت استفاده کرده: http://windowsclient.net/articles/appupdater.aspx
اگر اینها به دردتون نخورد به سرچ من تو گوگل نگاه کنید و دنبال راه حل مناسب خودتون باشید:
http://www.google.at/search?gcx=w&so...et+application

----------


## milad.biroonvand

> باز هم سلام
> همون طور که عرض کردم متاسفانه فرصت زدن مثال ندارم، چون خودم هم با این سیستم ها کار نکردم اما با سرچ تو اینترنت واقعا بینهایت راه حل پیدا می کنید:
> اینم یه مقاله دیگه که از یه کامپاننت از خود مایکروسافت استفاده کرده: http://windowsclient.net/articles/appupdater.aspx
> اگر اینها به دردتون نخورد به سرچ من تو گوگل نگاه کنید و دنبال راه حل مناسب خودتون باشید:
> http://www.google.at/search?gcx=w&so...et+application


سلام
مر30 ، این خیلی مطلب جالبی بود ، می خونمش اگه بکار اومد یه مثال ازش درست می کنم ، می زارم رو سایت ، ببینم چطوره ،

----------


## mmohammadian72

سلام یه مقاله فارسی در مورد publish هست که می تونه کمکتون کنه.http://www.itnee.com/Article.aspx#Publish

----------


## pcdownload.bloghaa.com

من معمولترین روشش را بهتون میگم.انتخاب با خودتونه.

برنامه های درست و حسابی شرکت هایی مثل موزیلا یا ادوبی یا مایروسافت یا ... هیچ وقت نمیان کل برنامه را در یک فایل exe بریزن و تمام!

برنامه ما از چند قسمت اصلی تشکیل میشه: فرم ها و توابع و رویداد ها و متغیر ها و ....

معمولا میان هر یک ازین قسمت ها در یک فایل dll قرار میدن. تمام فرم ها هم داخل یک dll طراحی میشن یا هر فرم در یک dll(خیلی هم راحته).
بعد وقتی برنامه اجرا شد.میاد مثلا تابع start را از داخل dll فرم ها فراخوانی میکنه.تابع start هم توش مثلا form1.show() نوشته میشه و تمام.
بقیه dll هام به همین ترتیب.
بعد هنگام آپدیت هر یک از dll ها که لازم شد آپدیت میشه.
تو شرکت های بزرگ این بهترین روش هست.چون با تعیین عملکرد هر dll هر یک از dll ها به یک گروه برنامه نویسی سپرده میشه و حاصل یه چیز قوی در میاد.اما اگه این کارو نکنن همه میره تو یک قسمت برنامه کار میکنه و آخرش کلی خطا  و ارور پیش میاد.

اما راحتترین روش
یک روش دیگه هم اینه که از روی هاست چک کنه اگه ورژن جدید اومده بود اونو دانلود و اجرا کنه و خودش خارج بشه.ورژن جدید هم میاد نصب میشه رو قدیمی و تمام.در ضمن معمولا یه فایل exe خالی 20 مگابایت نمیشه.ممکنه همراه با فایلهای کناریش 20 مگا یا بیشتر بشه که میتونین تو نصاب ورژن جدید کاری کنید که فقط exe عوض بشه.همین.

یه ذره حوصله و وقت بزارین حله.

----------


## omid5ive

سلام
نميدونم جايي كه دارم مشكلم رو مطرح مي كنم درست هست يا بايد تو يه تاپيك ديژه مطرحش مي كردم
من 1 پكيج دارم كه شامل 2 تا فايل هست
1- يك فايل با فرمت qvw
2- فايل ديگر exe
من مي خوام برنامه رو از طريق clickonce بر روي كلاينت ها نصب كنم. براي ساخت clickonce هم از mage  استفاده مي كنم
وقتي با mageui كار مي كنم هيچ مشكلي ندارم ولي وقتي مي خوام با mage.exe و از طريق command باهاش كار كنم به مشكل مي خورم
مشكل هم اضافه كردن پسوند .deploy به فايل ها هست كه مثل اينكه تو mage در حالت command پارامتري نداره (يا من بلد نيستم)
حالا مي خواستم بدونم راحي وجود داره كه بتونم اين مشكل رو حل كنم؟
command هايي هم كه براي اين كار استفاده مكنم به اين شكل هست:
application:     mage -New Application -ToFile dashboard.exe
.manifest -name "dashboard" -Version 1.0.0.1 -FromDirectory C:\Inetpub\wwwroot\D
ashboard\1.0.0.1 -S dashboard.exe.manifest -CertFile C:\Users\ebrahimi.BARIDSOFT
\Desktop\Clickonce\setup.pfx -um true

Deployment : mage -New Deployment -Publisher "BaridBI" -ProviderUrl "http://155.155.5.100/dashboard/dashboard.application" -AppManifest C:\Inetpub\wwwroot\Dashboard\1.0.0.1\dashboard.exe  .manifest -ToFile c:\inetpub\wwwroot\dashboard\dashboard.applicatio
n

----------


## firoozi90

سلام دوستان
لطفا به این تایپیک یه سر بزنید و راهنمایی کنید
*Publish نرم افزار در لوکال و استفاده در سرور*

----------


## Navid Asadi

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

----------

