我有一个旧的DLL使用Microsoft Visual C++ 2003(7.1)运行时包.不幸的是我不再拥有那个DLL了.没有重新安装VS2003,还有另一种方法可以获得运行时可再发行的dll吗?
我正在C++
Visual Studio中编写一个简单的应用程序.它还有一个安装项目.它在我的开发机器上运行良好,但是当我在用户的机器上安装此应用程序时,它需要Visual C++ Redistributable Package
.我想知道为什么我的申请需要C++ Redistributable
?C++
Windows附带标准运行时库,不是吗?
redistributable msvcrt visual-studio visual-c++ windows-runtime
是否有一个注册表设置,我可以查找以确定是否已安装Visual C++可再发行组件,无论是独立还是作为Visual Studio 2008的一部分?我知道我可以启动VC++ 2008可再发行安装程序并让它处理检测,但是如果我可以检查它并且如果可再发行组件已经在系统上则不打扰启动安装程序它看起来会更清晰.
如果没有可搜索的设置,这并不重要,因为这仅适用于我们软件新版本的初步安装程序.对于我们正在开发的基于Windows Installer的新安装程序,我们不需要它来替换旧的技术安装程序,并将使用合并模块.
我有一个与此问题非常相似的问题,但答案对我不起作用.
软件我维护设置取决于VC++ 2008(精确地说是SP1),因此我需要找到一个安装VCRedist的解决方案(如果尚未安装).我理解正确的方法是用合并模块构建msi,但它不在我手上.
我所指的重复问题(被接受的问题)的答案对我不起作用,因为每个小版本(例如9.0.30729.01 vs 9.0.30729.17)都有适当的GUID,我无法猜测或预测未来的版本.此外,我认为这不会检测Visual Studios,因此当它已经在开发者机器上时不必要地安装VCRedist Package.我不想用这个来惹恼任何人,当然不是那些已经安装了DevStudio的人.
现在另一个答案说我应该看看WinSxs文件夹,$WINDIR\WinSxS\x86_Microsoft.VC80.CRT_
但是这还没有(但)帮助我暗示SP1,或者此时我还缺少什么?是否有一个带有内部和"外部"版本号的表,所以我可以暗示某个次要版本号?
我无法相信微软没有为这种情况提供任何东西,但是现在搜索互联网的时间已经太久了,现在让我回到了好的地方.
我最近在工作中使用了很多新的.NET 3.5功能.我正在构建的应用程序旨在分发给可能在其计算机上没有最新版本(或可能是任何版本).NET框架的消费者.
我去下载.NET 3.5可再发行组件包只是为了发现它几乎是200 MB!这对我的应用程序来说是不可接受的,因为它应该是一个快速且无痛的消费者应用程序,可以快速安装并在用户的计算机上保持低调.对于已安装.NET 3.5的用户,到目前为止,我们的二进制下载是即时的.这个200 MB的大猩猩将下载量超过四倍.除了这个可再发行的软件包之外,还有什么其他选项可以用来确保框架在机器上,不会让用户退出我们的"快速无痛"工作流程吗?从开始下载到最终安装的目标时间不到两分钟.对于尚未安装.NET的人来说,这是不可能的?
当我尝试在Windows 8.1上安装vc_redist.x64.exe时出现以下错误:
无法配置每台计算机的MSU程序包.
我只是想了解为什么在Windows中有些事情如此复杂......
我们正在将VC++项目从Visual Studio 2003移植到Visual Studio 2008 SP1(9.0.30729.4148).依赖的外部库也使用Visual Studio 2008 SP1进行编译.
MainApp - Main application Compiled with VS SP1 9.0.30729.4148
ExtStaticLib1 - External static library compiled with VS SP1 9.0.30729.4148
ExtDynamicDll1 - External DLL compiled with VS SP1 9.0.30729.4148
Run Code Online (Sandbox Code Playgroud)
主应用程序有两种部署方案:
我们正在做以下事来解决这个问题:
使用宏_BIND_TO_CURRENT_OPENMP_VERSION(对于MainApp中的所有项目)编译MainApp目标.
将VS2008SP1可再发行DLL分发为专用程序集,并将它们复制到应用程序安装目录中.
问题:
谢谢.
c++ redistributable visual-studio-2008-sp1 visual-c++-2008 visual-c++
据宣布,Universal CRT将是一个可重新分发的DLL,因此应用程序本地部署仍然是可能的.
我已经安装了Visual Studio 2015 Express Edition,我在SDK目录中寻找ucrtbase.dll,但我找不到任何东西.我查看的目录是"C:\ Program Files(x86)\ Microsoft SDKs\Windows Kits\10",但在"Microsoft.UniversalCRT.Debug"下只有CRT的调试版本.
我不想从我的系统中复制任何DLL,我总是只从"Redist"目录中打包文件.因此,例如(与之前版本的MSVC一样),我从"C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT"重新分发文件,其中包含x86版本的我的应用.
我可以下载包含ucrtbase.dll或Visual Studio或SDK更新的软件包吗?
此外,我不确定是否只是ucrtbase.dll就足够了,因为应用程序似乎链接到存根DLL api - *.dll,我不确定是否需要将它们重新分发为好.
我正在使用DeployMaster为使用Qt用C++编写的32位Windows应用程序构建安装程序.
可执行文件取决于Visual Studio 2013可再发行组件 - 即,在运行此应用程序之前,最终用户必须安装32位Visual Studio 2013可再发行组件.
我用谷歌搜索,并查看其他StackOverflow问题.特别是,此链接提供了要检查的确切注册表项,但对于VS 2008的情况.
我需要VS 2013,而不是VS 2008.
但是,理想情况下,它将是一个可靠的注册表检查 - 而不是程序化解决方案 - 因为我可以使用DeployMaster安装程序轻松检查注册表项.(如果确定系统没有安装可再发行组件,则可以轻松地让DeployMaster安装程序启动安装程序.)
是否有人知道一种可靠的方法,最好使用注册表项,以便确定是否可以在最终用户的计算机上安装32位VS 2013可再发行组件?
windows registry redistributable visual-studio visual-studio-2013
redistributable ×10
visual-c++ ×5
c++ ×2
runtime ×2
.net ×1
c ×1
dependencies ×1
deployment ×1
dll ×1
installation ×1
msvcrt ×1
registry ×1
unmanaged ×1
vcredist ×1
windows ×1
windows-8.1 ×1