منتشر کردن برنامه های Visual stdio 2005
با سلام :
پس از اینکه برنامه های حاصل از mfc رو در ویژوال استدیو رو بخواهیم در کامپیوترهای دیگه هم منتشر کنیم دقیقا به چه چیزایی نیاز داریم ؟ اول بگید این سه dll کافیه ؟
MFC42.dll
MFCD42.dll
MSVCRT.dll
ضمنا dll ها و Activex ها رو در کامییوتر میزبان (target computer) چطور رجیستر کنم ؟ (بدون استفاده از regsvr32) .
و سه تا سوال دیگه ؟
فایلهایی رو که برنامه به اونها نیاز داره رو چطور آدرس دهی کنم ؟ یعنی در حقیقت میخوام این رو بدونم :
فرض کنیم چند تا فایل صوتی هستش که یک اکتیوایکس مثل mci32 قراره در برنامه اونها رو در صورت لزوم پخش کنه . . . آدرس فایلها رو در کامپیوتر میزبان چطور برای اکتیوایکسم مشخص کنم ؟
یکی از دوستانم میگفت که در کامپیوتر میزبان اگه در path سیستم فایلهای خودمون رو کپی کنیم مشکلی در آدرس دهی نخواهیم داشت (و همچنین استفاده از Environment Variables در قسمت Advanced در My computer ) . خوب . . . یک فایل نصبی چطور این مسیر رو پیدا میکنه ؟
در مورد static linking هم چیزایی شنیدم . آیا این روش رو توصیه میکنید ؟
و در آخر اینکه :
Bitmap ها و آیکنها هم نیاز به آدرس دهی دارند ؟ خوب فایل exe ما یه جورایی باینری شده . . . میخواستم بدونم آیا نیاز به آدرس دهی مجدد دارند ؟
با تشکر
منتشر کردن برنامه های Visual stdio 2008
من vc ورژن RTM 9.0.21022 را دارم .لطفا بگید کدام کدام فایل vcredist_x86 باید دانلود شود تا برنامه من
در target های دیگر اجرا شود ؟
از کجا بدانم سرویس پک نصب شده است یا نه ؟
و چگونه فایل مطابق با ورژن vc خودم را پیدا کنم ؟ سوال من این است : آیا برای ورژن های مختلف vc فایلهای متفاوت vcredist_x86 موجود است ؟
با جستجو در Microsoft (وهمچنین با کمک مدیر بخش) چند فایل را پیدا کردم که نصب آنها هم هیچ تاثیری ندارد.
یعنی این لینک ها (البته لینک sp1 را چک نکردم.)
link1
link2
البته به دیلیل داشتن اینترنت dialup قادر نیستم همه فایلها را تک تک دانلود کنم و همه آنها را تست کنم.
برای آزمایش از برنامه هایی که مدیر بخش در لینک (برنامه های کوچک و کاربردی ...) مثل این را به همراه دانلود و نصب بسته مورد نظر در VMvare اجرا کردم که در آنجا اجرا شدند. اما برای اجرای برنامه های mfc هنوز مشکل دارم.
لطفا راهنمایی بدید.
نقل قول: منتشر کردن برنامه های Visual stdio 2005
سرویس پک ها را باید خودتان جداگانه نصب کنید، پس اگر نکرده اید همان نسخه اصلی است.
در همان دیالوگ about نیز اگر نصب کرده باشید می نویسد که نسخه VC9 SP1 هست که برای شما نوشته نشده است پس همان معمولی است.
اما با هم نمی توان دقیق گفت که dll های شما چه نسخه ای است، ممکن است با windows update نسخه جدیدتر را گرفته باشید یا موارد مشابه. چرا که حتی تاریخ dll ها مهم است.
پس:
1) سعی کنید برای vcredist_x86 از Setup VC استفاده کنید تا vcredist_x86 رابا توجه به نسخه کاری VC برایتان بسازد (به صورت فایل جداگانه از setup.exe) و سپس از آن استفاده کنید. پس نیاز نیست از اینترنت دانلود کنید.
2) یا کلا برای انتشار setup بسازید
3) یا dll های مورد نیاز را از فولدر VC/redist کپی کنید کنار فایل اجرایی.
در هر حال از نسخه مناسب VC خودتان استفاده کنید و زیاد در اینترنت دنبال بسته نباشید.
نقل قول: منتشر کردن برنامه های Visual stdio 2008
سلام
با تشکر از شما
فايل vcredist_x86.exe را توسط vc ساختم اما باز هم در target اجرا نشد .در نهايت به صورت تصادفي مسئله اي به ذهنم رسيد که منجر شد بتوانم جواب بگيرم و اون چیزی بود که واقعا من نميدونستم :
فايل مورد نظر بايد در مد release کامپايل شود و نه در مد Debug
آیا شما این گفته را قبول دارید ؟ چون در برنامه ای که دارم و به دلیل استفاده از dll نمی توانم آن را بصورت Release کامپایل کنم . آیا در حالت دیباگ هم میتوان آن را منتشر کرد ؟
نقل قول: منتشر کردن برنامه های Visual stdio 2005
سوال عجیبی بود!
Debug فقط در سیستم هایی اجرا می شود که ++VC در آن نصب شده باشد و dll های مخصوص debug (که هم کندترند و هم سنگین تر) در آنجا نصب شده باشد.
همیشه وقتی کار debug برنامه تمام می شود باید برنامه را release کنید. debug ،نسخه کامپیوتر خودتان هست تا اشکالات احتمالی را برطرف کنیم. علاوه بر آن حجم فایل اجرایی در مد debug چند برابر حالت معمول است. برنامه بدون release برنامه نیست.
منظورتان را از "به دلیل استفاده از dll نمی توانم آن را بصورت Release کامپایل کنم" متوجه نشدم. فرق چندان خاصی بین آن دو در کامپایل وجود ندارد.
نقل قول: منتشر کردن برنامه های Visual stdio 2008
نقل قول:
منظورتان را از "به دلیل استفاده از dll نمی توانم آن را بصورت Release کامپایل کنم" متوجه نشدم. فرق چندان خاصی بین آن دو در کامپایل وجود ندارد.
موضوع دقیقا از این قرار است که در زیر میگم :
زمانی که تازه برنامه نویسی را شروع کرده بودم ، بنده خدایی برای اینکه من بتوانم shamsi.dll را در برنامه ام صدا بزنم روش زیر را پیشنهاد کرد :
در این روش توسط CLR یک warrper برای آن ایجاد میشد که ترکیبی از ManagedCode و
UnmanagedCode است.
يعني
یعنی Common Language Runtime Support را روی Common Language Runtime Support
(/clr)i
قرار مي گیرد.
و در ادامه dll را به صورت دستی از طریق منوی project و properties .... اضافه میکردم .
و با کدهایی نظیر
using namespace ShamsiDLL;
این dll کاملا کار میکرد.
واقعیتش من قبل از اینکه روش استفاده با vcredist_x86 را فرابگیرم اونها را به صورت static لینک میکردم .
ولی در این برنامه با توجه به شرایطی که گفتم نه برنامه static لینک میشه و نه با استفاده از vcredist_x86 .
حالا به نظر شما آیا این روش اشکال دارد و همچنین آیا راهی برای کامپایل برنامه به صورت قابل اجرا در target های دیگر وجود دارد ؟
نقل قول: منتشر کردن برنامه های Visual stdio 2005
shamsi یک dll از نوع شئی COM هست، من اگر جای شما بودن می رفتم به سراغ اینکه نحوه کار کردن با COM را در MFC یاد بگیرم و سپس آن را استفاده کنم. پروژه را هم به CLR تبدیل نمی کردم.
وقتی شما پروژه را به CLR تبدیل کردید، یعنی برنامه شما از Native خارج شده و باید NET Framework. را هم در سیستم هدف نصب کنید.
برای یک مثال
نقل قول: منتشر کردن برنامه های Visual stdio 2005
به دليل دشواري استفاده از COM از اين روش استفاده كردم .
به عنوان آخرين سوال :
آيا استفاده از CLR دليلي براي Relese نشدن پروژه است ؟ مي خواهم بدانم چرا با اين روش نه استاتيك كامپايل ميشود و نه Relese ميشود؟
با تشكر
نقل قول: منتشر کردن برنامه های Visual stdio 2005
شما در properties پروژه باید همانطور که در مد debug کتابخانه ها را به linker اضافه کردید و CLR را فعال کردید، در حالت انتخابی release نیز مجددا این اعمال را انجام دهید. هر کدام تنظیمات خودش را دارد.
نقل قول: منتشر کردن برنامه های Visual stdio 2005
دقیقا همون طوری که شما گفتید بود. و پروژه بصورت Relese هم کامپایل شد.
معذرت ، قرار بود پست قبلی سوال آخر باشه .در هر حال شما که همیشه به ما لطف دارید در صورت امکان به این چند سوال دیگر من هم اگر مقدور بود پاسخ دهید :
سوال 1 –
شما گفتید که برای اجرای clr به نصب دات نت فریم ورک در کامپیوتر Target نیاز داریم .الان در Add or Remove programsدر کنترل پنل من سه تا ورژن مختلف از دات نت فریم ورک نصب است شکل زیر :
http://tinypic.info/files/x90fcn68vtgwprkkz6m0.jpg
در کامیوتر میزبان کدام را نصب کنم ؟
ضمن اینکه درproperties پروژه من ورژن دو را مطابق شکل زیر دیدم .آیا همین نسخه مورد نیاز است ؟
http://tinypic.info/files/k3o931j8nlpgx0g7p98k.jpg
سوال 2 –
آیا این نسخه هم توسط vc باید ساخته شود ؟
من با توجه به شکل نسخه مورد نیاز را میسازم :
http://tinypic.info/files/x8nwgik8scquwu9dw3sk.jpg
پوشه ای به نام DotNetFX ساخته ميشود که حاوي چند فايل است .آیا روش فوق درست است و نیازی به اضافه کردن مورد دیگری نیست ؟
سوال 3 :
گاهی پیش می آید که از Activex ی به صورت تصادفی استفاده میکنم و مثلا برای نمایش یک عکس از آن بهره می برم (مثلا با دیدن کلمه image در نام آن اکتیوایکس ).سوالی که پیش می آید این است که خود آن Activex را چطور در سیستم پیدا کنم تا در کامپیوتر مقصد کپی و رجیستر کنم ؟ منظورم این است که در لیست اکتیوایکسها ما فقط اسم آنها را می بینیم از کجا بدانیم که هر اکتیوایکس با چه اسمی و در کجای سیستم ذخیره شده است ؟
با تشکر
نقل قول: منتشر کردن برنامه های Visual stdio 2005
1- دقیقا همان نسخه ای که در properties پروژه شما تعیین شده است و پروژه شما بر اساس آن کامپایل می شود، که برای شما .NET 2 است، پس همان را در setup اضافه کنید.
2- بله همین کار کافیست، فقط یک برنامه نویس خوب باید جدیدترین بسته .NET را از اینترنت دریافت کند. از طریق آن گزینه آبی با عنوان ...check Microsoft update for more می توانید به سایت اصلی رفته و جدید ترین بسته bootstrapper packages را برای .NET دانلود کنید تا امنیت و خطاها برای کاربر شما نیز برطرف شود (در حال حاضر جدید ترین نسخه بسته SP2 برای .NET 2 است)، اگر هم خیلی ضروری نیست از همان نسخه داخلی VC که تیک زدید استفاده کنید و دانلود نکنید.
3- دقیق نمی دانم، معمولا وقتی از چیزی استفاده می کنیم باید بدانیم از کجا نصب می شود، مثلا از flash باشد می دانیم که باید به کاربر بگوییم Flash را نصب کند، یا مثلا quick-time را، یا ....
نقل قول: منتشر کردن برنامه های Visual stdio 2005
درود
من تازه کار هستم و زیاد از اطلاعات این تاپیک سر در نیاوردم!!
اگه امکان داره یه توضیح ساده بدید!
میخوام کدهای C++ که با vs2010 نوشتم رو به برنامه نصبی یا فایل اجرایی تبدیل کنم(دیگه dll کپی نکنم)
نقل قول: منتشر کردن برنامه های Visual stdio 2005
سلام.
شما در منو Build در قسمت Configuration Manager باید حالت Release را انتخاب کنید و بعد بوسیله کلیدهای Ctrl+F5 خروجی برنامتون رو بگیرید. حالا بروید در فولدر پروژتون در فولدر Release فایل EXE برنامتون را بردارید و روی هر کامپیوتری که خواستید اجراش کنید.
موفق باشید.
نقل قول: منتشر کردن برنامه های Visual stdio 2005
سلام.
خوب دوست عزیز زودتر بگو می خوام Setup بسازم. بعد از اجرای Visual ، در منو File گزینه New و بعد New Project رو انتخاب کن در این پنجره که ظاهر می شه Other Project Types رو انتخاب بعد گزینه Setup and deployment را انتخاب کن حالا باید Setup project رو انتخاب کنی بعد از وارد کردن name و Location دکمه OK رو بزن.
حالا در قسمت Solution Explorer می توانی User Interface Editor را انتخاب کنی و مراحل نصب یه برنامه رو بوسیله Properties تغییر بدی و برای وارد کردن فایل های برنامت باید در همان قسمت قبلی File System Editor را انتخاب کنی که در اینجا مکان ها را به شما نشان می دهد( مثلاً دسکتاپ یا prgrams menu ) که تعیین می کنی برنامت در کجا ها کپی بشه. البته خیلی آسونه یکمی کار کنی یاد می گیری و من هم نمی تونم اینجا همه را برات توضیح بدم. اگه بازم به مشکلی برخوردی بپرس.
موفق باشی.
نقل قول: منتشر کردن برنامه های Visual stdio 2005
سلام
یک سوال در رابطه با کامپایل برنامه دارم.
خیلی از برنامه ها را دیده ام که برای اجرا شدن و حتی نصب شدن نیاز به نت فروم ورک دارند.
حالا سوال من اینه که می تونیم برنامه را به گونه ای منتشر کنیم که نیازی به نت فروم ورک نداشته باشه و کد هایی که ازش استفاده کرده به خود برنامه اضافه بشه؟
ممنون