Как мне перейти к переносу Служб компонентов на новый сервер?
Мы переносим наш тестовый сервер на новый блок, и мне нужно перенести все наши компоненты, которые находятся в Службах компонентов, на новый блок. У нас есть все файлы COM DLL, расположенные в подпапках в каталоге COM на сервере, и мы хотим скопировать весь этот каталог и зарегистрировать все приложения в службах компонентов, как они есть. Им нужно будет иметь одинаковые полномочия и все.
Я могу использовать материал COMAdminCatalog и автоматизировать экспорт и установку приложений (экспортирует CAB-файл), но это скопирует библиотеки и все остальное, и мы этого не хотим, потому что это не вернет их в нужное место. Хотя, если бы я мог вытащить каталог, в котором они находились, и затем указать этот каталог при установке, это было бы хорошо. Я не могу понять, как получить каталог DLL, хотя. А что, если есть две библиотеки, как это будет работать?
Есть идеи?
2 ответа
Я преобразовал описанные выше шаги в скрипт Powershell, который можно использовать для автоматизации и т. Д., Если у вас есть много компонентов для перемещения:
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT;
$class = "MyObject.MyClassName";
$clsid = (gp HKCR:\$class\Clsid).'(default)';
$path = $(gp HKCR:\CLSID\$clsid\InprocServer32).'(default)';
echo "Component path = $path";
Вам нужно установить $class как имя объекта, который, как вы знаете, существует в компоненте, который вы хотите переместить.
Вы можете экспортировать, а затем установить на новую машину, а затем перерегистрировать все библиотеки DLL. Это обновит детали каждого COM-пакета на вашем сервере COM+. Вы можете найти местоположение dll, посмотрев его в реестре.
Если ваш COM-объект
Project.Object
Взгляни на
HKEY_CLASSES_ROOT\Project.Object\CLSID\
получите значение по умолчанию, затем посмотрите вверх
HKEY_CLASSES_ROOT\CLSID**YOURCLSID**\InprocServer32
Этот ключ даст вам полный путь к DLL. Удалите все эти библиотеки и зарегистрируйте (используя regsrv32) все библиотеки в том месте, где вы их хотите.
Должен дать вам место для начала.