سؤال

أنا أستخدم مشروع إعداد ونشر VS لعام 2008 لنشر تطبيق مداري / غير مداري. لقد واجهت مشكلة في تسجيل DLL في الوضع المختلط باستخدام خاصية التسجيل المدمجة ("VSDRACOM" القيمة المرفعة من خاصية "التسجيل".) كحلارة، فقد قمت بإضافة تجميع تثبيت .NET مخصص (مع فئة مستمد من system.configuration.install.installer.) أنا متأكد من أن هذه الفئة قيد التشغيل وتثبيت عدد من العمليات بنجاح وإلغاء التثبيت من خلال التعليمات البرمجية في تلك التجميع، بما في ذلك تنفيذ نقطة إدخال DLL (UN) لعدد من التجميعات وبعد

ومع ذلك، لا يتم تسجيل DLL واحد بنجاح. هذا هو DLL الوحيد الذي يعتمد على بعض التجمعات القابلة لإعادة توزيع الحزب الثالث الذي تريد تثبيته على GAC. لدي هذه التجمعات مثبتة على GAC بفضل الدعم المدمج لذلك في مشاريع الإعداد والنشر في عام 2008، وأنا أعلم أن هذا يعمل. لقد أكدت أن ما يحدث هو أن الإجراء المخصص ينفذ قبل تنفيذ المثبت تثبيت GAC.

يا عجب. لذلك سؤالي هو، هل هناك طريقة لإجبار المثبت على تنفيذ تثبيت GAC قبل تنفيذ الإجراء المخصص؟ هل هناك طريقة لاستخدام خاصية "حالة" الإجراء المخصص للقيام بذلك؟ إذا لم يكن كذلك، ما هو أفضل بديل لي؟ التقاط إدخالات التسجيل من DLL وإضافةها إلى إعدادات التسجيل للمثبت (لا تحب ذلك لأن شخصا ما قد يضيف خوادم COM الجديدة إلى الفصل في المستقبل)؟ باستخدام .NET Code لتثبيت التجميع في GAC يدويا (لا أعرف كيفية القيام بذلك بعد)؟

شكرا،

ديف

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

المحلول

مشاريع الإعداد التي يمكنك إنشاؤها في Visual Studio محدودة للغاية. يسمح فقط بالإجراءات المخصصة المقرر في 4 نقاط. ومع ذلك، يسمح MSI بالإجراءات المخصصة المقرر إجراؤها في أي وقت في العملية مع بعض القيود على ما يمكنهم فعله.

الحل الأول هو التوقف عن استخدام Visual Studio 2008 كأداة تطوير الإعداد الخاصة بك. حاول فريق Visual Studio تجريد كل تعقيد إنشاء تثبيت. ومع ذلك، في العملية التي أخذوها أيضا جميع مرونة MSI. WIX أو InstallShield أو Wise منتجات أفضل بكثير لأي شيء سوى تثبيت بسيط. لقد بدأت في استخدام Visual Studio للتثبيت لدينا، وقد انتهى الأمر بكثير من العمل. كان هناك دائما حل واحد آخر سيتم تنفيذه وتناول آثاره الجانبية.

إذا لم تتمكن من تبديل التكنولوجيا، فستحتاج إلى تعلم كيفية تعديل ملف MSI الناتج يدويا. في حالتك، ستحتاج إلى تعديل جدول Installexecutesequence، http://msdn.microsoft.com/en-us/library/aa369500(VS.85).aspx.. وبعد يمكنك القيام بذلك يدويا من خلال Orca، http://msdn.microsoft.com/en-us/library/aa370557(vs.85).aspx. أو من خلال API MSI http://msdn.microsoft.com/en-us/library/aa372860(VS.85).aspx.. وبعد تأكد من تنزيل Orca وتشغيل البرامج النصية للتحقق من الصحة مقابل تثبيتك. تشير البرامج النصية إلى العديد من المشكلات التي سيحصل عليها تحديد ساعات لا تحصى عند الانتظار إلى آلات العملاء.

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