將元件新增至封裝

Windows Installer 開發人員可以使用本主題中的指導方針來撰寫包含元件的 Windows Installer 套件。

下列指導方針適用于 Microsoft .NET Framework通用語言執行平臺使用的 Win32 元件和元件。

  • Windows Installer 元件不應包含多個元件。
  • 元件中的所有檔案都應該位於單一元件中。
  • 每個包含元件的元件都應該有 MsiAssembly 資料表中的專案。
  • 每個元件的強式組件快取名稱應該撰寫到 MsiAssemblyName 資料表中。
  • 當您為元件註冊 COM Interop 時,請使用 登錄 資料表,而不是 Class 資料表。
  • 具有相同強式名稱的元件是相同的元件。 當不同的應用程式安裝相同的元件時,包含元件的元件應該在其 Component 資料表中使用相同的 ComponentId 值。

注意

產品公告會識別可由不同應用程式安裝及使用的元件。 產品廣告不會識別私人元件。

 

新增 Win32 元件

當您包含 Win32 元件時,請使用下列指導方針:

  • 包含 Win32 元件的 元件之元件 資料表中的 KeyPath 值不應為 Null。
  • 包含 Win32 原則元件之元件的 Component 資料表中的 KeyPath 值應該是資訊清單檔。
  • 包含 Win32 元件的 元件之 Component 資料表中的 KeyPath 值,該元件不是原則元件,不應該是資訊清單檔或目錄檔案。 它應該是元件中的不同檔案。
  • 針對 Win32 元件資訊清單的assemblyIdentity區段中所列的每個名稱和值組,將資料列新增至MsiAssemblyName資料表。

新增與.NET Framework搭配使用的元件

當您包含.NET Framework通用語言執行平臺所使用的元件時,請使用下列指導方針。

  • 包含元件之元件的 Component 資料表中的 KeyPath 值不應為 Null。
  • 當您將 Common Language Runtime 使用的元件安裝到全域組件快取時,MsiAssembly 資料表的 [File_Application] 資料行中的值必須是 Null。
  • 針對元件強式名稱的每個屬性,將資料列新增至 MsiAssemblyName 資料表。 所有元件都必須具有 MsiAssemblyName 資料表中指定的 Name、Version 和 Culture 屬性。 通用群組件需要 publicKeyToken 屬性。 下表是通用程式集的 MsiAssemblyName 資料表範例,可供 Common Language Runtime 使用。

MsiAssemblyName 資料表

元件 名稱
ComponentA 名稱 simple
ComponentA version 1.0.0.0
ComponentA 文化特性 neutral
ComponentA publicKeyToken 9d1ec8380f483f5a