Как я могу развернуть обновление моего продукта, который содержит файл с версией ниже, чем уже развернутый файл?

У меня есть компонент MSI, который развертывает файл MyFile.dll. У меня есть тестовая машина, на которой мой продукт уже развернут MyFile.dll, которая имеет версию 09.99.99.99.

Сейчас я пишу серьезное обновление, в результате которого будет развернута новая версия MyFile.dll с версией 05.23.76.123. После выполнения на тестовой машине MyFilee.dll удаляется... Мне нужно изменить или исправить, чтобы правильно развернуть его.

Как я могу форсировать развертывание MyFile.dll независимо от введенного номера версии?

PS: это происходит только на наших тестовых машинах. Продукт, который мы доставили нашим пользователям, имеет файлы с номерами версий, соответствующими истории выпуска.

3 ответа

Решение

В установщике Windows есть несколько способов сделать это, но у всех есть свои сложности. IMO Я бы просто перестроил тот же исходный код, что и старая DLL, но с более новой версией и оставил ее простой.

Это вполне возможно. Как сказано здесь, вы можете указать свойство REINSTALLMODE и установить его в "amus" или "dmus" в зависимости от того, хотите ли вы всегда перезаписывать файлы или просто перезаписывать файлы другой версией:

<Wix ...>
  <Product ...>
    <Property Id="REINSTALLMODE" Value="amus" />

Обратите внимание, что вы получите это предупреждение при компиляции вашего установщика, хотя:warning LGHT1076: ICE40: REINSTALLMODE is defined in the Property table. This may cause difficulties.

Понижение версии файла не очень просто и имеет проблемы. Как указывалось ранее, вы можете изменить GUID компонента и заставить его работать. Однако это действительно зависит от того, где секвенированы ваши RemoveExistingProducts. Если он упорядочен в точке, где старый продукт удален, а новый продукт установлен, то он может работать.

Существует не совсем прямой и задокументированный способ. Все доступные варианты - просто хаки.

Это только для вашей тестовой среды? Если да, то вы можете использовать REINSTALLMODE="amus" в таблице свойств и достичь того, что вы ищете. Однако это только для вашего тестирования и не рекомендуется предлагать своим конечным пользователям.

С уважением, Киран Хегде

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