![](/img/trans.png)
[英]Add Visual C++ Redistributable for Visual Studio 2015 to InstallShield
[英]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 個文件。 這是否意味着我只需在安裝過程中將它們復制到我的應用程序目錄中?
這樣做可以嗎? 我需要出示執照嗎? 為什么沒有更多的人這樣做,而不是要求再次預安裝可再發行組件?
在
C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\redist\\x64\\Microsoft.VC140.CRT
有 4 個文件。 這是否意味着我只需要在安裝過程中將它們復制到我的應用程序目錄中?
是的,你引用的段落就是這個意思。
這樣做可以嗎? 我需要出示許可證嗎? 為什么沒有更多的人這樣做,而不是要求再次預安裝可再發行組件?
從技術上講,這樣做是可以的。 如果您想學究一下,您可以在readme
或help/about
包含一條注釋,說明在VC++ 2015 redistributables provided in "local deployment" mode
是 Microsoft 在 Visual C++ 中的部署明確允許的(有更多鏈接到重新分發 Visual C++ 文件中的文件列表和許可證)。
至於為什么更多的人不這樣做,我猜(在那些關心的人中):
MyApp.exe
這樣的單模塊應用程序,使用靜態鏈接的所有內容構建它更容易,以消除外部依賴;"local deployment"
)將更新的責任轉移到維護者身上,以便在關鍵/安全修復的情況下必須及時重新發布包 - 而不是"central deployment"
可能會通過 Windows 更新提供,可能帶來的好處和壞處。如果先決條件安裝程序有問題,您還可以選擇將可再發行組件安裝為合並模塊。 正如同一篇 MSDN 文章所提到的:
另一種選擇是使用可再發行合並模塊(.msm 文件),它可以在 Program Files [(x86)]\\Common Files\\Merge Modules 中找到。
使用合並模塊比手動添加文件要干凈得多。 這些文件可能會被另一位不知道它們為什么在那里的同事意外刪除,或者其中一個可能無法安裝,等等......
Advanced Installer 的所有版本都支持包含合並模塊,包括免費版。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.