2015-09-11 11 views
0

У меня есть библиотека .NET (DLL) из вспомогательных методов, специфичных для установки моего продукта, который нацелены на .NET 4.Пользовательские действий вызова в .NET 4 сборки

Однако «основной» проект WIX ориентирован. NET 3.5 (как указано в документации) (это означает, что он работает во время выполнения 2.0). Он имеет настраиваемые действия, которые вызывают в выше 4.0 dll.

При запуске сгенерированного MSI я получаю исключения «BadImageFormat», когда среда выполнения WIX (работает в среде выполнения 2.0) пытается загрузить мою dll 4.0.

Если у меня был прямой доступ к .NET 3.5 .exe, я мог бы убедить его загрузить dll 4.0, используя трюк в app.config.

Однако среда выполнения WIX загружается (по msiexec), насколько я могу судить по трассировке стека, через Interop.

Есть ли у кого-нибудь предложение о том, как я могу заставить это работать?

PS. Я также попытался сделать «основной» проект проекта Wix 4.0 прямо вместо 3.5, но тогда мои диалоги настройки просто не отображаются.

+0

Ключ от C# ... cute :) –

ответ

1

Я не знаю, как у вас есть эта настройка в wixsharp, но в Visual Studio WiX есть шаблон проекта для пользовательских действий C#/DTF. Он автоматически включает в себя CustomAction.config, который вы можете использовать для добавления элементов SupportedRuntime для достижения того, что вы пытаетесь сделать.

Посмотрите на WIX and Custom Actions

+0

Отличный ресурс, я рассмотрю его. Благодаря! –

0

Исключение BadImageFormat означает, что вы пытаетесь перекрестную вызов архитектуры где-то в вызывающей последовательности, 32-бит 64-бит или наоборот. Это может быть следствием получения неправильной структуры, но не обязательно!

+0

Это также может означать, что вы пытаетесь смешивать версии CLR. Я всегда это видел с помощью InstallUtil CA, где некоторые, где скомпилированы для 1.1, а некоторые - 2.0. –