分享方式:


Visual C++ 中的部署

在開發電腦以外的電腦上安裝應用程式稱為「部署」。 在另一部電腦上部署 Visual C++ 應用程式時,您必須安裝該應用程式及該應用程式相依的所有程式庫檔案。 Visual Studio 可透過三種方法在您部署應用程式時一併部署 Visual C++ 程式庫:「集中部署」、「本機部署」或「靜態連結」。 集中部署會將程式庫檔案放在 Windows 目錄中,其中所有應用程式都可以自動存取它們。 本機部署會將程式庫檔案放置在與應用程式相同的目錄中。 您必須自行重新部署任何本機部署的程式庫,才能更新它們。 靜態連結會將程式庫程式碼繫結到應用程式。 當您使用靜態連結時,您必須重新編譯並重新部署應用程式,以利用程式庫的任何更新。

在 Visual Studio 2015 中,Microsoft C 執行階段程式庫已重構為特定版本的本機程式庫元件,以及現在是 Windows 一部分的新通用 C 執行階段程式庫。 如需通用 CRT 部署的詳細資料,請參閱通用 CRT 部署

集中部署

在集中部署中,程式庫 DLL 檔案會安裝在 Windows\System32 目錄中,或針對 x64 系統上的 32 位程式庫檔案安裝 Windows\SysWow64 目錄。 集中部署的程式庫檔案可供其他應用程式使用。

若要集中部署 Visual C++ 程式庫,您可以使用兩個來源檔的其中一個進行安裝:

  • 可轉散發套件 檔案。 這些檔案是獨立的命令列可執行檔,其中包含壓縮格式的所有C++ 可轉散發套件程式庫。 最新的可轉散發套件可從 Microsoft C++ 可轉散發套件最新支援的下載取得 。 當您使用可轉散發套件進行集中部署時,Windows Update 可以獨立服務程式庫。

  • 可轉散發合併模組 .msm 檔案),您可以在應用程式的 Windows Installer ( .msi ) 檔案中包含這些模組。 這個方法已被取代,因為以這種方式部署的程式庫無法由 Windows Update 自動更新。 如需詳細資訊,請參閱 使用合併模組 轉散發。

可轉散發套件檔案會安裝特定系統架構的所有 Visual C++ 程式庫。 例如,如果您的應用程式是針對 x64 建置的,您可以使用 vcredist_x64.exe 套件來安裝應用程式所使用的所有 Visual C++ 程式庫。 您可以先將應用程式安裝程式程式設計成在安裝應用程式之前,先將套件執行為必要條件。

使用可轉散發套件進行集中部署可讓 Windows Update 自動更新 Visual C++ 程式庫。 如需持續的安全性與功能,建議您在應用程式中使用程式庫 DLL,而不是靜態程式庫,並使用可轉散發套件和集中部署,而不是本機部署。

本機部署

本機部署會將程式庫檔案和可執行檔一同安裝在應用程式資料夾中。 不同的C++ 可轉散發套件程式庫版本可以安裝在相同的資料夾中,因為每個版本的檔案名都包含其版本號碼。 例如,C++ 執行時間程式庫的第 12 版是 msvcp120.dll ,而第 14 版是 msvcp140.dll

擴充至程式庫可能會分散到多個額外的 DLL,稱為 點程式庫 。 例如,Visual Studio 2017 15.6 版中發行的標準程式庫中的某些功能已新增至 msvcp140_1.dll ,以保留 的 msvcp140.dll ABI 相容性。 如果您使用 Visual Studio 2017 15.6 版(工具組 14.13)或更新版本,您可能需要在本機部署這些點程式庫和主要程式庫。 當 ABI 變更時,這些個別的點程式庫最終會新增至基底程式庫。

由於 Microsoft 無法自動更新本機部署的 Visual C++ 程式庫,因此不建議對這些程式庫進行本機部署。 如果您決定使用可轉散發程式庫的本機部署,建議您實作自己的方法來自動更新本機部署的程式庫。

靜態連結

除了動態連結的程式庫,Visual Studio 還會提供其大部分的程式庫作為靜態程式庫。 您可以用靜態方式將靜態程式庫連結至應用程式,也就是說,將程式庫物件程式碼直接連結到應用程式。 靜態連結會建立沒有 DLL 相依性的單一二進位檔,因此您不需要個別部署 Visual C++ 程式庫檔案。 不過,不建議使用此方法,因為靜態程式庫無法就地更新。 若要在使用靜態連結時更新程式庫,您必須重新編譯和重新部署應用程式。

為部署問題疑難排解

Visual C++ 程式庫的載入順序與系統相關。 若要診斷載入器問題,請使用 depends.exewhere.exe 。 如需詳細資訊,請參閱 動態連結程式庫搜尋順序(Windows)。

另請參閱

部署傳統型應用程式
通用 CRT 部署