Установщик Wix удаляет файл, который должен быть обновлен, но не устанавливает новую версию - PullRequest
1 голос
/ 03 апреля 2020

Недавно возникла проблема с установщиком Wix, настроенным как «серьезное обновление» для ранее установленного приложения. Приложение, уже установленное в системе, включало файл S7. Net .dll версии 1.0.0, а установщик, предназначенный для представления обновления, содержал dll с тем же именем (S7. Net .dll), но с версией 0.3.0 для установки в том же месте. Тем не менее, запуск установщика «upgrade», казалось, удалял файл версии 1.0.0, но никогда не заменял его версией 0.3.0.

Я изучил logi управления версиями файлов c, используемый установщиком ( ссылка ), и, если я правильно понимаю, установщик не должен был заменять файл, уже установленный в системе (v1.0.0), файлом из установщика "upgrade" (v0.3.0). Это понимание правильно? Я не уверен в этом, учитывая тот факт, что установщик «upgrade» включает в себя компонент MajorUpgrade, который, по моему мнению, выполняет своего рода действие «удалить все» по умолчанию - по крайней мере, это то, что я интерпретировал, прочитав описание для свойство RemoveFeatures в документации Wix . Но если выполняется «удалить все», то зачем сравнивать версии двух файлов?

В целом, правильно ли мое понимание логики управления версиями файлов c? Как насчет моего понимания свойства RemoveFeatures компонента MajorUpgrade Wix? И если да, то почему установщик «upgrade» удаляет существующую версию файла, но не заменяет ее?

Я включил компонент MajorUpgrade, включенный в установщик, а также снимки экрана вкладки свойств. для каждого из упомянутых файлов DLL.

<MajorUpgrade AllowDowngrades="no" DowngradeErrorMessage="A newer version of [ProductName] is already installed."/>

Properties of existing file v1.0.0.0

Properties of updated file v0.3.0

...