Не удается заставить пользовательское действие Wix работать в Votive / VS2010
-
27-10-2019 - |
Вопрос
Помогите! Мне нужно выполнить управляемое настраиваемое действие в моем проекте установки Wix 3.5, и что бы я ни пробовал, я не могу заставить его работать.
Я использую интеграцию Votive в Visual Studio 2010. Мой файл Wix Product.wxs в основном не отличается от шаблона Visual Studio, за исключением нескольких изменений текста:
родовое слово
Я установил ссылку на свой управляемый проект настраиваемых действий, установил для свойства HARVEST значение true. Проект называется WIX.CustomActions
и производит WIX.CustomActions.dll
и WIX.CustomActions.CA.dll
Я вижу, что Wix обрабатывает ссылку во время сборки, и сборка кода WIX.CustomActions.dll
отображается в двоичной таблице в окончательном проекте настройки, а код WIX.CustomActions.CA.dll
- нет.
У меня есть код генерирующего кода, который должен упаковывать и вызывать настраиваемое действие:
родовое слово Я просмотрел различные источники с практическими рекомендациями в Интернете, и они в лучшем случае сбивают с толку и дают противоречивые советы. Насколько я понимаю, файл CustomActions.wxs
представляет собой неуправляемую dll, которая загружает платформу .NET и передает управление «настоящему» управляемому настраиваемому действию. Тем не менее, код WIX.CustomActions.CA.dll
не помещается в мой файл MSI. Я как мог следил за примерами, но не вижу, что не так.
Пожалуйста, у кого-нибудь это работает в Votive? Вы можете привести мне реальный рабочий пример?
Решение
Вам нужна ссылка (например, CustomActionRef) из вашего продукта на фрагмент;в противном случае умный компоновщик отбрасывает его.
Другие советы
Следуя предложению Боба Арсона, я добавил следующие две строки в верхней части моего файла Product.wxs:
родовое словоПохоже, это помогло.Теперь Orca показывает, что у меня есть двоичная таблица, содержащая мою dll CA, и запись CustomAction в InstallExecuteSequence.
Ни в одном из примеров, которые я нашел в Интернете, это требование не упоминалось.Думаю, люди просто перерабатывали полученную мудрость с небольшим пониманием или без него.Вот и ответ, спасибо Бобу!