2016-09-06 6 views
0

Я хочу удалить старую версию и установить последнюю версию. Если установка старой версии означает, необходимо ограничить понижение.Как отключить понижение и включить обновление в установщике wix?

Я включил обновление и удалил старую версию, если существует, используя код ниже.

<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" /> 
<Upgrade Id="{Guid}"> 
    <UpgradeVersion Minimum="1.1.0.1" Maximum="99.0.0.0" 
    Property="PREVIOUSVERSIONSINSTALLED" 
    IncludeMinimum="yes" IncludeMaximum="no" /> 
</Upgrade> 

<RemoveExistingProducts Before="InstallInitialize" /> 

Но я не знаю, как отключить опцию понижения. Я получаю решение ограничить понижение для 3-значной (x.x.x) версии. Но может получить решение ограничить 4-значную (x.x.x.x) версию.

ответ

1

В Windows Installer (и, следовательно, в создании WiX основных обновлений MSI) нет поддержки для основной логики обновления на основе четырех полей ProductVersion. Как документы говорят:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370859(v=vs.85).aspx

«Обратите внимание, что установщик Windows использует только первые три поля версии продукта Если вы включили четвертое поле в вашей версии продукта, программа установки игнорирует четвертое поле..»

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