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

时间:2010-06-15 19:30:33

标签: windows deployment ole ocx

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

3 个答案:

答案 0 :(得分:6)

如果我们谈论的是Windows XP +,那么微软就拥有一种名为Reg-Free COM的功能。基本上,您为EXE创建一个清单文件,该文件调用您的DLL / OCX,并且它具有进行COM调用所需的所有注册信息,而无需在HKCR中实际注册它。

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

答案 1 :(得分:0)

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

幸运的是(但不适合你)微软意识到这有点过于复杂,因此.Net组件不需要这个注册。只需将.Net DLL放在应用程序之外,就可以使应用程序“发现”。

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

  • 创建一个虚拟机映像(没有已注册的组件,但是除了Windows所需的所有其他内容)
  • 备份虚拟机映像
  • 然后使用映像启动虚拟机,注册组件并测试应用程序
  • 在测试之后,您可以丢弃图像并再次进行备份以重新开始新环境

答案 2 :(得分:0)

PSExec可能会有所帮助。我们在内部系统测试工具中使用它,该工具使用PSExec在另一台Winodws机器上执行远程程序。这允许测试工具和所有依赖项在(污染的)开发人员/测试工具机器上运行,但正在测试的代码在吱吱作响的干净vmware映像上运行。

相关问题