首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveX Cab文件代码库版本未正确更新CAB

ActiveX Cab文件代码库版本未正确更新CAB
EN

Stack Overflow用户
提问于 2009-03-12 14:20:21
回答 2查看 3.5K关注 0票数 2

好吧,我来到这里作为最后的手段,希望有人知道这个问题的答案,在新闻组中没有答案,我已经做了所有我知道如何做的事情,除了我想要避免的严重的黑客解决方案。

情况是这样的:

我有一个COM公开的.NET类库。我将其封装到一个CAB文件中,并使用Object标记将其嵌入到页面中。在CODEBASE属性上,我将其指向cab文件并添加一个类似于"CODEBASE="cabfiles\mycab.cab#version=30.0.0.1“的版本

问题是:

因此,因为这是一个向COM公开的.NET动态链接库,所以它使用指向版本为2.0.50727的mscoree.dll的inprocServer32注册表项注册它,这是有意义的,因为.NET com对象在该进程下运行,而2.0.50727是该动态链接库的版本。但这破坏了OBJECT标记上CODEBASE属性的version属性。

我设置的任何高于2.0.50727的版本都将下载并重新安装cab文件的内容。

我尝试过更改注册表设置和值,以及一大堆事情,但都找不到解决方案。

所以有人知道这个问题的解决方案吗?

EN

回答 2

Stack Overflow用户

发布于 2009-11-06 02:02:44

安装cab后,您需要更新注册表项:

HKCR/CLSID/{GUID}/InstalledVersion/(默认)

  • {GUID}是您的对象
  • 的类ID,值是在您的Html元素中指定的字符串(上面的“30.0.0.1”)。

Windows在使用动态链接库(在本例中为mscoree.dll)之前会检查几个注册表位置。上面的位置是按系统安装(HKCR),您也可以按用户安装。选择以下位置之一来放置您的版本字符串。按照列出的顺序检查位置。

  1. HKCU/CLSID/{GUID}/AvailableVersion/(Default)
  2. HKCR/CLSID/{GUID}/AvailableVersion/(Default)
  3. HKCU/CLSID/{GUID}/InstalledVersion/(Default)
  4. HKCR/CLSID/{GUID}/InstalledVersion/(Default)
  5. Your assembly

如果regasm能帮你解决这个问题就好了,但它不能,你需要在安装程序中手动设置它。

票数 4
EN

Stack Overflow用户

发布于 2010-11-04 00:14:49

此外,您需要使用逗号作为版本号:

"CODEBASE="cabfiles\mycab.cab#version=30,0,0,1“

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/638813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档