يزيل MSI التجميع المطلوب في تثبيت الترقية، ولكن يحل محله

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

  •  19-09-2019
  •  | 
  •  

سؤال

أنا أعاني من بعض الغرابة المتعلقة بترقية تثبيت MSI، ربما هناك شخص ما يمكن أن يساعدني:

لدي اثنين من MSIS، وهي نسخة أصلية وترقية:

  • نسخة MSI 1.0.
    • يحتوي على مجموعة .NET، FOO.DLL، ليتم تثبيتها على GAC
    • Foo.dll هو من النوع "التجميع" (وليس "إخراج") ضمن نظام ملفات MSI واجهة المستخدم الرسومية.
  • MSI الإصدار 2.0.
    • يحتوي أيضا على foo.dll (نفس الإصدار)، بالإضافة إلى مجموعة مجموعات إضافية.
    • أود أن استبدل MSI 2.0 تماما 1.0، لذلك قمت بتعيين "إزالة الإيقاف" إلى False.

الآن سيناريوهات التثبيت:

  1. أركض MSI 1.0. تم تثبيت Foo.dll على GAC بشكل صحيح. ثم قمت بتشغيل MSI 2.0 و يبدو أن Foo.dll قد تمت إزالته من GAC, ، ولكن التجمعات الإضافية موجودة. ليس لدي فكرة فكرة. ومع ذلك، إذا ذهبت إلى إضافة / إزالة البرامج والنقر فوق "إصلاح"، فسيتم وضع foo.dll.

  2. لا يتم تثبيت MSI 1.0 أبدا وأريد MSI 2.0. foo.dll (والجمعيات الإضافية) هو هناك، كما هو متوقع.

أي أفكار لماذا تتم إزالة foo.dll أثناء الترقية؟ شكرا لك مقدما!

-ken.

تحديث بعد بعض منعش / إعادة البناء، يبدو أن العمل الآن. ومع ذلك، فإنه الآن لا يزيل foo.dll عندما قمت بإلغاء تثبيت MSI، على الرغم من تعيين خصائصها "دائمة" إلى False. ليس كبيرا من مشكلة، ولكن سيكون من الجيد معرفة ما كان يحدث.

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

المحلول

لتصحيح الغرابة، انتهى بي الأمر في القيام بما يلي:

  1. تثبيت Orca.exe، جزء من Windows SDK.
  2. وأضاف REINSTALLMODE = AMUS إلى جدول Propery عبر Orca، Post Build.

تم حل هذا مشكلتي الفورية وتصحيح مشكلات التثبيت / إلغاء التثبيت التي كنت أعاني منها. المشكلة الوحيدة هي أن هذه عملية يدوية. الخطوة التالية، وجعل هذا جزءا من حدث ما بعد بناء التلقائي بطريقة أو بأخرى.

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