如果通过 .msi 文件部署扩展,则必须在安装过程中运行 devenv /setup ,以便 Visual Studio 发现扩展。
注释
本主题中的信息适用于使用 Visual Studio 2008 及更早版本查找 devenv.exe 。 有关如何使用更高版本的 Visual Studio 发现 devenv.exe 的信息,请参阅 检测系统要求。
查找 devenv.exe
可以使用 RegLocator 表和 AppSearch 表将注册表值存储为属性,从 Visual Studio 安装程序写入的注册表值中找到每个版本的 devenv.exe 。 有关详细信息,请参阅 检测系统要求。
用于从不同版本的 Visual Studio 中查找 devenv.exe 的 RegLocator 表行
| Signature | 根 | Key | Name | 类型 | 
|---|---|---|---|---|
| RL_DevenvExe_2002 | 2 | SOFTWARE\Microsoft\VisualStudio\7.0\Setup\VS | EnvironmentPath | 2 | 
| RL_DevenvExe_2003 | 2 | SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VS | EnvironmentPath | 2 | 
| RL_DevenvExe_2005 | 2 | SOFTWARE\Microsoft\VisualStudio\8.0\Setup\VS | EnvironmentPath | 2 | 
| RL_DevenvExe_2008 | 2 | SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS | EnvironmentPath | 2 | 
AppSearch 表中的行与对应的 RegLocator 表行
| 资产 | Signature | 
|---|---|
| DEVENV_EXE_2002 | RL_DevenvExe_2002 | 
| DEVENV_EXE_2003 | RL_DevenvExe_2003 | 
| DEVENV_EXE_2005 | RL_DevenvExe_2005 | 
| DEVENV_EXE_2008 | RL_DevenvExe_2008 | 
例如,Visual Studio 安装程序将 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS\EnvironmentPath 的注册表值作为 C:\VS2008\Common7\IDE\devenv.exe写入,安装程序必须运行的可执行文件的完整路径。
注释
由于 RegLocator 表的 Type 列为 2,因此不需要在 Signature 表中指定其他版本信息。
运行 devenv.exe
在安装程序中运行 AppSearch 标准操作后,AppSearch 表中的每个属性都拥有一个值,指向对应版本的 Visual Studiodevenv.exe 文件。 如果不存在任何指定的注册表值(因为未安装该版本的 Visual Studio),则指定的属性将设置为 null。
Windows Installer 支持通过自定义操作类型 50 运行指向某个可执行文件的属性。 自定义作应包括脚本内执行选项 msidbCustomActionTypeInScript (1024)和 msidbCustomActionTypeCommit (512),以确保在将 VSPackage 集成到 Visual Studio 之前已成功安装。 有关详细信息,请参阅 CustomAction 表 和 自定义操作脚本内执行选项。
类型 50 的自定义操作将包含可执行文件的属性指定为源列的值,并在目标列中指定命令行参数。
用于运行 devenv.exe 的 CustomAction 表的行
| Action | 类型 | 来源 | 目标 | 
|---|---|---|---|
| CA_RunDevenv2002 | 1586 | DEVENV_EXE_2002 | /设置 | 
| CA_RunDevenv2003 | 1586 | DEVENV_EXE_2003 | /设置 | 
| CA_RunDevenv2005 | 1586 | DEVENV_EXE_2005 | /setup | 
| CA_RunDevenv2008 | 1586 | DEVENV_EXE_2008 | /设置 | 
必须将自定义操作编入 InstallExecuteSequence 表,以便在安装过程中安排执行。 使用“条件”列的每一行中的相应属性,以防止在系统上未安装该版本的 Visual Studio 时运行自定义作。
注释
在条件中使用时,空值属性被评估为 False。
每个自定义操作的Sequence列的值取决于Windows Installer包中的其他序列值。 序列值应安排 devenv.exe 自定义操作尽可能紧接在 InstallFinalize 标准操作之前运行。
InstallExecuteSequence 表用于安排 devenv.exe 的自定义操作。
| Action | Condition | 序列 | 
|---|---|---|
| CA_RunDevenv2002 | DEVENV_EXE_2002 | 6602 | 
| CA_RunDevenv2003 | DEVENV_EXE_2003 | 6603 | 
| CA_RunDevenv2005 | DEVENV_EXE_2005 | 6605 | 
| CA_RunDevenv2008 | DEVENV_EXE_2008 | 6608 |