好吧,我来到这里作为最后的手段,希望有人知道这个问题的答案,在新闻组中没有答案,我已经做了所有我知道如何做的事情,除了我想要避免的严重的黑客解决方案。
情况是这样的:
我有一个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文件的内容。
我尝试过更改注册表设置和值,以及一大堆事情,但都找不到解决方案。
所以有人知道这个问题的解决方案吗?
发布于 2009-11-06 02:02:44
安装cab后,您需要更新注册表项:
HKCR/CLSID/{GUID}/InstalledVersion/(默认)
Windows在使用动态链接库(在本例中为mscoree.dll)之前会检查几个注册表位置。上面的位置是按系统安装(HKCR),您也可以按用户安装。选择以下位置之一来放置您的版本字符串。按照列出的顺序检查位置。
如果regasm能帮你解决这个问题就好了,但它不能,你需要在安装程序中手动设置它。
发布于 2010-11-04 00:14:49
此外,您需要使用逗号作为版本号:
"CODEBASE="cabfiles\mycab.cab#version=30,0,0,1“
https://stackoverflow.com/questions/638813
复制相似问题