如何检测Visual Studio 2012的Visual C++ Redistributable是否已安装?
我试过谷歌,没有人问这个问题,惊喜!
我目前首选的C++环境是免费且非常出色的Microsoft Visual Studio 2005 Express版本.我不时将发布的.exe文件发送给其他人,结果令人满意.然而,最近我做了一个令人不安的发现,令人愉快的结果是基于我想要的更多运气.试图在一个旧的(2001年份,没有严格更新)XP盒子上运行这些程序之一,只给我一个讨厌的"系统无法运行x.exe"(或类似)消息.
一些谷歌搜索显示,使用此工具集,甚至指定静态链接会导致一个简单的hello-world.exe实际上依赖于额外的.dll文件(msvcm80.dll等).一个非常复杂的版本策划系统(清单文件任何人?)然后将不会让.exe运行没有完全正确的.dll版本.我不想要或不需要这些东西,我只想要一个老式的自包含.exe,除了最低的公分母Win32操作之外什么都不做,并且可以在任何旧的win32操作系统上运行.
有谁知道它是否可以用我现有的工具集做我想做的事情?
谢谢.
我需要找到产品GUID对于安装MSI文件,以进行维护,如补丁,卸载,也为审计目的.
我有一个与此问题非常相似的问题,但答案对我不起作用.
软件我维护设置取决于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,或者此时我还缺少什么?是否有一个带有内部和"外部"版本号的表,所以我可以暗示某个次要版本号?
我无法相信微软没有为这种情况提供任何东西,但是现在搜索互联网的时间已经太久了,现在让我回到了好的地方.
我有一个使用Visual Studio 2015开发的c ++应用程序,以及一个Wix安装程序和一个Burn bootstrapper.该应用程序的早期版本能够使用Visual Studio合并模块来安装必要的先决条件,但在使用Visual Studio 2015时看起来这不是一个选项(请参阅Redistributables用于部署在Windows 7上使用Visual Studio 2015开发的C++ exe)).
根据该链接中的建议,我们已经开始使用带有vital ="yes"的ExePackage在Burn中安装vcredist.这通常很有效 - 我们有几个客户由于vcredist的各种问题导致安装失败.直到最近,这些都是导致安装失败的错误.
在过去的几天里,由于安装了较新版本的可再发行组件,我们收到了几个安装程序失败的报告:vcredist失败,错误代码为0x80070666,导致我们的引导程序失败.
我的问题是:
我使用Visual Studio 2015(在Windows 10上)开发了一个32位C++应用程序.我想将它部署到运行Windows 7及更高版本的计算机上.
我把一个WiX的安装程序并按照上述方法包括VC++可再发行合并模块这里.我包含的合并模块是C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC140_CRT_x86.msm.
此安装程序似乎工作正常,但在Windows 7上安装的程序将无法运行,抱怨丢失api-ms-win-crt-runtime-l1-1-0.dll.
从搜索我怀疑有可能是在再发行组件包额外的文件vc_redist.x86.exe从这里,但WiX的文档告诉我用的MSM,而不是一个exe.
合并模块也可能无法安装.我没有看到任何错误,但我没有重新运行它,启用日志来检查这种可能性.
另一种选择可能是使用,burn但我不熟悉这个工具; 如果这是正确的,我会走那条路,但如果可能的话,我宁愿坚持使用MSI.
随着Microsoft在其最新版本中更改注册表项的模式,我如何检测是否在计算机上安装了Visual C++ 2017 Redistributable?
我的目标是安装VC++ 2015Redist,因为该软件是使用VS2015编写的.如果我能在一台机器上成功检测到VC++ 2017Redist,那么我跳过安装VC++ 2015Redist
redistributable visual-c++ vcredist visual-c++-2015 visual-c++-2017
我已经合并了 msm 与 2015 crt:
<DirectoryRef Id="TARGETDIR" >
<Merge Id = "Microsoft_VC140_CRT_x64.msm" FileCompression = "yes" Language = "1033" SourceFile = "..\\..\\..\\..\\..\\..\\..\\external\\tools\\systemsetups\\merge_modules\\Microsoft_VC140_CRT_x64.msm" DiskId = "1" />"
</DirectoryRef>
<Feature>
<Feature Id="Complete" Title="Complete" Absent="allow" Level="1">
...
<MergeRef Id="Microsoft_VC140_CRT_x64.msm"/>
...
</Feature>
Run Code Online (Sandbox Code Playgroud)
但我仍然收到:
---------------------------
MyApp.exe - System Error
---------------------------
The program can't start because mfc140u.dll is missing from your computer. Try reinstalling the program to fix this problem.
---------------------------
OK
---------------------------
Run Code Online (Sandbox Code Playgroud)
有什么想法如何正确合并它吗?
wix ×4
visual-c++ ×3
vcredist ×2
burn ×1
c++ ×1
install ×1
installation ×1
linker ×1
powershell ×1
uninstall ×1