2016-04-19 6 views
1

Я использую WIX Bundle установить цепочку Msi-х, когда я пытаюсь обновить старую версию не удалитьКак удалить предыдущую версию и установить последнюю версию с Wix Bundle

, пожалуйста, помогите мне делать ниже любой из сценариев

  1. Как я удалить предыдущую версию перед установкой последней версии
  2. Всегда обновления до последней версии, в моем случае это может быть основным выпуск или выпуск обновлений или исправлений релиза
+0

Если вы выполняете основные обновления установщика Windows в комплекте с msi, вам не нужно удалять перед установкой более новой версии. Также следует отметить, что загрузчик wix будет правильно обновлять версии, которые отличаются только в 4-й части версии пакета. Для пакета wix для правильной модернизации их версии должны быть разными, и они должны совместно использовать один и тот же код UpgradeCode –

ответ

2

Там больше, чем просто удаление. Прежде всего, давайте посмотрим на ваше управление версиями. Сам пакет имеет версию, и каждый из msis имеет свою собственную версию. Я надеюсь, что когда у вас есть время для обновления, вам нужно обновить весь комплект, не проверяя каждый из пакетов отдельно, это может сделать его немного проще. Итак, теперь каждый из MSI должен иметь набор атрибутов Product > Upgrade и иметь узел Upgrade. Значения должны быть одинаковыми. Пакет должен иметь атрибут UpgradeCode. Этого должно быть достаточно, чтобы удалить предыдущую версию и установить новую.

Теперь, если вы хотите показать что-то в пользовательском интерфейсе, вы можете перейти к своему загрузочному приложению и подписаться на все виды событий Detect. Некоторые из них связаны с обновлением.

Вот MSI, которые поддерживают обновление:

<Product Id="*" Name="$(var.ProductName)" Language="1033" Version="1.0.0.5" Manufacturer="$(var.Manufacturer)" Upgrade="GUID_HERE"> 
<Package InstallerVersion="450" Compressed="yes" InstallScope="perMachine" /> 
<Upgrade Id="SAME_GUID_HERE"/> 

И сгореть:

<Bundle Name="$(var.ProductName)" 
    Version="1.0.0.5" 
    Manufacturer="$(var.Manufacturer)" 
    UpgradeCode="ANOTHER_GUID" 

Так как только вы устанавливаете пакеты с GUIDs внутри, следующая версия будет обнаружить (с помощью GUID), который установлен продукт уже и будет делать обновление.

+0

Спасибо, я использую ту же версию для пакета, а также для msi. Не проблема, я могу изменить свой код, чтобы проверить только версию пакета. Я не хочу ничего показывать в пользовательском интерфейсе, пользователь нажимает только что установить, чтобы пакет был обновлен, удалив старую версию. Можете ли вы предоставить мне пример кода для msi и записать? –

+0

См. Мое обновление, –

+0

Спасибо, Андрей, я могу проверить и сообщить вам. Можете ли вы прояснить одну вещь, мне также нужно добавить основной элемент обновления в msi? –