问题标签 [vcredist]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-c++ - 如何*可靠地*在最终用户计算机上安装 VC++ 可再发行组件
Microsoft 的最佳实践要求我们出于安全原因动态链接到 VC++ 运行时,如果我们的应用程序自动获取修补程序而不需要我们这边单独的应用程序更新,那肯定会很好。
然而,在过去的几年里,我一直在为Evolve客户端制作安装程序。我们安装客户端的一个最大问题是由 vcredist 安装失败引起的。最大的错误代码是:
1612:此产品的安装源不可用。验证源是否存在并且您可以访问它。
1638:已安装此产品的另一个版本。此版本的安装无法继续。要配置或删除本产品的现有版本,请使用控制面板上的添加/删除程序。
我们还遇到过一些第三方应用程序在 64 位版本的 Windows 上手动安装了 System32 中 32 位版本的 msvcr100.dll 的情况,显然导致系统上依赖于此的所有应用程序失败。
现在,我的问题是:如果开发人员想要遵循 Microsoft 的指导方针以造福于这片土地,如果我们的产品不能可靠地安装,我们如何取得成功?我现在正处于一个十字路口,我只看到两个选择:
将我所有的二进制文件静态链接到运行时,并影响二进制大小和与之相关的安全隐患。
手动分发 VC++ 运行时 DLL 并将它们转储到我的应用程序文件夹中,尽管我什至不知道是否允许这样做。
其他人在外面做什么?
c++ - 在应用程序中包含正确的 C++ redist
我在 中构建我的应用程序Microsoft Visual Studio 2010
,并希望将其与 捆绑在一起vcredist
,但我必须手动完成。有没有一种方法可以自动vcredist
对应于我用来构建应用程序的那个?我只需要 x64 支持。
例如Microsoft Visual Studio 2012
已经捆绑vcredist
(在 下Microsoft Visual Studio 11.0\VC\redist\1033
)。Microsoft Visual Studio 2010
有类似的文件夹,但没有可执行文件或包,只有*.dll
我认为不是分发的好选择的文件。
visual-c++ - Microsoft vcredist 在运行时使用比清单中指定的版本更高的版本
Microsoft C++ 可再发行包如何工作?
我有一个在 Visual Studio 2008 中构建的二进制文件。它使用运行时库作为“多线程 DLL (/MD)”。清单中的版本是Microsoft.VC90.CRT" version="9.0.21022.8"
. 我选择了将清单嵌入二进制文件的选项。
当这个二进制文件部署在目标机器上时,它会给出一个运行时错误,指出
无法在动态链接库 MSVCP90.dll 中定位程序入口点
我知道机器默认包含的 msvcp90.dll 版本没有我的二进制文件所指的功能。
现在我安装vc++ redistributable (vcredist_x86_9.0.30729.17)并再次运行二进制文件。
这次它工作正常,我看到加载msvcp90.dll
的版本是 9.0.30729 而不是 9.0.21022.8。
这是怎么发生的?即使嵌入式清单的版本为 9.0.21022.8,我的 exe 如何选择最新版本的 msvcp90.dll?
python - 捆绑包(只是--onefile)
请阅读所有这篇文章并帮助我。
我想--onefile
用 pyinstaller 创建可执行文件。
我在开发方面有这些:
- 视窗 8.1 x64
- Qt 5.2.1
- 蟒蛇 27
- PyQt5.2.1(使用 Visual Studio 2012 构建)
- 视觉工作室 2012
- PyInstaller 2.1
- pyWin32
这些在部署端(VirtualBox)(作为一个干净的VM):
- 窗户 8 x64
- vcredist_x64 2012
这是我要构建的简单python程序:
好的,当我将其构建为--onedir
( pyinstaller main.py
) 时,它在开发方面和部署方面都可以正常工作。
当我将它构建为--onefile
( pyinstaller -F main.py
) 时,它在开发方面工作正常,但在部署方面不起作用。
并给出这个错误:
此应用程序无法启动,因为它无法找到或加载 Qt 平台插件“windows”。
可用的平台插件有:minimal、offscreen、windows。
重新安装应用程序可能会解决此问题。
我的错是什么?或者这栋楼有什么问题?
就此错误而言,它找不到临时文件夹中qt5_plugins
的文件夹中的文件夹。_MEIxxxxx
或者,你认为问题出在sys
模块上吗?如果是,我该怎么办?
感谢您提前回复
更新:
我应该说我在构建时有这个警告和错误:
1024 警告:没有这样的文件 C:\Python27\msvcp90.dll 1024 警告:程序集不完整 1026 错误:未找到程序集 amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none
更新2:
我手动添加了msvcp90.dll
,并解决了这个警告和错误。msvcm90.dll
c:\Python27
更新 3:
qt.conf:
主要规格:
qt5_plugins
使用pyinstaller
有平台插件自动创建的。我认为它不需要手动添加为extralib。
windows - vcredist_xxx.exe 的静默安装
我已使用以下命令在 Windows Server 2008R2、2012 和 2012R2 上成功安装了 vcredist_x86.exe 和 vcredist_x64.exe:
但
由于某种原因,这不适用于 2008(不是 R2),无论是 x86 还是 x64。我总是得到提示。该文件是从 \share 安装的。
非常感谢帮助。
谢谢!
c# - 使用 C++ 可再发行 DLL:s 部署 C# 项目
我正在为要部署在其他机器上的 C# 应用程序创建 Setup.msi 安装程序。
我的应用程序部署了一些 C++ DLL:s,这需要首先安装 Visual++ 运行时库(vcredist_x86.exe 或 vcredist_x64.exe)。
所以我试图通过生成一个具有以下合并模块的 Setup_x64.msi 来解决这个问题:
这些只是通过右键单击->添加->合并模块添加...如下:
这是处理这种依赖关系的正确方法吗?我不希望最终用户必须手动安装任何 vcredist...exe ,并且由于我目前没有失败的部署机器,我正在尝试验证这是正确的方法吗?
非常感谢您的宝贵时间!
//吉米
installshield - 从我的 installshield seteup 安装 vcredist_x86.exe
我使用 Installshield 5.0 来创建我的应用程序的设置。我的应用程序需要Microsoft Visual C++ 2005 redistributable
安装在目标计算机上。所以我从 mys installshieldseteup.rul
脚本启动 vcredist_x86.exe 如下:
sVCREdistprog= sPackSetupDir ^ "\\SetupPack\\vcredist_x86.exe";
if (LaunchAppAndWait (sVCREdistprog, "/q:a", WAIT) < 0) then
MessageBox ("Unable to launch: "+ sVCREdistprog+".",WARNING);
这几乎可以正常工作。但有时它会失败(在 WIN7 64 PC 上)。谁能告诉我为什么它失败了,我该如何解决这个问题?
azure - 运行 vcredist_x64.exe 作为 Azure 云服务的启动任务,osFamily="4"
有几个答案(例如this和this)和一篇博客文章指出了如何安装 Visual C++ 2010 可再发行包作为 Azure 云服务部署的一部分。
首先,将 vcredist_x64.exe 添加到 Web 项目,并将其“复制到输出目录”属性设置为“如果较新则复制”或“始终复制”。然后你对包含单行的命令文件(在我的例子中是“InstallVC.cmd”)执行相同的操作:
然后编辑 ServiceDefinition.csdef 文件以包含设置
角色内。答案和博客文章继续指出,如果将 ServiceConfiguration.csfg 上的 osFamily 设置设置为 osFamily="1" 并且需要将其设置为 osFamily="2",则启动任务将挂起.
我的设置为 osFamily="4",但部署失败。我收到错误消息Role has encountered an error and has stopped. Application startup task failed with exit code 5100
。
作为使用更新的 Azure OS 系列部署 Azure 云服务的一部分,如何安装 Visual C++ 2010 可再发行包?
visual-c++ - “/MT”开关是否消除了对 vc 运行时的需求?
我正在使用 /MT 开关编译我的 VS 2012 DLL。
这是否意味着我不必重新分配 VC 运行时 (vcredist)?
我问是因为我的 DLL 无法在干净的 XP SP3 客户端计算机上注册。如果我分发 VC 2012 运行时,它可以工作。
我认为 /MT 开关将消除对它的需求。我误会了吗?
c++ - 构建机器与客户机器上的 C++ 运行时版本
我有一个包含 C++ 项目的 Visual Studio 2012 解决方案。为了能够在客户机器上运行已编译的应用程序,我在安装程序中包含了最新的 C++ 可再发行组件作为先决条件。
我包含的 C++ 发行版是 Microsoft 的最新版本 - 版本 11.0.61030.0。
当我在构建机器上搜索 msvcr110.dll 时,我在多个位置看到该文件,但所有文件的版本均为 11.00.51106.1。
正如我所看到的,与我发给客户的版本相比,我在构建机器上有一个旧版本。这是一个问题吗?如何将我的构建环境更新到最新版本?