共用方式為


VSPackage 註冊

VSPackages 必須通知 Visual Studio,表示它們已安裝並應該被載入。 此過程是通過在註冊表中寫入信息來完成的。 這是安裝人員的典型工作。

備註

在 VSPackage 開發期間,使用自我註冊是公認的做法。 不過,Visual Studio 產業合作夥伴 (VSIP) 計劃合作夥伴無法在安裝過程中使用自我註冊來運送其產品。

Windows Installer 套件中的登錄項通常會在登錄資料表中記錄。 您也可以在登錄表中註冊副檔名。 不過,Windows Installer 會透過程式設計識別碼 (ProgId) 、類別、延伸模組和動詞資料表提供內建支援。 如需詳細資訊,請參閱 資料庫資料表

請確定您的登錄項目與適合您所選並存策略的元件相關聯。 例如,共用檔案的登錄項目應該與該檔案的 Windows Installer 元件相關聯。 同樣地,版本特定檔案的登錄項目應該與該檔案的元件相關聯。 否則,安裝或解除安裝一個 Visual Studio 版本的 VSPackage 可能會中斷其他版本中的 VSPackage。 如需詳細資訊,請參閱 支援多個版本的 Visual Studio

備註

管理註冊的最簡單方法是在開發人員註冊和安裝時間註冊中使用相同檔案中的相同資料。 例如,某些安裝程式開發工具可以在建置時取用.reg格式的檔案。 如果開發人員維護.reg檔案以供自己的日常開發和偵錯,則這些相同的檔案可以自動包含在安裝程式中。 如果您無法自動共用註冊資料,您必須確保安裝程式的註冊資料複本是最新的。

註冊未受控 VSPackage

未受控的 VSPackage (包括 Visual Studio 套件範本所產生的 VSPackage) 會使用 ATL 樣式的 .rgs 檔案來儲存註冊資訊。 .rgs 檔案格式是 ATL 特有的,而且安裝撰寫工具通常無法 as-is 取用。 VSPackage 安裝程式的註冊資訊必須個別維護。 例如,開發人員可以保持.reg格式的檔案與 .rgs 檔案變更同步。 .reg檔案可以與 RegEdit 合併進行開發工作,或由安裝程式使用。

註冊受控 VSPackage

RegPkg 工具會從受控 VSPackage 讀取註冊屬性,而且可以將資訊直接寫入登錄,或寫入安裝程式可取用的.reg格式檔案。

備註

RegPkg 工具不可再散發,而且無法用來在使用者的系統上註冊 VSPackage。

為什麼 VSPackage 不應該在安裝時自行註冊

您的 VSPackage 安裝程式不應該依賴自我註冊。 乍一看,只將 VSPackage 的登錄值保留在 VSPackage 本身中似乎是個好主意。 鑑於開發人員需要可用於其日常工作和測試的登錄值,因此避免在安裝程式中維護登錄數據的單獨副本是有意義的。 安裝程式可以依賴 VSPackage 本身來寫入登錄值。

雖然理論上很好,但自我註冊有幾個缺陷,使其不適合安裝 VSPackage:

  • 要正確支援安裝、解除安裝、安裝回復和解除安裝回復,您必須為每個透過 RegPkg 進行自行註冊的受控 VSPackage 撰寫四個自訂動作。

  • 並存支援的方法可能需要您為每個支援的 Visual Studio 版本撰寫四個自訂動作,以呼叫 RegSvr32 或 RegPkg。

  • 無法安全地復原具有自我登錄模組的安裝,因為無法判斷自我登錄金鑰是否由其他功能或應用程式使用。

  • 自我註冊的 DLL 有時會連結至不存在或版本錯誤的輔助 DLL。 相反地,Windows Installer 可以使用登錄資料表來註冊 DLL,而不相依於系統的目前狀態。

  • 如果元件已指定為從來源執行,並列在 SelfReg 資料表中,則可以拒絕自行註冊程式碼存取網路資源,例如類別程式庫。 這可能會導致元件在進行管理安裝時安裝失敗。