MSI удаляет необходимую сборку при установке обновления, но заменяет ее при восстановлении.

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

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня возникли некоторые странности, связанные с обновлением установки MSI, возможно, кто-нибудь сможет мне помочь:

У меня есть два MSI, оригинальный и обновленный:

  • MSI версия 1.0
    • Содержит сборку .NET foo.dll для установки в GAC.
    • foo.dll имеет тип «Сборка» (а не «Выход») в графическом интерфейсе файловой системы MSI.
  • MSI версия 2.0
    • Также содержит foo.dll (той же версии) плюс кучу дополнительных сборок.
    • Я хотел бы, чтобы MSI 2.0 полностью заменил версию 1.0, поэтому я установил для RemovePerviousVersion значение 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 удаляется во время обновления??Заранее спасибо!

-Кен

ОБНОВЛЯТЬ После некоторого обновления/перестройки, кажется, теперь работает.Однако теперь он не удаляет foo.dll при удалении MSI, хотя для его свойства «Постоянный» установлено значение false.Не такая уж большая проблема, но было бы неплохо узнать, что происходит.

Это было полезно?

Решение

Чтобы исправить странность, я сделал следующее:

  1. Установлен Orca.exe, входящий в состав Windows SDK.
  2. Добавлен REINSTALLMODE=amus в таблицу свойств через Orca после сборки.

Это решило мою непосредственную проблему и исправило проблемы с установкой/удалением, с которыми я столкнулся.Единственная проблема заключается в том, что это ручной процесс.Следующий шаг — каким-то образом сделать это частью автоматического события после сборки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top