如果您透過 .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
簽章 | 根目錄 | 索引鍵 | 姓名 | 類型 |
---|---|---|---|---|
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 資料表資料列
屬性 | 簽章 |
---|---|
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 資料表的 [類型] 資料行是 2,所以不需要在 [簽章] 資料表中指定其他版本資訊。
執行 devenv.exe
在安裝程式中執行 AppSearch 標準動作之後,AppSearch 資料表中的每個屬性都有一個值,指向對應版本的 Visual Studio devenv.exe 檔案。 如果沒有指定的登錄值,因為未安裝該版本的 Visual Studio,則指定的屬性會設定為 null。
Windows Installer 支援執行屬性透過自訂動作類型 50 指向的可執行檔。 自訂動作應包含指令碼內執行選項 msidbCustomActionTypeInScript
(1024) 和 msidbCustomActionTypeCommit
(512),以確保 VSPackage 已在將 VSPackage 整合到 Visual Studio 之前成功安裝。 如需詳細資訊,請參閱 CustomAction 資料表和自訂動作指令碼內執行選項。
類型 50 的自訂動作會將包含可執行檔案的屬性指定為 [目標] 資料行中 [來源] 資料行和命令行引數的值。
要執行 devenv.exe 的 CustomAction 資料表資料列
動作 | 類型 | 來源 | Target |
---|---|---|---|
CA_RunDevenv2002 | 1586 | DEVENV_EXE_2002 | /setup |
CA_RunDevenv2003 | 1586 | DEVENV_EXE_2003 | /setup |
CA_RunDevenv2005 | 1586 | DEVENV_EXE_2005 | /setup |
CA_RunDevenv2008 | 1586 | DEVENV_EXE_2008 | /setup |
自訂動作必須撰寫到 InstallExecuteSequence 資料表中,以排定這些動作在安裝期間執行。 如果系統上未安裝該版本的 Visual Studio,請使用 Condition 資料行中每個資料列中的對應屬性,以防止執行自訂動作。
注意
Null 值屬性會在條件中使用時評估為 False
。
每個自訂動作的 Sequence 資料行值取決於您 Windows Installer 套件中的其他順序值。 順序值應該讓 devenv.exe 自訂動作盡可能接近 InstallFinalize 標準動作之前執行。
可排定 devenv.exe 自訂動作的 InstallExecuteSequence 資料表
動作 | 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 |