安裝 Win32 元件以進行並存共用

下列說明如何建立 Windows Installer 套件以安裝 Win32 元件。 套件會在 Winsxs 資料夾中安裝並存元件,以供共用應用程式使用。 安裝套件之後,共用元件會全域提供給任何應用程式使用,以指定元件資訊清單檔中的元件相依性。 安裝程式不會在系統上全域註冊並存元件。

請注意,您可以使用 合併模組來安裝共用的並存元件。

繼續之前,您應該先瞭解如何撰寫不含元件的 Windows Installer 套件。 如需如何撰寫簡單安裝的範例,請參閱 安裝範例

並存安裝共用元件

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