安裝 Win32 元件以進行並存共用
下列說明如何建立 Windows Installer 套件來安裝 Win32 元件。 套件會在 Winsxs 資料夾中安裝並存元件,以便共用應用程式。 安裝套件之後,共用元件可全域提供給任何指定相依於元件指令清單檔案中的元件的應用程式使用。 安裝程式不會全局登錄系統上的並存元件。
請注意,您可以使用 合併模組來安裝共用的並存元件。
繼續之前,您應該先瞭解如何撰寫不含元件的 Windows Installer 套件。 如需如何撰寫簡單安裝的範例,請參閱 安裝範例。
安裝並存的共用組件
- 定義包含 Win32 元件的 Windows Installer 元件。 此元件可能包含應該一律隨元件一起安裝或移除的其他資源。 應用程式的所有其他元件都可以編寫,就像在沒有使用組件的情況下進行安裝一樣。 將數據列新增至包含 Win32 元件的元件 元件數據表。 為此元件代碼輸入有效的 Windows Installer GUID。 請勿使用指令清單檔作為此元件的金鑰路徑。
- 將數據列新增至 FeatureComponents 數據表, 將元件與 Windows Installer 功能綁在一起。 如需詳細資訊,請參閱 元件和功能。 Windows Installer 功能應該是用戶可辨識之應用程式的一部分功能。 當使用者選取此功能,或由應用程式故障觸發時,就會啟動組件。 如果元件定義其他功能,請將額外的數據列新增至功能屬性的 Feature 數據表。 撰寫合併模組時不需要此步驟。
- 針對並行程式集,系結和啟用資訊,例如 COM 類別、介面和型別程式庫,會儲存在組件清單檔案中,而不是登錄。 共用元件會將此資訊儲存在元件指令清單中。 在支援並存組件的系統上,安裝程式會略過處理在 Extension 表、Verb 表、TypeLib 表、MIME 表、Class 表、ProgId 表,以及 AppId 表中輸入的任何資訊。 綁定和啟用資訊可以輸入這些資料表中,以供不支援並存組件共用的系統使用。
- 並排安裝不會全域註冊組件,如果已在 SelfReg 數據表中輸入任何自我註冊資訊,安裝程式就會略過自我註冊元件。 自我註冊資訊可能會輸入 SelfReg 數據表,以在不支援並存元件共用的系統上自我註冊元件。
- 將任何其他註冊表資訊,不包含元件的系結和啟動或自我註冊,新增至 註冊表數據表;RemoveRegistry 數據表,以及 Environment 數據表。
- 因為這是共用元件,因此不會產生 .local 檔案。 請勿在 IsolatedComponent 資料表中包含此元件的資訊。 安裝程式會在支援並存共用的作業系統上,略過此元件的 IsolatedComponent 資料表。 如果您希望元件在支援 .local 檔案的系統上是私人的,請將資訊新增至 IsolatedComponent 數據表。
- 若要啟用並存共用,必須將 Win32 元件安裝到 Winsxs 資料夾中。 這可藉由將 MsiAssembly 數據表的 File_Application 數據行保留給元件, null 來完成。 這會告訴安裝程式將組件安裝到 WinSxS 資料夾,而不是安裝到該組件的資料夾。 將數據列新增至包含 Win32 元件的元件 MsiAssembly 數據表。 在 MsiAssembly 數據表的 [屬性] 欄位中輸入值 1,以指定這是 Win32 元件。 針對共享元件,請將File_Application欄位保留空白。 將 MsiPublishAssemblies 操作 新增至 InstallExecuteSequence 資料表 或 AdvtExecuteSequence 資料表。 將 MsiUnpublishAssemblies 動作 新增至 InstallExecuteSequence 表。
- 將數據列新增至元件的 MsiAssemblyName 數據表。 針對清單的 assemblyIdentity 區段中指定的每個名稱和值組,新增一個資料列。 如需範例,請參閱 MsiAssemblyName 數據表。