Требования к разметке Wix на нескольких дисках — Кэширование и размещение медиа

Впервые задаю вопрос здесь, и, возможно, не последний. Это касается WiX 3.8

Моя компания начинает заниматься инсталлятором, и одно из требований, которое мне было поручено, — создать многодисковую установку для нашего продукта. Раньше я использовал WiX для простых патчей, но теперь мы хотим создать полную установку. Некоторые из требований включают в себя:

  • Создание внешних cab-файлов для нескольких дисков [которые я включил, установив свойство ‘EmbedCab’ в теге media на ‘no’ и установив идентификаторы диска для каждого элемента файла с низким уровнем сжатия]
  • Готовая сборка будет иметь 5 дисков в отдельных папках с соответствующими внешними файлами cab в каждом [Media layout ‘layout’, установленном в пункт назначения]
  • Выполнение MSI-файла в папке «Disc1» [который работает … почти]

Проблема, с которой я сталкиваюсь, заключается в том, что, когда MSI-файл находится на жестком диске, вне макетов диска или внутри подпапки «Disc1», он не может найти другие CAB-файлы. Требование, которое у меня есть, заключается в том, что мне нужно найти способ, чтобы можно было запрашивать только диск в том и только в том случае, если после поиска в следующей подпапке «Disc2» и поиска следующего устанавливаемого CAB-файла. Поэтому он может не только искать в корне, где находится MSI-файл, но и проверять подпапки на наличие необходимых файлов Cab. (Это почти имитирует InstallShield, но я ДЕЙСТВИТЕЛЬНО не хочу идти по этому пути.)

Второй вопрос, который у меня есть, касается загрузчика. .Exe-файл должен встраивать .msi-файл в соответствии с требованием. Однако даже при отключении кэширования MSI-файла загрузчик, похоже, начинает кэшировать все остальные CAB-файлы (речь идет об установке объемом 20 ГБ). Даже отключив восстановление и откат, загрузчик продолжает пытаться кэшировать cab-файлы в область PackageCache в моей системе.

Я посмотрел в Интернете и прочитал книги по WiX, чтобы помочь найти решение, но, похоже, я, наконец, зашел в тупик. Кто-нибудь может дать мне какие-либо мысли или идеи, чтобы помочь с этой проблемой?

Некоторые вещи, которые я пробовал до сих пор:
— Использование настраиваемого действия (C ++) для выполнения ResolveSource, чтобы попытаться изменить свойство SourceDir для продолжения установки.
— Мысль о создании собственного загрузчика для полного отключения события кэширования пакетов, но я не знаю, с чего начать.

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

Спасибо!

0

Решение

Задача ещё не решена.

Другие решения