vs2008下c#编写的BHO的打包发布

    本来想着有时间写嵌入式Linux下通过PPP拨号上网的下,说说3G网络的问题,可是目前还不知道自己用的上网设备连接的到底是3G的还是GPRS,有什么区别,所以就先放着了。而且最近刚忙完了个小软件,用到了BHO的发布,网上搜了半天才有答案,虽然只是导出注册表文件即可,但还是完整的记录下来,方便我也方便需要的人。
    下面进入正题,如果你很熟悉vs2008下的打包,也熟悉BHO的编译,那么你要在你的打包程序中加入BHO,只要把你测试时在注册表的项导出,并在打包程序中加入注册表项,同时设置BHO的dll为自注册即register的属性为vsdraCOM就可以了。还有注意的就是除去系统为你加的Interop.SHDocVw.dll和shdocvw.dll,用自己生成的BHO的目录下的Interop.SHDocVw.dll。好了,就是这么多,下面只是详细说明。分成三个部分,BHO的注册和导出注册表项,打包工程,添加卸载。
    (1)BHO的编译
     自己写的BHO是在vs2008下,用c#参照【1】完成的,网上这篇很泛滥,怎么会没有第二个人写呢,或者翻译!!!!注册时使用vs2008自带的命令行,否则会提示你regasm不存在。如果需要复制出来到其他地方编译,需要把Interop.SHDocVw.dll也带上,不然总是莫名其妙的注册了而没有真正的执行你的BHO。这也是打包的时候需要加上它,而不是用系统给你加的。
    注册命令regasm /codebase your_bho.dll 卸载regasm /u your_bho.dll。注册完成后会,使用注册表编辑器查看在你的HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/BROWSER HELPER OBJECTS/下找到你的bho的GUID(好像这个名字,是你的唯一标识)说明注册成功。可以自己再测试下,然后导出注册表项。一个reg文件后面用。

    (2)vs2008的打包过程
    详细的打包过程参照【2】,讲解的也很细致,我大致重复一下。首先是新建工程,选择其他工程类型中的setup and deployment,如下图所示。

 vs2008下c#编写的BHO的打包发布_第1张图片

然后就是加入你编译出的文件dll,当然也包括Interop.SHDocVw.dll,放到应用程序文件夹下。把用不到的去除,如图所示

 

 然后就是添加自动注册属性:选中你的BHO.dll,点属性列表,将register中改为vsdraCOM。好了文件添加完毕。下面增加注册表项,选择“视图(view)”里的“编辑(editor)”,“注册表(registry)”,导入你上步导出的注册表文件即可,基本完成打包。

3)添加卸载
    肯定需要卸载功能才算完整,那么按照【2】中一样添加msiexec.exe,该文件在system32目录下。然后选中你的工程(在solution explorer)切换到其属性列表,复制你的产品码(productcode),在msiexec.exe文件的快捷方式(右键msiexex.exe即可创建)属性列表中的Arguments加入“/x ProductCode”,完成。编译即可。当然也可以看到快捷方式里面有Icon项,可以换个好快的图标。
    好像说的好啰嗦,就这样了。要是没有注册表项,即使加入了全局程序集还有添加了数字证书肯定都是没用的啦。有问题可以留言,谢谢!

参考文章
【1】Visual C#两分钟搭建BHO IE钩子 http://www.vckbase.com/document/viewdoc/?id=1904
【2】图解vs2008打包全过程,含卸载功能的介绍http://www.itwis.com/html/net/kaifagongju/20090218/3387_2.html

你可能感兴趣的:(测试,C#,嵌入式,System,dll,Deployment)