VSPackage 註冊
VSPackage 必須建議 Visual Studio 安裝並載入該程式。 此程序是藉由在登錄中寫入資訊的方式完成。 這是典型的安裝程式作業。
注意
這是 VSPackage 開發期間使用自我註冊的常見做法。 不過,Visual Studio 產業合作夥伴 (VSIP) 計劃合作夥伴無法利用自我註冊的設定方式來寄送其產品。
Windows Installer 套件中的登錄項目通常會在登錄資料表中建立。 您也可以在登錄資料表中登記檔案副檔名。 不過,Windows Installer 會透過程式設計識別碼 (ProgId)、類別、副檔名和動詞資料表提供內建支援。 如需詳細資訊,請參閱資料庫資料表。
請確定您的登錄項目與適合您選擇並存策略的元件相關聯。 例如,共用檔案的登錄項目應該與該檔案的 Windows Installer 元件相關聯。 同樣地,特定版本檔案的登錄項目應該與該檔案的元件相關聯。 否則,安裝或解除安裝一個 Visual Studio 版本的 VSPackage 可能會中斷其他版本的 VSPackage。 如需詳細資訊,請參閱支援多個版本的 Visual Studio。
注意
管理註冊最簡單的方式是,在相同的檔案中針對開發人員註冊和安裝時間註冊使用相同的資料。 例如,有些安裝程式開發工具可以在建置時以 .reg 格式取用檔案。 如果開發人員為了自己的日常開發和偵錯而維護 .reg 檔案,這些相同的檔案會自動包含在安裝程式中。 如果您無法自動共享註冊資料,您必須確定安裝程式的註冊資料復本是最新的。
註冊 Unmanaged VSPackages
非受控 VSPackages (包括 Visual Studio 套件範本產生的檔案) 使用 ATL 樣式的 .rgs 檔案來儲存註冊資訊。 .rgs 檔格式專屬於 ATL,通常無法由安裝撰寫工具依原樣取用。 VSPackage 安裝程式的註冊資訊必須各別維護。 例如,開發人員可以將檔案保持與 .rgs 檔變更同步的 .reg 格式。 .reg 檔可以與 RegEdit 合併進行開發工作,或由安裝程式取用。
註冊 Managed VSPackages
RegPkg 工具會從 Managed VSPackage 讀取註冊屬性,而且可以直接將資訊寫入登錄,或寫入安裝程式可取用的 .reg 格式檔案。
注意
RegPkg 工具不可轉散發,且無法用來在使用者的系統上註冊 VSPackage。
為什麼 VSPackage 不應在安裝時間自我註冊
您的 VSPackage 安裝程式不應依賴自我註冊。 乍看之下,只在 VSPackage 本身保留 VSPackage 的登錄值似乎是個好主意。 由於開發人員需要可供其例行工作和測試使用的登錄值,因此避免在安裝程式中維護個別的登錄資料複本是合理的。 安裝程式可以依賴 VSPackage 自身來寫入登錄值。
雖然理論上行得通,但自我註冊有幾項缺陷,因此不適合 VSPackage 安裝:
正確支援安裝、解除安裝、安裝復原和解除安裝復原,都需要透過呼叫 RegPkg 來針對每個自我註冊的受控 VSPackage 撰寫四個自訂動作。
您的並行支援方法可能需要針對每個支援的 Visual Studio 版本撰寫四個叫用 RegSvr32 或 RegPkg 的自訂動作。
無法安全地復原具有自我註冊模組的安裝,因為無法判斷另一個功能或應用程式是否使用自我註冊金鑰。
自我註冊 DLL 有時會連結到不存在或錯誤的輔助 DLL 版本。 相反地,Windows Installer 可以使用登錄資料表來註冊 DLL,而不需要相依於系統的目前狀態。
如果元件同時指定為從來源執行,並且列在 SelfReg 資料表中,則自我註冊程式碼可能會拒絕存取網路資源,例如型別程式庫。 這可能會導致安裝元件作業在系統管理安裝期間失敗。