PDA

View Full Version : فقط كپي فايل هاي dll كافي است؟



harimehamid
جمعه 29 اردیبهشت 1391, 22:44 عصر
باسلام

من توي يه برنامه از كامپوننت axWindowsMediaplayer.dll استفاده كردم.ميخوام بدونم براي اينكه در سيستم مقصد(با هر ويندوزي) با مشكلي موجه نشوم آيا فقط فايل dllرا كنار برنامه كپي كنم كافي است يا خير؟

البته در سايت جستجو كردم نوشته بود بايد با دستوراتي مثل regsvr32 رجيسترش كنيد يا با برنامه هاي ستاپ ساز نصبش كنيد.سوالم اينه كه اين دستور regsvr32 آيا فقط فايل Dll را در پوشه system32 كپي ميكند؟اگر فقط همين يك كار را انجام ميدهد پس ميتوانيم در هنگام لود برنامه ، خودمان به صورت دستي فايل dll مورد نظر را با استفاده از دستور file.copy در مسير system32 كپي نماييم درسته؟ممنون ميشم اگه خوب توضيح بدين كه دقيقا چه كاري انجام بدم كه روي هر ويندوزي جواب بده؟
پيپاپيش تشكر...

robat7
جمعه 29 اردیبهشت 1391, 22:52 عصر
بیشتر اوقات اگر dll را کنار فایل اجرایی برنامه ات کپی کنی مشکی نخواهی داشت.
ولی رجیستر کردن با کپی فایل در system32 فرق می کند مطمئن نیستم ولی فکر می کنم regsvr32 باید اطلاعاتی در رجیستری کامپیوتر بنویسد.

harimehamid
جمعه 29 اردیبهشت 1391, 23:48 عصر
ممنون از پاسختون ولي بحث سر همينه كه منم مطمئن نيستم كه عمل رجيستر كردن در واقع چه كاري رو انجام ميده!بازم اگه كسي راهنمايي كنه ممنون ميشم

فرید نجفلو
شنبه 30 اردیبهشت 1391, 00:28 صبح
سلام
اول در مورد خاص یعنی axWindowsMediaplayer.dll بگم چون اتفاقا همین یکی دو ساعت پیش باهاش کار کردم
من تو ویندوز 7 از کنترل باکس یک کنترل WindowsMediaPlayer وارد فرم و بعد از تنظیم و کمی کد نویسی تست کردم که درست کار کرد
بعد بدون هیچ تغییری همون پوشه debug رو تو ویندوز XP (دارای فریم ورک) اجرا کردم که باز هیچ مشکلی نداشت (فقط مدیا پلیر به نوع XP یعنی 10 تغییر کرد)
به اینم توجه کنید که من از 7 به XP بردم یعنی ممکنه برنامه های XP تو 7 اجرا بشه ولی برعکسش نه!

خوب در مورد وجه عام قضیه
شما در حالت کلی دو نوع Dll رو وارد می کنید دات نتی و غیر دات نتی (COM)
در مورد اول یعنی دات نتی شما با کپی کردن DLL ها به پوشه برنامه به هدفتون می رسید (مثلا با کمپوننت های پیشرفته ای مثل جانوس و دات نت بار هم اینطور رفتار میشه)

اما در مورد دوم
اگر از DLL هایی استفاده می کنید که به طور معمول بر روی ویندوز ها هستن مثل همین axWindowsMediaplayer.dll می شه گفت باز مشکلی نیست
ولی اگه از کمپوننت هایی استفاده می کنید که باید نصب بشن مثلا از جایی دانلود کردید باید اونا ریجستر بشن که ممکنه این کار دستی یا با کمک ابزار ستاپ سازی باشه

در مورد اینکه ریجستر کردن چه کاری انجام می ده در حالت کلی می تونم بگم که با این کار اون DLL به پوشه مخصوصی (معمولا در system32) قرار می گیره و اطلاعاتی از اون نیز تو ریجستری ویندوز ثبت می شه

البته در دات نت استفاده از نوع دوم و مخصوصا حالت سوم توصیه نمیشه

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