Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb6 如何安装应用程序的OCX组件?_Vb6 - Fatal编程技术网

Vb6 如何安装应用程序的OCX组件?

Vb6 如何安装应用程序的OCX组件?,vb6,Vb6,我在应用服务器上复制了一些组件,以便运行VB6应用程序 TABCTL32.OCX TABCTL32.DEP MSWINSCK.DEP MSWINSCK.OCX MSMAPI32.DEP MSMAPI32.OCX FTP.OCA FTP.OCX COMDLG32.OCX 我从这里的另一个问题的答案中得到了一些建议。有人能告诉我这样做是否安全吗。此服务器上还安装了ASP.NET应用程序(framework 3.5版)。以“.OCX”扩展名结尾的文件实际上是32位进程内COM DLL,必须注册才能使

我在应用服务器上复制了一些组件,以便运行VB6应用程序

TABCTL32.OCX
TABCTL32.DEP
MSWINSCK.DEP
MSWINSCK.OCX
MSMAPI32.DEP
MSMAPI32.OCX
FTP.OCA
FTP.OCX
COMDLG32.OCX
我从这里的另一个问题的答案中得到了一些建议。有人能告诉我这样做是否安全吗。此服务器上还安装了ASP.NET应用程序(framework 3.5版)。

以“.OCX”扩展名结尾的文件实际上是32位进程内COM DLL,必须注册才能使用。这是通过命令行“regsvr32”实用程序实现的

将这些文件复制到应用程序的主机目录将不足以允许依赖.OCX文件中提供的组件的应用程序访问它们。这是因为应用程序将通过其注册的编程ID(“ProgID”)创建COM对象的实例,Windows将反过来将其转换为CLSID和COM进程内服务器DLL,后者为对象提供实现。如果OCX未注册,则没有COM信息允许Windows执行所需的映射

ProgID、ClsID和相关类型库信息通过RegSvr32实用程序“发布”到Windows,该实用程序实际上只是加载目标DLL/OCX,并专门调用COM DLL入口点“DllRegisterServer”,该入口点允许DLL发布其COM注册信息。如果不这样做,则没有COM注册可用,对OCX/DLL中托管的对象的调用将失败

缺少重要COM注册信息是将OCX文件复制到主机文件夹不足以让消费应用程序利用其中托管的COM对象的原因

有关文件扩展名的其他信息

  • .OCX-实际上,它只是一个具有不同扩展名的COM DLL。这些名称是在旧的“*O*LE*C*control E*x*tension”名字下作为VB扩展的容器给出的,因此是OCX
  • .DEP-Windows依赖项文件。这些文件往往具有Visual Basic“安装应用程序”传统,通常包含有关给定EXE或DLL对其他DLL的依赖关系的信息。例如,A.EXE可能依赖于B.DLL,但B.DLL也可能依赖于C.DLL
  • .OCA-OCX类型库缓存。这通常是动态构建的,并在需要时重建
以“.OCX”扩展名结尾的文件实际上是32位进程内COM DLL,必须注册才能使用它们。这是通过命令行“regsvr32”实用程序实现的

将这些文件复制到应用程序的主机目录将不足以允许依赖.OCX文件中提供的组件的应用程序访问它们。这是因为应用程序将通过其注册的编程ID(“ProgID”)创建COM对象的实例,Windows将反过来将其转换为CLSID和COM进程内服务器DLL,后者为对象提供实现。如果OCX未注册,则没有COM信息允许Windows执行所需的映射

ProgID、ClsID和相关类型库信息通过RegSvr32实用程序“发布”到Windows,该实用程序实际上只是加载目标DLL/OCX,并专门调用COM DLL入口点“DllRegisterServer”,该入口点允许DLL发布其COM注册信息。如果不这样做,则没有COM注册可用,对OCX/DLL中托管的对象的调用将失败

缺少重要COM注册信息是将OCX文件复制到主机文件夹不足以让消费应用程序利用其中托管的COM对象的原因

