Как я могу развернуть обновление моего продукта, который содержит файл с версией ниже, чем уже развернутый файл?
У меня есть компонент 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" в таблице свойств и достичь того, что вы ищете. Однако это только для вашего тестирования и не рекомендуется предлагать своим конечным пользователям.
С уважением, Киран Хегде