gpt4 book ai didi

.net - ActiveX Cab 文件代码库 #Version 未正确更新 CAB

转载 作者:行者123 更新时间:2023-12-03 23:45:50 25 4
gpt4 key购买 nike

好吧,我来到这里作为最后的手段,希望有人知道这个问题的答案,新闻组中没有答案,我已经做了我知道该怎么做的一切,除了我想避免的严重的黑客解决方案.

情况如下:

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

问题:

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

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

我尝试过更改注册表设置和值以及一系列的操作,但找不到解决方案。

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

最佳答案

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

HKCR/CLSID/{GUID}/InstalledVersion/(Default)

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

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

  1. HKCU/CLSID/{GUID}/可用版本/(默认)
  2. HKCR/CLSID/{GUID}/可用版本/(默认)
  3. HKCU/CLSID/{GUID}/InstalledVersion/(默认)
  4. HKCR/CLSID/{GUID}/InstalledVersion/(默认)
  5. 您的大会

如果 regasm 能为你解决这个问题就好了,但事实并非如此。您需要在安装程序中手动设置。

关于.net - ActiveX Cab 文件代码库 #Version 未正确更新 CAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/638813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com