关于COM服务器对象版本的问题? 如果系统中已经有一个已注册的COM对象包 1.dll(新版本),已经存在于系统A目录中,而如果某安装程序中有一个低版本的1.dll(旧版本),并且进行软件安装,安装在B目录下,在安装过程中这个旧版本的DLL能向系统注册吗?当客户端程序调用1.dll的COM服务器对象时,是使用的A目录下的1.dll还是B目录下的1.dll ? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是这样的,如果我的程序中用到一个微软的COM DLL文件,那么如果我在安装程序中打包这个文件一起安装,而如果用户系统上已经有这个DLL的新版本了,那么,我的安装程序能正常安装吗?或者我的程序正常安装了,会不会对用户的其它用到这个新版本的DLL的软件造成干扰?如果是普通的DLL,那么可以把这两个DLL分别装在不同的目录下,这样可以避免覆盖的问题,但COM DLL应当是通过注册表中的注册信息来查找DLL进行调用,而同一个COM DLL,应当只有一个CLSID吧,那么即使在不同目录下也只会有一个DLL是有效的? 对于VB子代的打包程序有时候感觉不是很好用,我通常是用它打一次包,然后将包里的相关文件复制出来再用些专业的安装程序制作软件打包。通常比较专业的安装程序制作软件,都会有脚本支持,在安装程序的脚本中可以做识别组件的版本并根据情况对其进行处理。当然需要稍微琢磨一下你使用的安装程序脚本,虽然不是很难懂,但也要花点时间去了解。其实VB程序在Win98以上系统如果只使用VB的基本控件,没有引用什么外部组件和其他需要添加的控件,完全可以独立运行。如果用VB程序本身来做组件安装注册组件这一块也是很容易的,大可以在安装程序里先释放你的VB程序和相关的文件到一个临时目录中,然后运行你用VB写的安装程序,无非就是读取注册表,然后判断是否取消注销操作,然后调用regsvr32来注销或注册你的组件,如果做得完善点,还可以检测你的程序或NT服务程序是否在运行,如果在运行通过消息、DDE或网络的方式通知你的程序让其自行安全关闭,然后再进行处理。用到的也就是些注册表、文件、Shell操作。至于那种做法,看你的个人爱好了,喜欢直接用安装程序的脚本或用VB程序或是批处理程序都可以,根据需求而定。如果想在VB里做,涉及的东西不多,可以参考下面的东西注册组件可以Shell "regsvr32 你的组件路径 /s"注销可以:Shell "regsvr32 你的组件路径 /u /s"复制文件可以用:filecopy删除文件可以用:kill读写注册表可以参考:http://topic.csdn.net/u/20100311/16/1ccd9381-d566-4e49-ab6f-33c260ff4cf2.html 如果两个dll的接口一致,会使用最后一次注册的Dll文件,其实这点你可以不必担心的。 好象一般打包工具只能检测同一个目录下是否有同名文件吧,但是对于COM文件,安装在A目录下或B目录下,虽然不在同一目录下,但是注册信息却可能覆盖吧 大虾帮我看看如何使用Tab控件呢? QQ的句柄为什么到AfxWnd42窗口类名的句柄就不对 给一个延迟10秒的函数吧??急用,谢谢 50分——求一简单窗体最小化问题 快速比较图形不同之处地例子 有关屏闭文本框控件的key_down事件,在用户。。。? **哪有vb关于xml编程的资料?大家帮忙 有病乱投医,谢谢各位了 简单的问题(TAB),高分! 各位大侠,请较小问题:不知如何用VB识别本机使用的是98或2000? 请问select * from 语句 关于Dll的事件触发问题
如果是普通的DLL,那么可以把这两个DLL分别装在不同的目录下,这样可以避免覆盖的问题,但COM DLL应当是通过注册表中的注册信息来查找DLL进行调用,而同一个COM DLL,应当只有一个CLSID吧,那么即使在不同目录下也只会有一个DLL是有效的?
后将包里的相关文件复制出来再用些专业的安装程序制作软件打包。通常比较专业的安装程序制作软件,都会有脚本支持,在安装程序的脚本中
可以做识别组件的版本并根据情况对其进行处理。当然需要稍微琢磨一下你
使用的安装程序脚本,虽然不是很难懂,但也要花点时间去了解。其实VB程序在Win98以上系统如果只使用VB的基本控件,没有引用什么外部
组件和其他需要添加的控件,完全可以独立运行。如果用VB程序本身来做组
件安装注册组件这一块也是很容易的,大可以在安装程序里先释放你的VB程
序和相关的文件到一个临时目录中,然后运行你用VB写的安装程序,无非就
是读取注册表,然后判断是否取消注销操作,然后调用regsvr32来注销或注
册你的组件,如果做得完善点,还可以检测你的程序或NT服务程序是否在运行,
如果在运行通过消息、DDE或网络的方式通知你的程序让其自行安全关闭,然
后再进行处理。用到的也就是些注册表、文件、Shell操作。至于那种做法,看你的个人爱好了,喜欢直接用安装程序的脚本或用VB程序或
是批处理程序都可以,根据需求而定。如果想在VB里做,涉及的东西不多,可以参考下面的东西
注册组件可以
Shell "regsvr32 你的组件路径 /s"注销可以:
Shell "regsvr32 你的组件路径 /u /s"复制文件可以用:
filecopy删除文件可以用:
kill读写注册表可以参考:
http://topic.csdn.net/u/20100311/16/1ccd9381-d566-4e49-ab6f-33c260ff4cf2.html