在Windows 2003 Server和Windows 7上导出COM +应用程序客户端代理时,代理的DLL不包含在创建的MSI文件中。 MSI将安装,但由于未包含DLL,因此无法实例化远程应用程序。
从Windows 2000服务器导出的相同COM +应用程序包含DLL,但安装程序不能在Windows 7计算机上运行。
答案 0 :(得分:1)
为什么DLL在WINDOWS 2003服务器或更高版本的COM +应用程序中丢失?
您不能再将COM + DLL安装到服务器上的System32文件夹中。在Windows 2003服务器及更高版本(包括Windows 7)导出COM +包时,将不会导出在Windows \ System32(或其下面的文件夹)中注册的任何DLL。根据Microsoft支持,这是设计的。 (此信息尚未由Microsoft公开发布,因此我们必须与他们一起打开机票以发现问题。)
症状是,如果出现以下情况,导出的MSI文件不包含COM + DLL:
1. COM + DLL在System32和
中注册
2.在Windows 2003或更高版本上导出COM +包
MSI将被创建并将安装,但是应用程序将无法实例化对象,因为DLL从未安装过。使用像Wise Installation Editor这样的安装编辑器打开MSI将显示该DLL未包含在MSI中。
答案是将您的COM +应用程序DLL注册到Windows \ System32以外的文件夹中。
为什么WINDOWS 2000服务器上安装的COM +应用程序不会安装在WINDOWS 7上?
COM +有两个版本:v1.0和v1.5。不同的操作系统导出并安装这些版本的各种组合:
导出客户端代理
-Server 2000导出1.0格式
-Windows 2003可以输出1.0或1.5
-Windows 2008/7只能输出1.5
安装客户端代理
-Windows XP可以安装1.0或1.5格式的代理
-Windows 7只能以1.5格式安装代理
COM +应用程序必须以COM + 1.5格式导出到Windows 2003或更高版本,才能在Windows XP和Windows 7客户端上安装。