1. 主页 > vs安装问题 > VS2005安装问题 >

Visual Studio 2005插件编写与安装教程

Visual Studio 2005插件编写与安装教程
Tutorial for Visual Studio 2005 Add-in(Integration Package) Dev and Setup or Installation
remex1980 原创于 2007-6-19 19:51:44
原作者: remex1980
最近在做一些VS2005上的插件,在程序安装的时候着实遇到了不少问题,现在把自己的心得记录下来,以便同仁查阅:)

本文将介绍:如何调用、调试一个简单的Visual Studio 2005集成包(Visual Studio 2005 Integration Package),并集中精力详解如何为插件写一个安装程序。



安装Visual Studio 2005 SDK

这个我不想说太多,到微软的网站上下载最新版本,然后安装就好了。这里,我安装的是SDK 4.0,2007年2月发布的版本。

创建工程
创建一个空的工程

image

添加安装后的插件的例子

到sdk 的实例目录,如C:/Program Files/Visual Studio 2005 SDK/2007.02/VisualStudioIntegration/Samples/IDE/CSharp,本文将使用 Reference.ComboBox例子,它会给vs 2005的工具栏上添加一个ComboBox下拉框。

拷贝Reference.ComboBox目录到工程文件夹,并添加为其中的一个项目。
image


image

此 时,有可能出现下面的错误提示"Unable to read the project file 'Reference.ComboBox.csproj'. E:/temp/ToolbarcomboBox/Reference.combobox/Reference.ComboBox.csproj(101,11), The imported project "E:/Tools/Build/Microsoft.VsSDK.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk."
image

这 是因为即将打开的项目是SDK下开发的,需要一个sdk的文件,用记事本打开该项目文件(此处是/Reference.ComboBox/ Reference.ComboBox.csproj),到出错的行数,或查找Microsoft.VsSDK.targets,修改全路径到SDK安装 目录下。
本例中


<Import Project="........ToolsBuildMicrosoft.VsSDK.targets" Condition="'$(_NTDRIVE)' == ''"/>





<Import Project="C:Program FilesVisual Studio 2005 SDK?7.02VisualStudioIntegrationToolsBuildMicrosoft.VsSDK.targets" Condition="'$(_NTDRIVE)' == ''"/>


然后,重复上面的步骤加入插件项目。

调试插件

设 置项目属性(右键Reference.ComboBox项目,选择Properties选项),选择Debug项,设置"Start Action"到"Start External Program:",并选择vs 2005 的ide 执行文件位置,本文处为D:/Program Files/Microsoft Visual Studio 8/Common7/IDE/devenv.exe。设置"start options"中“command line argumnent:”为/rootsuffix Exp。

image

然后,按F5,vs2005会打开另外一个ide。
右键新打开的VS 2005工具栏,选择Combo Box Sample,就可以看到下面的结果了。
image
image

添加安装时执行的Installer链接库

添加一个新的project,此处命名为Reference.Combobox.VsSetupAction。

image

添加一个新的类(Add New Item),继承Installer。本文为VSIDEInstaller。
image
右键DevEnvSetupAction.cs文件,选择查看代码View Code

重载Install函数

 


判断VS 2005是否正在运行



为了使上面的代码能够运行,还需要引用下面的三个命名空间



添加安装项目

添加一个新项目,并选择类型为Setup Project。

image

添加文件到安装项目
右键安装项目,在弹出菜单中选择View->File System,在Application Folder中添加上面两个项目的输出文件(右键Add->Project Output)。
image

添加安装时的动作到安装项目

右键安装项目,在弹出菜单中选择View->Custom Actions,在Install文件夹图标中,右键选择Add Customer Action,选择应用程序文件夹中的安装动作项目的输出文件。


image

添加注册表项到安装项目

插件是需要注册到系统中的,也就是要注册到系统的注册表中,更具体一点说,就是注册到VS2005的注册表项里。

不过问题来了,谁知道该注册那些项?都是那些值呢?
不用担心,VS2005已经给了一个很好的工具,让你知道该注册那些东西了。

获取插件需要的注册表项

运行cmd.exe,到命令行模式,然后调用SDK中的regpkg.exe输出插件包所需要注册的注册表项。
本例中命令行如下:

regpkg.exe /regfile:c:ComboPackage.reg "c:Reference.ComboBox.dll"



首 先需要到regpkg.exe所在目录下,本例在C:/Program Files/Visual Studio 2005 SDK/2007.02/VisualStudioIntegration/Tools/Bin位置,输出注册表文件c:/ ComboPackage.reg。c:/Reference.ComboBox.dll是插件dll的路径(先编译vs package,然后拷贝到C:,当然,任何一位置都可以,只需要指定其全路径就行)。

image

打开上面输出的注册表文件,把对应的项和值,写在安装项目的注册表中就可以了,如下图:
image

对应的注册表文件中的值如下:


REGEDIT4

[HKEY_LOCAL_MACHINESoftwareMicrosoftVisualStudio8.0InstalledProductsComboBoxPackage]
@="#100"
"Package"="{0cd316df-48c8-4c28-af14-1be390348214}"
"ProductDetails"="#102"
"PID"="1.0"
"LogoID"="#400"
[HKEY_LOCAL_MACHINESoftwareMicrosoftVisualStudio8.0Packages{0cd316df-48c8-4c28-af14-1be390348214}]
@="Microsoft.Samples.VisualStudio.ComboBox.ComboBoxPackage, Reference.ComboBox, Version=1.0.2726.34182, Culture=neutral, PublicKeyToken=null"
"InprocServer32"="C:/WINDOWS/system32/mscoree.dll"
"Class"="Microsoft.Samples.VisualStudio.ComboBox.ComboBoxPackage"
"CodeBase" = "[TARGETDIR]Reference.ComboBox.dll"
"Assembly"="Reference.ComboBox, Version=1.0.2726.34182, Culture=neutral, PublicKeyToken=null"
[HKEY_LOCAL_MACHINESoftwareMicrosoftVisualStudio8.0Packages{0cd316df-48c8-4c28-af14-1be390348214}]
"ID"=dword:00000001
"MinEdition"="Standard"
"ProductVersion"="1.0"
"ProductName"="Reference.ComboBox Sample"
"CompanyName"="Microsoft"
[HKEY_LOCAL_MACHINESoftwareMicrosoftVisualStudio8.0Menus]
"{0cd316df-48c8-4c28-af14-1be390348214}"=", 1000, 1"

注意:为了适应不同的系统环境,可以将InprocServer32中的值,设置成[SystemFolder]mscoree.dll。这样,就可以自动找到对应的系统目录了。

保存工程,编译Setup Project,这样你的插件的安装程序就做好了,是不是很简单?:)


特别提醒:别忘了在里加上上面的蓝色注册表项,在生成的文件中没有自动产生。 

本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2005anzhuangwenti/2020/0721/725.html

联系我们

在线咨询:点击这里给我发消息

微信号:PREEE8

工作日:9:30-18:30,节假日休息