好的,我来这里是最后的希望,希望有人知道答案,新闻组中没有答案,除了我乐意避免的严肃的黑客解决方案之外,我已经尽了一切所能。

情况如下:

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

问题:

因此,由于这是暴露给COM的.NET dll,因此正在使用inprocServer32注册表项对其进行注册,该注册表项指向mscoree.dll,版本为2.0.50727,这是有道理的,因为.NET com对象在该进程和2.0下运行。 50727是该dll的版本。但这破坏了OBJECT标记上CODEBASE属性的version属性。

我设置为2.0.50727以上的任何版本都将下载重新安装cab文件的内容。

我尝试更改注册表设置和值以及大量其他内容,但是找不到解决方案。

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

最佳答案

安装好驾驶室后,您需要更新注册表项:


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



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


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


HKCU / CLSID / {GUID} / AvailableVersion /(默认)
HKCR / CLSID / {GUID} / AvailableVersion /(默认)
HKCU / CLSID / {GUID} / InstalledVersion /(默认)
HKCR / CLSID / {GUID} / InstalledVersion /(默认)
您的集会


如果再加气为您解决这个问题,那将是不错的选择,但是事实并非如此。您需要在安装程序中手动进行设置。

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

10-10 01:23