更新組件

本主題中的資訊會識別使用 Windows Installer 修補程式更新元件的建議指導方針。

元件更新的作者可以使用下列指導方針,這些指導方針適用于所有類型的元件:

  • 更新元件的建議方法是變更 MsiAssemblyName 資料表中元件的強式名稱。 新的元件版本可由新元件或提供舊版的相同元件提供。
  • 如果相同元件提供新的元件版本,請勿將元件類型從.NET Framework元件變更為 Win32 元件,反之亦然。
  • 如果系統上的所有應用程式都必須使用更新的元件,您應該部署原則元件。 原則元件可以將系統上的應用程式重新導向,以使用新的元件版本。 原則元件應藉由建立新的元件來提供。
  • 需要 Windows Installer 3.0 或更新版本才能卸載元件更新。 如需詳細資訊,請參閱 移除修補程式
  • 較新版本的元件應該包含先前發行元件的相同或更高版本的檔案。
  • Windows Installer 3.0 可以透過完整檔案取代或較小的差異更新來服務.NET Framework和 Win32 元件。 如需詳細資訊,請參閱 減少修補程式大小
  • 如果您的更新變更元件的強式名稱,如果修補程式套件沒有MsiPatchSequence資料表,則需要 MsiPatchOldAssemblyFile資料表和MsiPatchOldAssemblyName資料表。 如果修補程式套件在 MsiPatchSequence 資料表中有修補程式排序資訊,則不需要 MsiPatchOldAssemblyName 資料表和 MsiPatchOldAssemblyName 資料表。
  • 發行新的修補程式之前,請先套用所有先前發行的修補程式來測試修補程式。

更新 Win32 元件

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

  • 變更 MsiAssemblyName 資料表中指定的新元件強式名稱。
  • 如果您想要讓應用程式一律使用新版本的元件,而不會影響系統上其他應用程式所使用的元件版本,請使用相同的元件來包含您用於舊元件版本的新元件版本。 在 Component 資料表中保留相同的 ComponentId 。 修補應用程式之後,它只會保留新版本元件的參考。 舊版的元件可以保留在全域組件快取中的新版本。 這不會影響使用舊版元件之系統上的其他應用程式。 當元件的新和舊版都使用相同的元件時,您的更新可以是較小的差異修補程式。
  • 如果新版本的元件與您要安裝應用程式的所有系統不相容,您可以將元件的新版本安裝為並存元件。 若要並存安裝這兩個元件版本,請建立新的元件以包含新的元件版本。 新元件的 Component 資料表中的 ComponentId 應該與舊版元件的 ComponentId 不同。 在修補應用程式之後,它會保存這兩個元件版本的參考。 然後,應用程式可以透過資訊清單導向至元件的相容版本。 當元件的新舊版本使用不同的元件時,您的更新會使用完整的檔案取代。

更新.NET Framework元件

當您更新.NET Framework元件時,請使用下列指導方針。

  • 變更 MsiAssemblyName 資料表中指定的新元件強式名稱。

  • 如果您想要讓應用程式一律使用新版本的元件,而不會影響系統上其他應用程式所使用的元件版本,請變更 MsiAssemblyName 資料表中所指定之新元件的強式名稱,並使用相同的元件來包含您用於舊元件版本的新元件版本。 在 Component 資料表中保留相同的 ComponentId 。 修補應用程式之後,它只會保留新版本元件的參考。 舊版的元件可以保留在全域快取中的新版本。 這不會影響使用舊版元件之系統上的其他應用程式。 當元件的新和舊版都使用相同的元件時,您的更新可以是較小的差異修補程式。

  • 如果新版本的元件與您要安裝應用程式的所有系統不相容,您可以將元件的新版本安裝為並存元件。 若要並存安裝這兩個元件版本,請變更 MsiAssemblyName 資料表中所指定之新元件的強式名稱,並建立新的元件以包含新的元件版本。 新元件的 Component 資料表中的 ComponentId 應該與舊版元件的 ComponentId 不同。 在修補應用程式之後,它會保存這兩個元件版本的參考。 然後,應用程式可以透過資訊清單導向至元件的相容版本。 當元件的新舊版本使用不同的元件時,您的更新會使用完整的檔案取代。

  • 就地更新會覆寫全域組件快取中.NET Framework元件的複本。 這種類型的元件更新不會變更元件的強式名稱。 只會變更 MsiAssemblyName 資料表 之 FileVersion 欄位中的值。 .NET Framework元件的就地更新需要.NET Framework 1.1 SP1 或更新版本。

    注意

    就地更新類型會覆寫全域快取中的元件複本,如果新版本的元件不完全相容,則可以中斷其他應用程式。 更新元件的建議方法是變更 MsiAssemblyName 資料表中元件的強式名稱。