Wix Toolset - невозможно создать / установить патч с меньшим количеством файлов / компонентов, чем в оригинальном пакете msi - PullRequest
0 голосов
/ 15 января 2020

У меня есть несколько мест в поле, для которых исходный .msi имеет примерно 2000 файлов (разных типов файлов). Однако мне придется отправлять исправления в несколько мест в зависимости от необходимости, поэтому исправление должно состоять из меньшего количества файлов (иногда только 1 файл в качестве исправления). Я не могу создать патч (.msp) только с одним файлом или несколькими файлами, которые я хочу добавить / обновить, но мне также нужно включить весь исходный набор файлов. Можно ли это сделать каким-либо образом? Пожалуйста, помогите !!

Также я не хочу делать Major Upgrade, так как некоторые из исходных файлов - это файлы журналов и базы данных, которые должны оставаться нетронутыми и не могут быть удалены.

Когда я попробовал это Сценарий с простыми текстовыми файлами, где у моего .msi есть 3 текстовых файла, а у MSP есть только 1 текстовый файл, который я хочу обновить, все прошло успешно, и я смог увидеть изменения. Но когда я попытался с моей настоящей папкой, я получил эту ошибку: -

MSI (s) (A0: 70) [16: 17: 59: 147]: SELMGR: ComponentId '{B826B564- A3C4-45AB-9623-FB0089831140} 'зарегистрирован для функции' ProductFeature ', но отсутствует в таблице компонентов. Удаление компонентов из функции не поддерживается! MSI (s) (A0: 70) [16: 17: 59: 147]: SELMGR: удаление компонента из функции не поддерживается

, где компонент, на который он ссылается, является dll , Я что-то упускаю, когда дело доходит до DLL?

Ответы [ 3 ]

0 голосов
/ 16 января 2020

Единственный способ удалить файл из патча - «проколоть» компонент. Вы делаете это, помечая транзитивный транзитив компонента как true и помещая в компонент условие, которое всегда оценивается как false. Вы по-прежнему должны хранить компонент и файл в MSI / MSP, но вы можете предоставить файл нулевого байта.

Когда применяется незначительное обновление / исправление, компонент переоценивает и удаляет сам себя, так как условие ложно.

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

0 голосов
/ 21 января 2020

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

0 голосов
/ 16 января 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...