安装后必须运行的命令

如果通过 .msi 文件部署扩展,则必须在安装过程中运行 devenv /setup ,以便 Visual Studio 发现扩展。

注意

本主题中的信息适用于使用 Visual Studio 2008 及更早版本查找 devenv.exe 。 有关如何使用更高版本的 Visual Studio 发现 devenv.exe 的信息,请参阅 检测系统要求

查找 devenv.exe

可以使用 RegLocator 表和 AppSearch 表将注册表值存储为属性,从 Visual Studio 安装程序编写的注册表值中找到每个版本的 devenv.exe 。 有关详细信息,请参阅 检测系统要求

RegLocator 表行,用于从不同版本的 Visual Studio 中查找 devenv.exe

Signature Root 密钥 客户 类型
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

相应 RegLocator 表行的 AppSearch 表行

properties 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 Studio 的 devenv.exe 文件。 如果不存在任何指定的注册表值(因为未安装该版本的 Visual Studio),则指定的属性将设置为 null。

Windows Installer 支持运行属性通过自定义操作类型 50 指向的可执行文件。 自定义操作应包括脚本内执行选项 msidbCustomActionTypeInScript (1024)和 msidbCustomActionTypeCommit (512),以确保在将 VSPackage 集成到 Visual Studio 之前已成功安装。 有关详细信息,请参阅 CustomAction 表自定义操作脚本内执行选项

类型 50 的自定义操作将包含可执行文件的属性指定为目标列中源列和命令行参数的值。

用于运行 devenv.exe 的 CustomAction 表行

操作 类型 Source 目标
CA_RunDevenv2002 1586 DEVENV_EXE_2002 /设置
CA_RunDevenv2003 1586 DEVENV_EXE_2003 /设置
CA_RunDevenv2005 1586 DEVENV_EXE_2005 /设置
CA_RunDevenv2008 1586 DEVENV_EXE_2008 /设置

必须将自定义操作创作到 InstallExecuteSequence 表中,以便计划它们在安装过程中执行。 使用“条件”列的每一行中的相应属性,以防止在系统上未安装该版本的 Visual Studio 时运行自定义操作。

注意

Null 值属性的计算结果为 False 在条件中使用时。

每个自定义操作的 Sequence 列的值取决于 Windows Installer 包中的其他序列值。 序列值应使 devenv.exe 自定义操作尽可能接近,以在 InstallFinalize 标准操作之前立即运行。

InstallExecuteSequence 表用于计划 devenv.exe 自定义操作

操作 条件 序列
CA_RunDevenv2002 DEVENV_EXE_2002 6602
CA_RunDevenv2003 DEVENV_EXE_2003 6603
CA_RunDevenv2005 DEVENV_EXE_2005 6605
CA_RunDevenv2008 DEVENV_EXE_2008 6608