Nano Hash - криптовалюты, майнинг, программирование

Перед удалением проверьте наличие более поздних версий - WIX

Если установлено несколько версий одного и того же продукта, можно ли использовать свойство для проверки наличия более новой версии, добавления сообщения об условии и предотвращения удаления?

  • Веб-сайт 1.0.0 — Базовые файлы (MajorUpgrade)
  • WebSite 1.0.1 - Незначительные обновления файлов
  • Веб-сайт 1.1.0 — базовые файлы (MajorUpgrade)

Вариант использования: и WebSite 1.0.0, и WebSite 1.0.1 устанавливаются на веб-сервере с помощью пакета MSI. Когда WebSite 1.0.0 удаляется, мне нужно иметь возможность предотвратить это, если существует более новая версия.

Я думал об использовании условий, но не уверен, что это лучший способ.

<Condition Message="Newer version of the product must be removed">
    Installed OR PRODUCTVERSION > 1.0.0
</Condition>

После установки WebSite 1.1.0 предыдущая версия будет удалена, так как в ней есть базовый набор необходимых файлов.


  • Если вам нужно предотвратить ручное удаление 1.0.0, вам нужно найти (скажем) идентификаторы компонентов, которые существуют в более поздних версиях. Или вам нужны более поздние версии для создания записей реестра, которые 1.0.0 может знать заранее и искать во время удаления. Поиск основного обновления ничего не найдет, потому что он не запускается во время удаления. Вам нужен поиск, компонент, реестр или что-то, что 1.0.0 знает, что будет в более поздней версии. Затем используйте это свойство в условиях запуска, чтобы предотвратить удаление. Я предполагаю, что вы буквально имеете в виду предотвращение удаления 1.0.0, и это не опечатка. 03.04.2015
  • Хорошо, это хорошее предложение. И да, я имею в виду предотвратить удаление. Не могли бы вы написать ответ на это с примером реестра, чтобы я мог правильно отметить? 06.04.2015

Ответы:


1

Если вам нужно предотвратить ручное удаление 1.0.0, вам нужно найти (скажем) идентификатор компонента, который существует только в более поздних версиях, и вам нужно знать, что они есть в более старых версиях, чтобы более старые версии могут предсказывать будущее. Или вам нужны более поздние версии для создания записей реестра, которые 1.0.0 может знать заранее и искать во время удаления. Поиск основного обновления ничего не найдет, потому что поиск FindrelatedProducts основного обновления не запускается во время удаления. Вам нужен поиск, компонент, реестр или что-то, что 1.0.0 знает, что будет в более поздней версии. Затем используйте это свойство в условиях запуска, чтобы предотвратить удаление.

Другой возможностью может быть настраиваемое действие, вызывающее MsiEnumrelatedProducts() или эквивалентное в коде обновления. Это вернет ряд ProductCodes, для которых вы можете вызвать MsiGetProductInfo(), чтобы получить версию продукта, а затем проверить все релевантные значения. Преимущество этого заключается в том, что более старому продукту не нужно заранее знать записи реестра или идентификаторы компонентов, поскольку коды обновлений более предсказуемы и маловероятно, что они изменятся в ряде продуктов.

06.04.2015

2

Элемент MajorUpgrade обрабатывает все это с помощью 1 атрибута.

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

Если вы используете шаблоны проектов IsWiX (CodePlex), они создаются по умолчанию из коробки. Идея состоит в том, чтобы охватить наиболее распространенные требования и варианты использования, чтобы вы даже не знали, что у вас есть проблема.

02.04.2015
  • Хорошо, я попробую еще раз. Я попробовал этот вариант использования, и я смог удалить WebSite 1.0.0, а WebSite 1.0.1 все еще оставался установленным. Я быстро касаюсь базы. 02.04.2015
  • Я прошел через тег MajorUpgrade и не получил ожидаемого результата. MajorUpgrade удалит ранее установленный продукт при установке, и это не тот результат, который мне нужен. Для обновления файлов мне нужно, чтобы исходные файлы оставались. 03.04.2015
  • MajorUpgrade также может обнаруживать продукты с помощью атрибута DetectOnly. Вот что пишут авторы DowngradeErrorMessage. 03.04.2015
  • Так что не следует ли мне использовать MajorUpgrade для версии установщика 1.0.1? Приношу свои извинения за не полное понимание. При создании версии 1.0.1 я полностью ожидаю, что оба продукта останутся установленными до следующего крупного обновления. Причина в том, что при удалении предыдущей версии сайт будет недоступен, пока будет перестраиваться вся файловая структура. 03.04.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..