MSI / WiX - Назначение идентификаторов GUID компонентов во время преобразований нескольких экземпляров

Используя WiX 3.5, у меня есть MSI с преобразованиями экземпляров, позволяющими мне устанавливать программное обеспечение на одном компьютере с разными названиями продуктов. Для этого у меня есть «жестко запрограммированный» список идентификаторов и имен продуктов в файле .wxs, определенных условно. Однако у меня есть только одно определение Feature-ComponentRef, которое включает как файловые, так и нефайловые ресурсы.

Установка работает нормально, но удаление экземпляров демонстрирует поведение, упомянутое в этих двух источниках:

http://msdn.microsoft.com/en-us/library/aa367797 (v = VS.85) .aspx

и

http : //windows-installer-xml-wix-toolset.687559.n2.nabble.com/Multiple-Instance-Transforms-Walkthrough-Proposed-Simple-Addition-to-WiX-to-Make-Them-Easier-td708828.html

В частности, ни один из нефайловых ресурсов (в данном случае, записей реестра) не удаляется, за исключением самого последнего экземпляра моего приложения. (то есть, если я удаляю в следующем порядке: instance1, instance2 и instance3 - удаляются только нефайловые ресурсы instance3.

Я предполагаю, что это связано с отсутствием уникального GUID для нефайловых компонентов (тогда как это не проблема для файловых компонентов)

Итак, мне было интересно, будет ли правильным подходом определить одиночный. wxs с одним идентификатором продукта, именем и одним набором функций, но должен ли пользовательский загрузчик генерировать новые идентификаторы GUID для продукта и нефайловых компонентов, которые затем вставляются в базу данных MSI во время выполнения? то есть, затем, когда придет время удалить или обновить, я бы запросил реестр для установленных экземпляров и затем получил их GUID.

Это позволит создавать экземпляры во время выполнения, а не жестко закодировать в .wxs заранее, и быть полностью удаленным.

В этом есть смысл? Сделает ли Burn все лучше? :)

6
задан David Gardiner 23 November 2016 в 01:40
поделиться