如何在没有注册ocx的情况下将具有ocx依赖性的实用程序部署到testing机器上?

我有一个testing工具,依赖于我的开发机器上安装/注册的ocx文件。 我们希望在testing机器上运行这个工具,而不用任何不必要的文件污染机器。 目标机器软件除外。 在networking驱动器上运行该工具或从复制到testing机器的独立目录运行该工具将是理想的。 但是,在testing机器上注册ocx是不可能的。 将该ocx文件放在与exe相同的目录不起作用。 无论它仍然给我这个错误 – “应用程序启动失败,因为应用程序configuration不正确,重新安装应用程序可能会解决问题。 我还有什么可以尝试? 仅供参考,我正在使用Visual Studio 2008。

Solutions Collecting From Web of "如何在没有注册ocx的情况下将具有ocx依赖性的实用程序部署到testing机器上?"

如果我们正在谈论Windows XP +,那么微软就有一种称为免注册(Reg-Free)COM的功能。 基本上,你为你的EXE创建了一个清单文件,它调用你的DLL / OCX,它拥有所有需要的注册信息来进行COM调用,而无需在HKCR注册。

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

COM层使用Windows注册表将GUID转换为实现该功能的组件(DLL,OCX,EXE)。 我不认为有另一种方法来解决这个问题。

幸运的是(但不是为了你)微软意识到这有点太复杂,因此.NET组件不需要这个注册。 除了应用程序之外,只要放入.Net DLL就可以让应用程序“发现”它。

在你的情况下,你可以使用虚拟机来测试你的组件吗? 如果是的话,你可以

  • 制作一个虚拟机映像(没有注册的组件,但是与Windows需要的一切)
  • 备份虚拟机映像
  • 然后用图像启动虚拟机,注册组件并测试您的应用程序
  • 在测试之后,您可以丢弃镜像并重新进行备份,重新开始一个全新的环境

PSExec可能在这里帮助。 我们在一个内部系统测试工具中使用它,它使用PSExec在另一个Winodws机器上执行远程程序。 这允许测试工具和所有的依赖关系在(污染的)开发者/测试用具机器上运行,但被测试的代码运行在干净的vmware镜像上。