MSI не удалось удалить - PullRequest
       21

MSI не удалось удалить

1 голос
/ 05 марта 2019

Извините, если это повторение, но я не могу найти то, что я ищу, через Google (в основном потому, что я не знаю, что спросить).

tl; dr - Есть ли способ заставить мой проект установщика C # VS игнорировать любые ошибки управления версиями или отсутствующие файлы предыдущих установок во время установки обновленной версии?

Длинная версия: я создал приложение на C #, которое включает в себя 6 файлов (3 программы, 2 службы и DLL). Я использую проект развертывания MSI в VS для создания и распространения этих файлов, регистрации DLL и установки служб. Проблема начинается, когда антивирусное или вредоносное приложение удаляет мои файлы (и / или ключи reg, службы и т. Д.) Из системы. Чтобы установить новую версию моего приложения, MSI должен иметь возможность удалить старую версию. В этот момент установка завершается неудачно, поскольку файлы или службы были изменены, и требуется оригинальный пакет MSI. Найти оригинал может быть непросто, так как мои клиенты обычно его не хранят. Также были случаи, когда я не знал лучше, когда клиенту требовалось пользовательское изменение исполняемого файла. Я просто изменил бы файл и скопировал бы его в папку установки пользователя. Это еще больше злит MSI Gods, потому что версии файлов теперь отличаются от тех, которые были установлены там установщиком. Что я могу сделать, чтобы легко удалить старые версии моего приложения и установить новые? Я планирую крупную ревизию и ожидаю много головных болей за сотню или около того. Что еще я мог / должен рассмотреть в будущем, чтобы избежать этих проблем? Что я не смог понять?

1 Ответ

1 голос
/ 05 марта 2019

Область применения : Теперь это было много вопросов одновременно. Firstly, how large is your distribution? How many machines are we talking about?

FixIt : Вы можете попробовать этот инструмент FixIt от Microsoft как «быстрое исправление», но запускать его на многих компьютерах вручную громоздко, если не сказать больше. Не уверен, что это может быть автоматизировано. Никогда не пытался.

MSI Uninstall : MSI не обычно требуется исходный источник для удаления, если только он ошибочно не вызывает ResolveSource стандартное действие или пользовательское действие делает что-то странное. Этот старый ответ объясняет более подробно: Почему MSI требует исходный MSI-файл для удаления?

Major Upgrade Uninstall : Может случиться так, что во время крупного обновления происходит некоторое разрешение исходного кода - честно говоря, я не уверен. Вы пытались вызвать удаление самостоятельно, вручную? Другими словами, запустите только команду удаления, а не устанавливайте новую версию поверх старой и удаляйте ли значительное обновление? Я проведу тест, когда у меня будет шанс .

Расположение новой установки : В качестве обходного пути вы можете установить новую версию в другом месте, чем старая, и отсоединить ее от предыдущих версий. Могут быть конфликты с точки зрения COM-серверов и других глобальных регистраций, но в противном случае вы можете просто оставить старую версию на месте (потенциально удалив ее ярлыки) и оставить ее там. Аварийное «решение».


Самовосстановление / отказоустойчивость : MSI «знает», что вы установили. Он пытается активно поддерживать это состояние установки, как описано здесь: Почему установщик MSI переконфигурируется, если я удаляю файл? . Не боритесь с MSI - он отбивается . Попробуйте следовать парадигме - или вы прокатитесь на ветряной мельнице: -).


Virustotal.com : одна мера против включений вредоносных программ или ложноположительных обнаружений и файлового карантина это использовать онлайн-сервис, который сканирует ваши двоичные файлы со многими сканерами вредоносных программ. Virustotal.com - это такая услуга. Загрузите готовую настройку и, возможно, также двоичные файлы, чтобы посмотреть, что различные инструменты делают с вашими двоичными файлами. Извините, если это очевидно, добавив в качестве подсказки для тех, кто еще читает это.


Ссылки :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...