ما هو الفرق بين التبعيات وإضافة dll/ocx يدويًا في مقابل المثبت 6؟

StackOverflow https://stackoverflow.com/questions/304685

سؤال

أنا أستخدم vs installer لإنشاء حزمة إعداد لتطبيق vb6 الخاص بي.والمشكلة هي أنني أستطيع أن أرى أنه ضمن مستكشف المشروع توجد قائمة بالتبعيات مرفقة بملف exe الخاص بي.

نص بديل http://img505.imageshack.us/img505/9696/croppercapture259lr8.png

وتحت نظام الملفات في Treeview بالجهاز المستهدف، يمكنني بالفعل تخزين ملف dll/ocx في مجلد أو في مجلد نظام Windows نفسه [النافذة اليسرى].

نص بديل http://img101.imageshack.us/img101/9224/croppercapture251qm1.png

لذلك ما لا أفهمه هو ..هل هناك فعلا فرق؟إذا قمت للتو بتعيين التبعيات ولم أقم بإضافة ملف dll أو ocx إلى المجلد أو مجلد win sys، فهل يتم نسخ ملف dll تلقائيًا أيضًا؟

هل كانت مفيدة؟

المحلول

ليس من المضمون أن جميع ملفات dll هذه ستكون موجودة على النظام الذي يتم تثبيت البرنامج عليه.لذلك يجب تضمينها في برنامج التثبيت الخاص بك.من هناك لديك خياران.

يمكنك تثبيتها في مجلدات نظام Windows لديك أو في مجلد التطبيق الخاص بك.الفرق هو أنه إذا قمت بتثبيتها في مجلد التطبيق الخاص بك، فيمكنك إعداد الأشياء على نظامي XP وVista بحيث يمكن تشغيل الإصدار المختلف من البرنامج مع إصدار مختلف من المكونات وتشغيله جنبًا إلى جنب.سيؤدي تثبيتها في مجلد النظام إلى كسر أي إصدار أقدم يعتمد على الإصدار الأقدم من المكونات.

نادرًا ما لا ينجح التثبيت في مجلد التطبيق إذا كان أحد المكونات يعتمد على مكونات أخرى لا يمكن تحديثها.عندما يحدث هذا، عادةً ما يكون ذلك مع مكتبات Microsoft.لقد تحسنوا على مر السنين في هذه القضية.

يمكنك قراءة المزيد حول المشكلات المتعلقة بالتنفيذ جنبًا إلى جنب هنا

وأخيرًا، يجب أن تكون التبعيات في برنامج التثبيت الخاص بك حتى يتم تسجيلها في سجل Windows.على عكس معظم تجميعات .NET، يحتاج أي تطبيق ActiveX/COM إلى تسجيل المكون لاستخدامه حتى إذا كنت تستخدم أنواع CreateObject وVariant للوصول إليه.

سأعترف بأن العملية برمتها تتميز بالخصوصية وهي أحد مصادر القصص حول DLL Hell.ابدأ بمقالة MSDN، واستخدم ويكيبيديا، وبالطبع اطرح المزيد من الأسئلة هنا.

نصائح أخرى

ويجب أن عادة لا يملك "دلس" مجلد ضمن المجلد التطبيق لحزمة المثبت طبيعية ولكن هناك العديد من العوامل المشتركة (دلس المعيار الخاص، COM ريج خالية، وما إلى ذلك). نعم، والحصول على تضمين تبعيات (إلا إذا كنت <م> استبعاد منهم). وينبغي لكل واحد من الممتلكات التي يحدد فيها تثبيت على أنظمة الهدف.

لديك أيضا عددا من العناصر في تلك القائمة التي إما غير القابلة بهذه الطريقة لأنها مكونات نظام التشغيل التي تعتمد على النظام والمكونات MDAC، أو غير مرخص لREDIST (fm20.dll على سبيل المثال).

للأسف هذا هو مثال على نوع من الحزمة التي يمكن أن تؤدي مباشرة إلى DLL الجحيم لأنظمة الخاصة بالمستخدمين. يمكن تحديد هذا يعني البحث في كل مكون MS في المواد MS KB لتحديد ما يمكن أو يجب أن يتم إعادة توزيعها وكيف.

ونشر يمكن أن يكون عمل فوضوي للحصول على حق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top