Как заставить Wix обновлять ранее установленную версию программы

Вам нужно два отдельных запроса.

Один из них заключается в получении ограниченного набора строк с использованием SQL-совместимого offset fetch начиная с Firebird 3 или альтернативно rows или first & amp; skip:

select field1, field2
from mytable
[where conditions]
[offset 0 rows] fetch first 10 rows only

Еще один способ - получить общее количество записей:

select count(*) from mytable [where conditions]

Обратите внимание, что последний запрос может быть дорогостоящим для сложных запросов и / или большое количество данных. Обычно на большом количестве данных используются другие подходы. Один из них посвящен двигателям FTS, таким как SphinxSearch. Google, например, даст вам приблизительное количество результатов.

65
задан Ajay 31 May 2019 в 09:40
поделиться

2 ответа

Необходимо использовать таблицу обновления:

<Upgrade Id='15E2DAFB-35C5-4043-974B-0E342C25D76A'>
    <UpgradeVersion Property='OLDVERSIONFOUND' IncludeMinimum='no' Minimum='0.0.0.0' />
</Upgrade>

Вы должны также добавить действие:

<InstallExecuteSequence>
    <LaunchConditions After='AppSearch' />
    <RemoveExistingProducts After='InstallValidate' />
</InstallExecuteSequence>

Вот учебное руководство

7
ответ дан Klaus Gütter 24 November 2019 в 15:23
поделиться

Я проверил все упомянутые выше должности и еще потратил много времени, пытаясь заставить это работать.

намек на официальную HOWTO для обновлений в Шаге 3 очень помог: Вам нужно новое Изделие/@Id, чтобы отключить сообщение "Другая версия этого изделия уже установлена".

Я использовал этот раздел обновления (дочернее устройство изделия):

<Upgrade Id="$(var.UpgradeCode)">
  <UpgradeVersion Minimum="1.0.0"
                  IncludeMinimum="yes"
                  OnlyDetect="no"
                  Maximum="$(var.Version)"
                  IncludeMaximum="no"
                  Property="PREVIOUSFOUND" />
</Upgrade>

Обратите внимание, что OnlyDetect установлено на "нет". Это приводит к удалению старой версии, если у вас есть следующий раздел (дочернее устройство Продукта):

<InstallExecuteSequence>
  <RemoveExistingProducts After="InstallInitialize"/>
</InstallExecuteSequence>

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

.
39
ответ дан 24 November 2019 в 15:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: