使用合併模組轉散發元件

重要

在 Visual Studio 2019 和更新版本中,C++ 可轉散發套件檔案的合併模組已被取代。 不建議您將它們用於應用程式部署。 使用合併模組安裝的可轉散發套件無法由 Windows Update 更新,因為偵測機制取決於知道安裝套件的詳細資料。 每個版本都有C++ 可轉散發套件套件的已知,但使用 MSM 的套件是使用者產生的。 Microsoft 無法知道使用者產生的套件詳細資料。 相反地,我們建議您使用C++ 可轉散發套件套件的集中部署。 集中部署會在 Windows %SYSTEMROOT%\system32\ 資料夾中安裝可轉散發檔案,以供所有應用程式和使用者使用。 可轉散發套件的集中部署可讓 Microsoft 獨立服務執行時間程式庫檔案。 此外,您應用程式的卸載無法中斷其他也使用集中部署的應用程式。 當您使用可轉散發套件進行集中部署時,您不負責追蹤和更新執行時間程式庫作為應用程式維護的一部分:Microsoft Update 服務會為您更新這些程式庫。 否則,執行時間程式庫檔案的更新會要求您更新和重新部署 .msi 安裝程式。 您的應用程式可能容易受到錯誤或安全性問題的影響,直到您這麼做為止。

Visual Studio 包含 每一個 Visual C++ 元件的合併模組 .msm 檔案),這些元件已獲授權以使用應用程式進行轉散發。 每個目標平臺都有個別的合併模組版本。 當合併模組編譯成 Windows Installer 安裝程式檔案時,它會啟用將C++ 可轉散發套件檔案部署到該特定平臺。 您無法在一個安裝程式中包含相同 DLL 不同版本的合併模組。 在安裝程式安裝程式檔案中,指定合併模組是應用程式的必要條件。

您可以使用合併模組進行 集中部署或 本機部署 。 除非使用者具有系統管理員許可權,否則無法安裝集中部署的檔案。 本機部署可能會允許非系統管理員安裝及執行您的應用程式,但代價是獨立的服務性。

如果您嘗試在較新的現有程式庫上集中部署舊版合併模組,安裝服務就會回報錯誤。 您應該撰寫安裝程式安裝程式,以正常處理此失敗,而不會顯示錯誤訊息。 即使發生此失敗,您的程式碼仍可成功部署並執行。 如需詳細資訊,請參閱 Visual Studio 版本 之間的 C++ 二進位相容性。

如果您只將程式碼部署為 .msi 安裝程式,建議您不要在安裝程式中包含合併模組。 相反地,找不到必要的可轉散發程式庫時,向使用者回報失敗。 在 [失敗] 對話方塊中,包含如何尋找及安裝最新可轉散發套件的指示。 如需可轉散發套件的詳細資訊和連結,請參閱 最新支援的 Visual C++ 下載

最新的可轉散發套件和合併模組與使用 Visual Studio 2015 和更新版本所建置的程式碼相容。 Visual Studio 版本在 2015 之前建置的程式碼需要個別的可轉散發套件。

使用合併模組的時機

合併模組僅適用于有限的情況:

  • 基於原則原因,您無法安裝或要求個別的可轉散發套件,
  • 您的程式碼需要程式庫的特定 Bug 相容版本,
  • 您的程式碼只會以一個平臺為目標,而且您對多個 DLL 版本沒有相依性,
  • 您想要定期服務已部署的程式碼,因此程式庫會保持最新狀態。

當您使用合併模組時,必須使用程式庫更新來追蹤並定期服務應用程式。 否則,您最終會強制用戶端在執行程式碼或保持安全之間選擇。

哪裡可以找到合併模組檔案

在 Visual Studio 2022 和 2019 中,合併模組檔案是Visual Studio 安裝程式中名為 C++ < 版本 > 可轉散發 MSM 的選擇性可安裝元件的一部分。 合併模組預設會安裝為 Visual Studio 2017 和 Visual Studio 2015 中 C++ 安裝的一部分。 在 Visual Studio 2022 中安裝時,您會在 中找到 %VCINSTALLDIR%Redist\MSVC\v143\MergeModules C++ 可轉散發套件合併模組。 在最新版的 Visual Studio 2019 中,合併模組位於 %VCINSTALLDIR%Redist\MSVC\v142\MergeModules 中。 在 Visual Studio 2019 和 Visual Studio 2017 中,也會在 中找到 %VCToolsRedistDir%MergeModules 。 在 Visual Studio 2015 中,可在 中找到 Program Files [(x86)]\Common Files\Merge Modules 它們。 如需詳細資訊和可轉散發合併模組清單的連結,請參閱 轉散發 Visual C++ 檔案

另請參閱

轉散發 Visual C++ 檔案