ورود

View Full Version : ساخت Package نصب کننده برای پروژه VC++6



Moharram
سه شنبه 11 دی 1386, 17:55 عصر
سلام

من یه پروژه VC++6 که بصورت Debug کامپایل شده و با استفاده از یک InstallShield یک Package برای اون ساختم، ولی وقتی Package رو در یه سیستم که VC نداره نصب میکنم، برنامه اجرا نمیشه (نه Error میده نه چیزه دیگه ای) ..... !!!!

در ضمت برنامه InstallShiled پروژه رو اسکن میکنه و میفهمه که با VC نوشته شده و یه سری DLL رو به Package اضافه میکنه و حتی یه ActiveX که استفاده کردم رو رجیستر میکنه ولی بازم اتفاقی نمی افته.

در ضمن من خودم با RegSvr32 اکتیو ایکس رو رجیستر میکنم و یه سری DLL به شرح زیر رو هم به Package اضافه کردم ....


CC3260MT.DLL
MFC40.DLL
MFC40U.DLL
MFC42.DLL
MFC42D.DLL
MFC42ENU.DLL
MFC42U.DLL
MFC71.DLL
MFC71U.DLL
MFCANS32.DLL
MFCD42D.DLL
MFCN42D.DLL
MFCO42D.DLL
MSVCIRT.DLL
MSVCIRTD.DLL
MSVCp60.DLL
MSVCP60D.DLL
stlpmt45.dll
rtl60.bpl
vcl60.bpl
vclx60.bpl
rtl.dcp
libcmtd.pdb
nafxcwd.pdb


در ضمن وقتی تو سیستم مقصد VC رو نصب میکنم همه چی درست میشه،،
بنظرتون تو Package فایلی از DLL های VC رو جا گذاشتم .....

منتظر جواب هاتون هستم.

Inprise
سه شنبه 11 دی 1386, 18:53 عصر
اوه ! تو نه تنها همه DLL هائی که نیاز بوده و احتمالا نبوده رو ضمیمه کردی حتی کتابخانه های بورلند رو هم بهشون اضافه کردی . این روش درستی نیست . اگر یکی از DLL های مورد نیازت وجود نداشته باشه یا حتی نسخهء مناسب رو نداشته باشی یا COM هات رجیستر نشده باشن خطائی دریافت میکنی که به وضوح مشخص میکنه مسئله چی هست . اجرا شدن و خطا نگرفتن قاعدتا ارتباطی به Dependency هات نمیتونه داشته باشه . اطلاعاتی که دادی برای اینکه لااقل من بتونم نتیجه ای بگیرم کافی نیست ، ولی بهر حال به محض اینکه یکی از روتینهای خارجی برنامه ات resolve نشن خطا میگیری . برای انتشار برنامه های MFC بهتره اول مستندات MSDN برای انتشار رو ببینی . معمولا در کل حداکثر چهار پنج تا DLL بیشتر نباید منتشر بشن و حتی کمتر ( CRT بسته به نسخه مورد استفاده و ران تایم MFC ) و اکتیواکسهات . قاعدتا مشکلت باید چیز دیگری باشه . یه راه خوب این هست که در چند نقطه کلیدی برنامه ات Assertion‌انجام بدی لاگ کنی یا خروجی روی پورت دیباگ بفرستی و با DebugView‌روی کامپیوتر جدید ببینی که روند اجرا کجا متوقف میشه . میتونی یک VM راه بندازی و Debug client خود Vmware رو که رایگان هم هست روی ویژوال استودیو نصب کنی و بصورت Remote و Dual Machine بلافاصله همزمان با اجرای برنامه ات روند اجرا رو دیباگ کنی . یه سری راه دیگه هم هست که قطعا خودت پیدا میکنی

Moharram
یک شنبه 12 اسفند 1386, 19:10 عصر
با تشکر از آقای Inprise

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

اگه ممکنه یه کم در مورد Debug کردن بصورت Remote توضیح بدهید....