Как выглядит ваше пользовательское действие для ярлыков?
ьзуя WiX 3.5, у меня есть MSI с преобразованиями экземпляров, что позволяет мне устанавливать программное обеспечение на одну и ту же машину с разными названиями продуктов. Для этого у меня есть «жестко запрограммированный» список идентификаторов и имен продуктов в файле .wxs, определенных условно. Однако у меня есть только одно определение Feature-ComponentRef, которое включает как файловые, так и не файловые ресурсы.
Установка работает нормально, но удаление экземпляров демонстрирует поведение, упомянутое в следующих двух источниках:
http://msdn.microsoft.com/en-us/library/aa367797(v=VS.85).aspx
а также
В частности, ни один из нефайловых ресурсов (в данном случае записи реестра) не удаляется, кроме самого последнего экземпляра моего приложения. (то есть, если я удалю в следующем порядке: instance1, instance2 и instance3 - удаляются только нефайловые ресурсы instance3.
Я предполагаю, что это связано с отсутствием уникальных GUID для нефайловых компонентов (тогда как для файловых компонентов это не проблема)
Итак, мне было интересно, будет ли правильный подход определять один файл .wxs с одним идентификатором продукта, именем и одним набором функций, но иметь собственный загрузчик, генерирующий новые идентификаторы GUID для продукта и нефайловые компоненты, которые затем вставляются в базу данных MSI во время выполнения? то есть, когда приходит время для удаления или обновления, я запрашиваю реестр для установленных экземпляров и извлекаю их GUID.
Это позволило бы создавать экземпляры во время выполнения, а не жестко задавать их в .wxs заранее, и их можно было удалить без ошибок.
Имеет ли это смысл? Будет ли Burn все лучше? :)