2014-04-15 2 views
0

Я написал сборку, которая регистрирует и отлично работает на моей машине разработки с использованием regasm. Мне интересно, какой рекомендуемый способ развертывания такой библиотеки на компьютерах пользователей. Мои пользователи будут использовать библиотеку COM из Excel VBA.Лучший способ развертывания COM-классов из сборки .NET на компьютере пользователя

Я знаю, что могу написать простой скрипт, который вызывает regasm и доставляет его пользователям, но я не уверен, что это лучшая практика. Например, после доставки нескольких обновлений мои пользователи могут получить несколько версий зарегистрированной библиотеки, поэтому я хотел бы предложить им способ удалить старую версию, если она больше не понадобится. Пользователи сами будут писать сценарии VBA, поэтому они будут знать, какую версию библиотеки COM они используют, поэтому они должны иметь возможность сказать, какие версии могут быть удалены.

Какая практика?

+0

Это не может быть осмысленным ответом, если вы вообще ничего не говорите о типах клиентских программ, которые вы ожидаете использовать на этом сервере. У COM есть сильная проблема DLL Hell, вы * будете * попадать в неприятности, просто произвольно удаляя или заменяя старые версии. Шансы, что вы нарушите клиентскую программу, очень высоки. –

+0

@ HansPassant - отредактировано. –

+0

Итак, вы понятия не имеете, какую версию используют клиентские программисты. Do * not * автоматически удаляет старые версии, вы должны оставить их им. Убедитесь, что новая версия может мирно сосуществовать со старой. Это означает, что вам придется развернуть GAC с помощью новой [AssemblyVersion]. И следуйте правилам COM, изменения в интерфейсах требуют новых указаний, поэтому регистрация новой версии не перезаписывает старую. –

ответ

1

Я использую WiX для установки приложений, и он поддерживает создание этих записей регистрации с помощью инструмента в его наборе под названием Heat. У этого есть немного кривой обучения, но я нашел, что это был удивительный набор установщика. Это бесплатно и широко используется.

Если вы ищете более простое решение, вы можете просто создать пакетный файл, как вы говорите, чтобы зарегистрировать/отменить регистрацию dll (ы) вручную и установить/удалить файлы.