有关文件扩展名的其他信息

  • .OCX-实际上,它只是一个具有不同扩展名的COM DLL。这些名称是在旧的“*O*LE*C*control E*x*tension”名字下作为VB扩展的容器给出的,因此是OCX
  • .DEP-Windows依赖项文件。这些文件往往具有Visual Basic“安装应用程序”传统,通常包含有关给定EXE或DLL对其他DLL的依赖关系的信息。例如,A.EXE可能依赖于B.DLL,但B.DLL也可能依赖于C.DLL
  • .OCA-OCX类型库缓存。这通常是动态构建的,并在需要时重建

如果您真的想在不借助VB6自动注册黑客的情况下实现这些OCX(和DLL)的并行部署,最好使用应用程序清单进行免注册COM

我们使用在构建时自动创建这些,在您的情况下,清单创建将是一次性作业

下面是如何在您的案例中使用UMMM。首先像这样创建一个
App.ini
文件

Identity App.exe YourCompany.App "Application 1.0"
File TABCTL32.OCX
File MSWINSCK.OCX
File MSMAPI32.OCX
File FTP.OCX
File COMDLG32.OCX
# more OCXs/DLLs here...
c:>UMMM.exe App.ini App.exe.manifest
c:>mt.exe -nologo -manifest App.exe.manifest -outputresource:App.exe;1
UMMM.exe
像这样“编译”清单

Identity App.exe YourCompany.App "Application 1.0"
File TABCTL32.OCX
File MSWINSCK.OCX
File MSMAPI32.OCX
File FTP.OCX
File COMDLG32.OCX
# more OCXs/DLLs here...
c:>UMMM.exe App.ini App.exe.manifest
c:>mt.exe -nologo -manifest App.exe.manifest -outputresource:App.exe;1
请将
App.exe.manifest
放在您的
App.exe
旁边,或者像这样将其作为Windows SDK中的资源嵌入

Identity App.exe YourCompany.App "Application 1.0"
File TABCTL32.OCX
File MSWINSCK.OCX
File MSMAPI32.OCX
File FTP.OCX
File COMDLG32.OCX
# more OCXs/DLLs here...
c:>UMMM.exe App.ini App.exe.manifest
c:>mt.exe -nologo -manifest App.exe.manifest -outputresource:App.exe;1

注销OCX/DLL(这一点很重要)并测试您的应用程序。

如果您真的想在不借助VB6自动注册黑客的情况下实现这些OCX(和DLL)的并行部署,最好使用应用程序清单进行免注册COM

我们使用在构建时自动创建这些,在您的情况下,清单创建将是一次性作业

下面是如何在您的案例中使用UMMM。首先像这样创建一个
App.ini
文件

Identity App.exe YourCompany.App "Application 1.0"
File TABCTL32.OCX
File MSWINSCK.OCX
File MSMAPI32.OCX
File FTP.OCX
File COMDLG32.OCX
# more OCXs/DLLs here...
c:>UMMM.exe App.ini App.exe.manifest
c:>mt.exe -nologo -manifest App.exe.manifest -outputresource:App.exe;1
UMMM.exe
像这样“编译”清单

Identity App.exe YourCompany.App "Application 1.0"
File TABCTL32.OCX
File MSWINSCK.OCX
File MSMAPI32.OCX
File FTP.OCX
File COMDLG32.OCX
# more OCXs/DLLs here...
c:>UMMM.exe App.ini App.exe.manifest
c:>mt.exe -nologo -manifest App.exe.manifest -outputresource:App.exe;1
请将
App.exe.manifest
放在您的
App.exe
旁边,或者像这样将其作为Windows SDK中的资源嵌入

Identity App.exe YourCompany.App "Application 1.0"
File TABCTL32.OCX
File MSWINSCK.OCX
File MSMAPI32.OCX
File FTP.OCX
File COMDLG32.OCX
# more OCXs/DLLs here...
c:>UMMM.exe App.ini App.exe.manifest
c:>mt.exe -nologo -manifest App.exe.manifest -outputresource:App.exe;1

注销OCX/DLL(这很重要)并测试您的应用程序。

问题是什么?在什么意义上是安全的?我不知道.DEP文件,但我知道.OCA文件只是临时缓存,如果没有相应的.OCX文件,它们将从中重新生成