2012-06-05 107 views
1

我正在为IE7 +编写基于.NET 4.0的ActiveX控件。我必须用钥匙阅读器管理一个界面。我跟着一些关于“如何做”的精彩教程和文章,目前运行良好。部署现有ActiveX控件的新版本

当我想要部署其他版本的控件时,我的问题就开始了。

我正在使用VS2010与安装部署项目和cabarc的.CAB。 1.0.0.0版本进展顺利。目前我想获得1.0.2.0版本的工作,并且它的工作很好,但IE总是提示安装。一次又一次。

我做了什么:

1:改变了AssemblyInfoVersion.cs到版本1.0.2.0

2:改变根据版本的.inf文件到1.0.2.0

3:改变了。 MSI版本1.0.2

我改变了OBJECT标签在HTML页面#版本= 1,0,2,0

到目前为止,一切正常。它已安装!我可以在“卸载程序”下看到它,该控件的版本是1,0,2!太棒了,但IE仍然希望我每次打开页面时都要下载并安装它。

我看到了用Excel连接螺纹:How to get COM Server for Excel written in VB.NET installed and registered in Automation Servers list?

而且我得到了有用的信息有关,我应该在注册表中更改的东西。我做了一些搜索那里,我在富尔德我的classid: HKLM \ SOFTWARE \ Wow6432Node \类\ CLSID {GUID}

我这里有以下子项: InstalledVersion 实现的类别 InprocServer32的 PROGID

我很高兴,因为我看到,在InstalledVersion部分,版本仍然是1,0,1,0。我将其更改为1,0,2,0 ...并没有奏效。我通过注册表,现在无处不在,InstalledVersion是1,0,2,0。 .dll版本是1,0,2,0。已安装的控件的版本是1,0,2。在InprocServer32下我有全部三个1,0,0,0; 1,0,1,0; 1,0,2,0版本。当然,在HTML代码中,版本也是1,0,2,0。

(我的机器是64位的Win7,IE9)在此

莫非

任何人的帮助,我错过了什么?

整个场景的其他问题:在第一次安装版本后,我的开发机器重启时没有任何问题。你有什么想法什么样的设置可以使这种行为?

UPDATE:

的问题就迎刃而解了。我有点盲目,或者因为这个而有点累。 但问题是,5月重要的是,未来:

首先关于这一问题的概述: 后的新版本部署(在客户端安装好)的IE总是propting用于安装的版本。

问题来源在注册表中。您应该在InstalledVersion(默认)注册表项中拥有适当的版本号。

我在这里有一个非常特殊的情况(并且我不知道原因),但是我在SubKey InstalledVersion下有两个条目(Default)。第一个是空的,第二个包含了价值。我无法删除第一个,但只能删除第二个。我改变了第一个(默认)一切工作后发现!

+0

您有可能创建一个名称为“(Default)”的regvalue,而不是设置默认reg值(然后给它一个虚拟名称“(Default)”? http://msdn.microsoft.com/en-us/library/xkfz6802(v=VS.80).aspx – dkackman

+0

感谢您的评论!是的,它也是真的! –

回答

0

自动重启的第二个问题也解决了。

这个线程帮助:MSI installer with Silent or Passive mode will automatically restart computer without prompt for user sometimes

必须添加/qn /norestart/promptrestart结束的msiexec通话的,因为如果没有这个标志的Windows自动重新启动本身没有质疑。

如果有人有一个类似的问题,那么这里就是在我的情况下,解决办法:

[RunSetup] 
run="""msiexec.exe""" /i """%EXTRACT_DIR%\KeyReaderEngineInstaller.msi""" /qn /promptrestart 
0

根据Microsoft Documentatation:重新启动选项之前

/promptrestart
提示。显示完成安装需要重新启动的消息,并询问用户是否立即重新启动系统。此选项不能与/ quiet选项一起使用。

您可以使用/QN/norestart更新日志文件或只是/promptrestart。就我而言,只需要重新启动IE,而不是整个运营系统。因此,我使用/qn/norestart