Ошибка удаления MSI

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 343
1

Ответы 1

Объем: Сразу было много вопросов. Firstly, how large is your distribution? How many machines are we talking about?

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

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

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

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


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


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


Ссылки:

Это небольшой (100 или около того) дистрибутив, созданный специально для наших клиентов. . Он общается с сервером через Интернет и не имеет сертификата подписи кода (скоро появится с этим крупным обновлением). Я всегда предполагал, что с небольшим дистрибутивом, неподписанным кодом и интернет-коммуникациями я, скорее всего, буду видеть ложные срабатывания антивируса / вредоносного ПО в течение многих лет, если не всегда. Новая установка была бы отличной, но службы остались бы на месте и вызывали головную боль с журналами подключений на моем сервере. В любом случае, вы дали мне много информации для чтения ... очень признательна.

ShaneLS 05.03.2019 22:01

Общаетесь через Интернет? Есть ли в настройках специальное действие? Пользовательские действия могут вызвать проблемы с разрешением исходного носителя. Существующие службы могут быть отключены из вашей новой установки, даже если они перемещаются в другое место. Проведу тесты, когда будет возможность.

Stein Åsmul 06.03.2019 04:21

Существует несколько методов, которые вы можете использовать для отключения пользовательского действия, вызывающего проблемы с удалением, некоторые из которых выполняются вручную, а некоторые — автоматически. Ручной подход — это инструмент Microsoft FixIt, о котором я упоминал выше. Лучше всего исправить существующую установку небольшим обновлением, чтобы отключить проблемные пользовательские действия. Сообщите нам, какие пользовательские действия есть в вашем пакете?

Stein Åsmul 06.03.2019 05:41

Приношу свои извинения... Нет, программа установки не подключается к серверу. Несколько исполняемых файлов, содержащихся в do, в настоящее время содержат неподписанный код и не получили широкого распространения. Это должно было объяснить, почему AV и Malware предположительно всегда будут рассматривать отдельные исполняемые файлы и установщики как угрозу.

ShaneLS 06.03.2019 16:09

Другие вопросы по теме