Почему приложение, установленное с помощью установщика MSI, исчезнет из Windows - PullRequest
2 голосов
/ 30 апреля 2019

Недавно мы внесли некоторые изменения в процесс установки и обновления нашего приложения Windows, и некоторые пользователи теперь жалуются, что Windows иногда автоматически удаляет основной файл приложения .exe.

Обычно это происходит после того, как пользователи обновили приложение, используя встроенную функцию веб-обновления. Эта функция реализована с использованием .msi встроенного в dvanced Installer инструмента .

Мы изо всех сил пытаемся выяснить, что является причиной этого, и не нашли способа последовательно воспроизвести проблему (хотя мы видели, что это также происходило).

Вот что изменилось в процессе установки и обновления через Интернет:

  • Основным установщиком для нашего приложения является теперь стандартный .msi, который становится частью системы установки Windows и управляется изнутри Групповой политикой и другими системные функции, такие как откат или версии. В предыдущих версиях, в которых не было этой проблемы, наш установщик был .exe, собранным с помощью SetupBuilder tool .

  • Мы представили переработанную функцию веб-обновления внутри приложения (для обновления до новых версий в приложении). Он использует тот же .msi как основной результат, что и для установки. .msi загружается с нашего сервера в виде .exe, который затем извлекает MSI и запускает его. MSI затем обновляет файл в нашей установке. Эти .exe и .msi созданы с помощью Advanced Installer tool , который предоставляет такую ​​функцию веб-обновления разработчикам. В предыдущих версиях, в которых не было этой проблемы, наша функция веб-обновления была разработана с помощью SetupBuilder tool , который предоставлял пользовательские файлы веб-обновлений - .exe веб-обновление, которое загружает несколько файлов веб-обновлений, содержащих патч, в наш приложение.

Цель перехода на стандартный установщик .msi состояла в том, чтобы облегчить нашим клиентам развертывание приложения в организациях - скажем, массовое развертывание с использованием групповых политик и других подобных инструментов.

Кто-нибудь еще сталкивался с такой проблемой? Любые идеи о том, как устранить неполадки и попытаться воспроизвести?

1 Ответ

0 голосов
/ 30 апреля 2019

Теория : Прежде чем делать что-либо еще: The first thing I would ask the people who report the problem is if they have re-packaged your older, legacy (non-MSI) setup to be their own MSI file? Это может вызвать известную проблему обновления в соответствии с тем, что вы объясняете (отсутствует файл) ). Пожалуйста, проверьте сначала. Скажите им, чтобы удалить существующую версию, а затем установить новую - это самый простой способ. Не всегда достаточно (возможны некоторые неясные проблемы).

Несоответствующие идентификаторы GUID компонента могут привести к отсутствию файлов после обновления, равно как и сценарии понижения версии файла и другие технические особенности. Вы можете попробовать установить в новое место по умолчанию на диске, чтобы избежать этих проблем. Причина, по которой это может работать, очень техническая, и ее сложно объяснить кратко. По сути, вы отстраняете себя от " грехов прошлого ". Обычно достаточно изменить имя рассматриваемого файла: например, MyApp.exe на MyAppNew.exe или, возможно, добавить основную версию: MyApp5.exe, но, возможно, сначала попробуйте изменить папку ProgramFiles\MyCompany\MyApp => ProgramFiles\MyCompany\MyApp5.

Как настроить обновление? Просмотрите « Обновления », что выбрано: «Uninstall old version first and then install new version» или «Install new version first and then uninstall old version».

Запись в блоге: : Почему установщик Windows удаляет файлы во время крупного обновления, если они возвращаются в номерах версий (может быть полезно).


Отладка развертывания : Для отладки MSI с открытым исходным кодом и проблем развертывания в целом, очевидно, необходимо собрать Intel, а это означает ведение журнала и проверку системы.

Ведение журнала : Сначала попытайтесь получить правильный файл журнала для систем, где возникает эта проблема. В Advanced Installer вы можете отметить " Включить подробное ведение журнала " в представлении Install Parameters, чтобы включить подробное ведение журнала для всех установок пакета. , Это добавляет свойство MsiLogging к скомпилированному MSI, и каждая установка MSI приводит к созданию файла журнала MSI со случайным именем в папке TMP. Просмотр папки, сортировка по дате и файл должны быть вверху. Suggest you do this and then tell the users to send you the log files when relevant. Maybe you have this setting enabled already?


Дальнейшее ведение журнала : Есть много способов включить ведение журнала, и вы можете найти описание здесь: Включить журналы установки для установщика MSI без каких-либо аргументов командной строки . Свойство MsiLogging - это всего лишь одна возможность.

...