2015-02-09 2 views
-1

Я создал WiX Installer с Product Version в 1.0.0Как добавить «Обновление» в установщик WiX?

<Product Id="*" Name="My Application" Language="1033" Version="1.0.0" Manufacturer="My Client" UpgradeCode="182bbc7d-8cc2-4014-9e1c-29312598bxc0"> 

Я использую MajorUpgrade Элемент Обновление установщика следующим образом:

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

Сценарии:

Scenario 1: Установка версии 1.0.0 на уже установленную версию 1.0.0

При установке той же версии установщик просит либо «Восстановить», либо «Удалить», что я хочу и работаю нормально.

Scenario 2: Установка версии 1.0.0 на уже установленной версии 1.0.1

На установке старой версии, инсталлятор бросает ошибку, более новая версия моего приложения уже установлена ​​и выходит при нажатии кнопки OK.

Я хочу, чтобы мой инсталлятор, чтобы отобразить эту ошибку и продолжить установку, удаление версии 1.0.1 и установка 1.0.0

Scenario 3: Установка версии 1.0.1on уже установлена ​​версия 1.0.0

На установке, тем выше версии, установщик ничего не спрашивает и продолжает установку, удалив 1.0.0 и устанавливая 1.0.1

Я хочу, чтобы мой установщик попросил подтвердить, следует ли обновлять до более высокой версии или отменять установку

Как это можно реализовать?

ответ

0

Чтобы разрешить понижение, вам необходимо установить свойство «Разрешить показ» в элементе MajorUpgrade. Пройдите все атрибуты в элементе MajorUpgrade из приведенной ниже ссылки.

WiX MajorUpgrade

0

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

Так что, помимо разрешений на понижение, вам нужно будет добавить диалоговое окно подтверждения, основанное на свойстве WIX_UPGRADE_DETECTED, возможно, добавит диалоговое окно обновления, которое будет показано с учетом этого свойства. Это немного неудобно, потому что все, что вам известно, это ProductCode того, что вы обновляете (это значение WIX_UPGRADE_DETECTED), и никакой другой информации о уже установленной версии. Итак, все, что вы можете сказать, это то, что вы обновляете (или, возможно, даже понижаете) установленную версию. Чтобы получить информацию о уже установленном продукте, вам нужно запросить систему для имени и версии этого ProductCode, используя что-то вроде API Win32 MsiGetProductInfo(). Для этого может потребоваться привилегия (последовательность пользовательского интерфейса не запускается, даже если вы являетесь администратором), поэтому все становится довольно сложным.

Это довольно распространенный вопрос, поэтому возможно, что кто-то уже что-то сделал, но быстрый поиск ничего не нашел.

Смежные вопросы