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





Объем: Сразу было много вопросов. 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 является такой службой. Загрузите готовую установку и, возможно, также двоичные файлы, чтобы увидеть, что различные инструменты делают с вашими двоичными файлами. Извините, если это очевидно, добавлю в качестве подсказки для тех, кто это читает.
Ссылки:
Общаетесь через Интернет? Есть ли в настройках специальное действие? Пользовательские действия могут вызвать проблемы с разрешением исходного носителя. Существующие службы могут быть отключены из вашей новой установки, даже если они перемещаются в другое место. Проведу тесты, когда будет возможность.
Существует несколько методов, которые вы можете использовать для отключения пользовательского действия, вызывающего проблемы с удалением, некоторые из которых выполняются вручную, а некоторые — автоматически. Ручной подход — это инструмент Microsoft FixIt, о котором я упоминал выше. Лучше всего исправить существующую установку небольшим обновлением, чтобы отключить проблемные пользовательские действия. Сообщите нам, какие пользовательские действия есть в вашем пакете?
Приношу свои извинения... Нет, программа установки не подключается к серверу. Несколько исполняемых файлов, содержащихся в do, в настоящее время содержат неподписанный код и не получили широкого распространения. Это должно было объяснить, почему AV и Malware предположительно всегда будут рассматривать отдельные исполняемые файлы и установщики как угрозу.
Это небольшой (100 или около того) дистрибутив, созданный специально для наших клиентов. . Он общается с сервером через Интернет и не имеет сертификата подписи кода (скоро появится с этим крупным обновлением). Я всегда предполагал, что с небольшим дистрибутивом, неподписанным кодом и интернет-коммуникациями я, скорее всего, буду видеть ложные срабатывания антивируса / вредоносного ПО в течение многих лет, если не всегда. Новая установка была бы отличной, но службы остались бы на месте и вызывали головную боль с журналами подключений на моем сервере. В любом случае, вы дали мне много информации для чтения ... очень признательна.