Обнаружить соседние установки? - PullRequest
0 голосов
/ 23 января 2019

Мы хотим представить управляемое приложение начальной загрузки, которое обнаруживает наши программные продукты, которые уже установлены на целевом компьютере, а затем предоставляет варианты установки, обновления, понижения версии, восстановления и удаления. Это хорошо работает с использованием того же UpgradeCode в пакетах.

Наша проблема связана с параллельной установкой: предполагается, что программное обеспечение может устанавливаться параллельно, если версия не входит в ту же версию Major-Release. Поэтому мы планировали менять код обновления с каждым новым «Major-Release».

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

1 Ответ

0 голосов
/ 23 января 2019

Пакет обрабатывает обновление как на уровне пакета, так и на уровне MSI. Обновление уровня MSI или параллельная установка определяются тем, как написан пакет MSI и какой код обновления он использует. Из того, что я понимаю из вашего вопроса, если у MSI есть новый Major-Release, то вы хотите выполнить параллельную установку, а если нет, то хотите обновить.

  1. Самое простое решение, о котором я могу подумать, - это изменить код обновления Bundle при выпуске Major-Release. Но, как всегда при параллельной установке, это усложнит ситуацию, и вам придется управлять несколькими пакетами с несколькими кодами обновления.

Например, вы установили MSI 1.0.0.0 с кодом обновления пакета "abc". Когда выйдет новый MSI 1.1.0.0, вы будете использовать тот же пакет с «abc» и выполнить установку. Это приведет к удалению MSI 1.0.0.0 и установке 1.1.0.0.

Когда появится MSI 2.0.0.0, вы измените код обновления пакета "xyz". Это установит новый MSI 2.0.0.0 (при условии, что они изменили код обновления в MSI). Теперь на этом этапе, если у вас есть новый MSI 1.3.0.0, вы должны обязательно изменить код обновления вашего пакета обратно на «abc», прежде чем вы сможете установить 1.3. Надеюсь, вы поняли суть проблемы / сложности, о которой я говорю. Параллельная установка - это всегда проблема, когда вы хотите работать с обновлениями, и если у меня есть выбор, я буду держаться от него подальше.

  1. Теперь еще один вариант, который у вас есть, - обрабатывать несколько выпусков MSI в одном пакете. Если вам известен код обновления нового основного выпуска, вы можете выполнить поиск продукта на основе кода обновления, а затем решить, хотите ли вы удалить существующую версию и установить новую версию или просто обновить существующую версию.

    <util:ProductSearch Id="ProductSearch"
                        UpgradeCode="{ProductC_MSI_UpgradeCode_GUID}"
                        Variable="ProductInstalled"
                        Result="state"/>
    

Вы можете использовать переменную ProductInstalled, чтобы проверить, присутствует ли этот код продукта / обновления, и затем внести соответствующие изменения в ваш комплект.

...