WIX: Как использовать действие ComPlus, когда целевая DLL записана в .net 4? - PullRequest
1 голос
/ 02 ноября 2010

Я пытаюсь преобразовать компонент из .net 3 в 4. Компонент имеет функции com-interp, которые должны быть установлены в приложении Component Services.В настоящее время я использую встроенную установку WiX, чтобы выполнить работу с помощью действия Complus.Тем не менее, когда компонент изменяется на .net 4, просто возникают недопустимые проблемы с ссылками, поскольку он использует неправильную версию Enterprise Services.Просматривая веб-страницы, кажется, что для ваших собственных пользовательских действий вы добавили бы поддерживаемое время выполнения в конфигурацию действий и соединили конфигурацию и DLL вместе.Тем не менее, я не знаю, как это сделать для действия, которое идет с WiX.Есть идеи?

1 Ответ

0 голосов
/ 02 ноября 2010

На самом деле, чем больше я думаю об этом, тем больше я считаю, что действие Complus - это неуправляемый компонент, который вызывается неуправляемым кодом. Поэтому нет возможности использовать идею config SxS. Поэтому, глядя на код действия Complus, он выполняет довольно простую процедуру CoCreateInstance для создания экземпляра компонента System.EnterpriseServices. Таким образом, проблема в том, что CoCreateInstance всегда создает версию компонента .net 2, как вы получаете CoCreateInstance для вызова v4? Пока единственное, что я видел, - это изменить реестр для System.EnterpriseServices и указать ему всегда использовать 4, но это звучит немного радикально. Heellllp ....

...