簡體   English   中英

我可以將 Visual Studio 2015 C++ Redistributable DLL 與我的應用程序捆綁在一起嗎?

[英]Can I bundle the Visual Studio 2015 C++ Redistributable DLL's with my application?

我使用 Microsoft Visual Studio 2015 社區版構建了一個 C++ 應用程序。 我正在使用 Advanced Installer 來確保Visual Studio 2015 的 Visual C++ Redistributable是先決條件。

但是,可再發行組件的安裝程序並不完美。 我的一些用戶報告說可再發行安裝程序掛起,或者安裝失敗,然后用戶收到“此程序無法啟動,因為您的計算機缺少 MSVCP140.dll”錯誤。

根據微軟的說法,我現在可以在我的應用程序中使用 package 可再發行 DLL,盡管他們不推薦這樣做:

要部署可再發行的 Visual C++ 文件,可以使用 Visual Studio 中包含的 Visual C++ 可再發行包(VCRedist_x86.exe、VCRedist_x64.exe 或 VCRedist_arm.exe)。 ... 也可以直接在應用程序本地文件夾中安裝可再發行的 Visual C++ DLL,該文件夾是包含可執行應用程序文件的文件夾。 出於維修原因,我們不建議您使用此安裝位置。

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x64\Microsoft.VC140.CRT中有 4 個文件。 這是否意味着我只需在安裝過程中將它們復制到我的應用程序目錄中?

  • 我的應用程序
  • concrt140.dll
  • msvcp140.dll
  • vccorlib140.dll
  • vcruntime140.dll

這樣做可以嗎? 我需要出示執照嗎? 為什么沒有更多的人這樣做,而不是要求再次預安裝可再發行組件?

C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\redist\\x64\\Microsoft.VC140.CRT有 4 個文件。 這是否意味着我只需要在安裝過程中將它們復制到我的應用程序目錄中?

是的,你引用的段落就是這個意思。

這樣做可以嗎? 我需要出示許可證嗎? 為什么沒有更多的人這樣做,而不是要求再次預安裝可再發行組件?

從技術上講,這樣做是可以的。 如果您想學究一下,您可以在readmehelp/about包含一條注釋,說明在VC++ 2015 redistributables provided in "local deployment" mode是 Microsoft 在 Visual C++ 中部署明確允許的(有更多鏈接到重新分發 Visual C++ 文件中的文件列表和許可證)。

至於為什么更多的人不這樣做,我猜(在那些關心的人中):

  • 對於像MyApp.exe這樣的單模塊應用程序,使用靜態鏈接的所有內容構建它更容易,以消除外部依賴;
  • 包括這些文件可以從分發(大概是下載)大小中節省 1+ MB;
  • 使用運行時的私有副本運行( "local deployment" )將更新的責任轉移到維護者身上,以便在關鍵/安全修復的情況下必須及時重新發布包 - 而不是"central deployment"可能會通過 Windows 更新提供,可能帶來的好處壞處。

如果先決條件安裝程序有問題,您還可以選擇將可再發行組件安裝為合並模塊。 正如同一篇 MSDN 文章所提到的:

另一種選擇是使用可再發行合並模塊(.msm 文件),它可以在 Program Files [(x86)]\\Common Files\\Merge Modules 中找到。

使用合並模塊比手動添加文件要干凈得多。 這些文件可能會被另一位不知道它們為什么在那里的同事意外刪除,或者其中一個可能無法安裝,等等......

Advanced Installer 的所有版本都支持包含合並模塊,包括免費版。

Visual Studio 社區 2022

在此處輸入圖像描述

  1. Go 至: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.32.31326\x64\Microsoft.VC143.CRT

  2. 將內容復制到項目的搜索路徑中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM