読み込んでいます...

在上一节的IE扩展开发中,我们说了一下BandObject和COM的封装,当然里面还有一些其他的类,这些都可以拿来直接使用,由于代码量很多,所以我只粘贴了一部分,而代码可以从这里下载。各位看官可以好好的研究一下如何开发一个简单的IE扩展了。

IE扩展并没有像Firefox那样可以用一个XPI进行安装,所以这里我们还是要使用msi进行安装。在制作安装包之前,我们要知道IE是怎么识别这个扩展的。其实IE识别扩展的方法很简单,就是在注册表里面新增加一个字段而已,注册表的地址在Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects里面,打开注册表的这个位置我们可以看到里面有很多的GUID,这些都是浏览器的一些扩展。前面我们定义了我们的Toolbar的GUID就是用在这里了,所以在安装的时候我们就要重写注册事件注册我们的注册表。

首先还是做一个安装包,我们只用添加Primary output就可以了,然后系统会问是否要添加ieframe.dll,先选择是,然后我们将这个dll的属性的exclude变为true,否则安装的过程中还需要注册这个dll。安装包做好了应该是如下图所示的。

然后这里我们就需要自定义用户的一些安装的行为并重写这些行为,我们在资源管理器上方,有一个customer action editor,我们选中它并添加和安装事件的关联。

选中之后我们就可以看到一些action,然后都添加primary output,增加关联,如下图所示。

添加完成后,我们的安装的action就应该如下图所示了。

在制作好安装包之后,我们就要重写相应的事件了。这里我们在我们的Toolbar项目中添加一个Installer项目,然后编写相应的代码,具体代码如下所示。

namespace IEToolbar
{
    [RunInstaller(
true)]
    
public partial class IEToolbarInstaller : Installer
    {
        
public IEToolbarInstaller()
        {
            InitializeComponent();
        }
        
//重写安装事件
        public override void Install(IDictionary stateSaver)
        {
            
base.Install(stateSaver);

            //注册注册表
            RegistrationServices reg = new RegistrationServices();
            
if (!reg.RegisterAssembly(this.GetType().
            Assembly, AssemblyRegistrationFlags.SetCodeBase))
            {
                
//如果注册不成功则抛出异常
                throw new Exception("Install error :
                                    Can not register your DLL to IE
");
            }
        }
        
//重写卸载事件
        public override void Uninstall(IDictionary savedState)
        {
            
base.Uninstall(savedState);

            RegistrationServices reg = new RegistrationServices();
            
//移除注册表内容
            if (!reg.UnregisterAssembly(this.GetType().Assembly))
            {
                
throw new InstallException("Uninstall error :
                                           Failed to unregister the toolbar for COM
");
            }
        }
    }
}

这样我们在安装的过程中就对注册表进行了相应的操作,把相应的DLL注册到了IE认识的注册表里面,这样,当下一次IE启动的时候,就会运行我们的IE插件了。

645路过 2评论 IE Addon 阅读全文..
  1. anyone @

    看来一个IE插件真的很难写啊。。

  2. 置顶的更新,文章汇总 : GuoJing's Blog | 用心对待每一行代码 @

    [...] IE Extension with C# – 重写Install [...]

:-D :-? 8) :cry: 8-O :lol: :-x :-| :?: :-P :oops: :roll: :( :) :-o :wink: more »