Как развернуть утилиту с зависимостью ocx на тестовом компьютере без регистрации ocx? - PullRequest
2 голосов
/ 15 июня 2010

У меня есть тестовая утилита, которая зависит от ocx-файла, который установлен / зарегистрирован на моей машине для разработки.Мы хотели бы запустить этот инструмент на тестовом компьютере, не загрязняя его ненужными файлами.Ничто не должно быть установлено, кроме программного обеспечения целевой машины.Запуск инструмента на сетевом диске или из автономного каталога, скопированного на тестовый компьютер, был бы идеальным вариантом.Но о регистрации ocx на тестовой машине не может быть и речи.Помещение файла ocx в тот же каталог, что и exe, не работает.Независимо от того, что по-прежнему выдает мне эту ошибку: «Приложение не удалось запустить, поскольку конфигурация приложения неверна. Переустановка приложения может решить проблему»Что еще я могу попробовать?К вашему сведению, я использую Visual Studio 2008.

Ответы [ 3 ]

6 голосов
/ 16 июня 2010

Если мы говорим о Windows XP +, то у Microsoft есть возможность, называемая Reg-Free COM.По сути, вы создаете файл манифеста для вашего EXE-файла, который вызывает вашу DLL / OCX, и он содержит всю регистрационную информацию, необходимую для выполнения COM-вызова без фактической регистрации его в HKCR.

http://msdn.microsoft.com/en-us/library/ms973913.aspx

0 голосов
/ 16 июня 2010

PSExec может помочь здесь. Мы используем его в инструменте для внутреннего тестирования системы, который использует PSExec для запуска удаленных программ на другом компьютере Winodws. Это позволяет использовать тестовый набор и все зависимости на (загрязненной) машине разработчика / тестового набора, но тестируемый код запускается на скрипучем чистом образе VMware.

0 голосов
/ 16 июня 2010

Уровень COM использует реестр Windows для преобразования GUID в компонент (DLL, OCX, EXE), который реализует эту функциональность. Я не думаю, что есть другой способ обойти это.

К счастью (но не для вас), Microsoft поняла, что это было слишком сложно, и поэтому компоненты .Net не нуждаются в этой регистрации. Простое размещение .Net DLL помимо приложения просто делает его «доступным для обнаружения» приложением.

В вашей ситуации, не могли бы вы использовать виртуальную машину для тестирования вашего компонента? Если это так, вы могли бы

  • сделать образ виртуальной машины (без зарегистрированного компонента, но со всем остальным, что нужно от Windows)
  • резервное копирование образа виртуальной машины
  • затем запустите виртуальную машину с образом, зарегистрируйте компонент и протестируйте ваше приложение
  • после теста вы можете выбросить образ и снова сделать резервную копию, чтобы снова запустить новую среду
...