обновление wix не должно удалять файлы, установленные другими компонентами в установщике

#wix #installation #upgrade

#викс #установка #Обновление #wix

Вопрос:

У меня есть приложение для начальной загрузки wix, которое устанавливает в систему различные компоненты. Теперь я внес изменения в установщик таким образом, что файлы, которые были установлены последним компонентом в моем старом установщике, теперь устанавливаются первым компонентом в моем новом установщике. Это приводит меня к проблеме обновления. При обновлении файлы, которые должен копировать новый установщик, не копируются, поскольку более старая установка уже установила эти файлы. Но когда новый установщик переходит к последнему компоненту, этот компонент удаляется, поскольку это обновление, которое также удаляет файлы, и поскольку при новой установке последний компонент не копирует эти файлы, я заканчиваю тем, что эти файлы отсутствуют в процессе обновления. Как это можно решить? Заранее спасибо за помощь. Дайте мне знать, если я должен прояснить вопрос.

РЕДАКТИРОВАТЬ: для объяснения на примере

Более старый установщик

 Application
    Module 1
    Module 2
    Module 3
        Copies files 1,2,3
  

Более новый установщик

 Application
    Module 1
        Copies files 1,2,3
    Module 2
    Module 3
  

Теперь в сценарии обновления, когда более старая программа установки уже установлена, файлы 1, 2, 3 уже присутствуют в системе. Теперь, когда я пытаюсь установить более новый установщик, то во время установки модуля 1 он видит, что файлы 1,2,3 уже присутствуют. Затем, когда он достигает установки модуля 3, он сначала удаляет существующий модуль 3 (более старый установщик), который, в свою очередь, удаляет файлы 1,2,3. Модуль 3 новой программы установки не копирует эти файлы, поскольку в новой программе установки это задание модуля 1. Из-за этого я в конечном итоге теряю файлы 1,2,3 как часть обновления.

Комментарии:

1. Можете ли вы опубликовать содержимое xml или хотя бы фрагмент? Возможно, вам просто нужно изменить порядок вещей.

2. @RobinJohnson Спасибо за комментарий, Робин, но файлы, которые я хочу скопировать, в основном представляют собой ComponentGroupRef к тепловому файлу wxs, который содержит всю информацию о копируемых файлах. В любом случае, я решил свою проблему, продублировав ссылку на ComponentGroup во всех модулях. Это приводит к тому, что при удалении модуля 3 старого установщика он удаляет эти файлы, а при установке модуля 3 нового установщика он снова добавляет эти файлы, поскольку у него есть ссылка на ComponentGroup .

3. Хорошо. Совершенно разумное решение.