Настраиваемая таблица для включения в файл патча MSP

У нас есть CustomTable, который мы добавляем в msi при его создании. Эта пользовательская таблица содержит некоторые двоичные данные (файлы XML), которые наше программное обеспечение для развертывания считывает при загрузке MSI на наш сервер развертывания.

Теперь у нас есть требование поддерживать развертывание файлов MSP. Это означает, что если пользователь загрузит файл msp на наш сервер развертывания, наше программное обеспечение все равно сможет считывать двоичные данные в нашей пользовательской таблице. Однако я не смог найти способ убедиться, что создаваемый нами файл msp содержит одну и ту же CustomTable.

Я знаю, что MSP содержит обновленный XML, потому что я использовал ORCA, чтобы увидеть обновленные таблицы и файлы. К сожалению, я не могу программно читать данные из нашей CustomTable, потому что они (очевидно) не существуют в патче. Кто-нибудь знает способ доступа к CustomTable из файла MSP?

Спасибо - Если требуется разъяснение, дайте мне знать!

2 ответа

Решение

Итак, наконец-то есть решение моей проблемы.

Поскольку у нас нет оригинального msi, мы можем создать пустой msi во временном каталоге и затем применить msp поверх этого, используя ApplyTransform. Если мы создаем ожидаемую таблицу и заполняем ее фиктивными данными (к счастью, мы заранее знаем, какие строки ожидаются в этой таблице), процесс применения патча поверх нашей фиктивной MSI позволяет нам успешно запрашивать таблицу _Storages и получать доступ обновленный поток, содержащий новый XML. Это может быть обработано во время загрузки нашего msp.

Не красиво, но это работает.

Патч (msp) должен содержать изменения только в предыдущем пакете MSI. Если вы не измените свою пользовательскую таблицу в более новой версии пакета MSI, она не будет упомянута в патче. И это ожидается.

Когда исправление применяется, оно изменяет исходный пакет MSI (фактически исправляет его) и запускает переустановку. Это означает, что если ваше пользовательское действие, которое читает пользовательскую таблицу, явно не запланировано, чтобы не запускаться при переустановке, то оно запустится и найдет пользовательскую таблицу.

Другие вопросы по тегам