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