首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows7上部署用Visual 2015开发的C++ exe的再发行版

在Windows7上部署用Visual 2015开发的C++ exe的再发行版
EN

Stack Overflow用户
提问于 2016-01-04 13:34:28
回答 3查看 8.4K关注 0票数 18

我使用Visual 2015 (在Windows 10上)开发了一个32位的C++应用程序.我想将它部署到运行Windows 7及更高版本的计算机上。

我组装了一个WiX安装程序,并包括了VC++可再发行的合并模块,如描述的这里。我包含的合并模块是C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC140_CRT_x86.msm

此安装程序似乎工作正常,但在Windows7上安装的程序将无法运行,抱怨缺少api-ms-win-crt-runtime-l1-1-0.dll

在搜索过程中,我怀疑来自这里的可再发行包这里中可能有额外的文件,但是WiX文档告诉我使用msm而不是exe。

合并模块也有可能安装失败。我没有看到任何错误,但是我还没有重新运行它,启用了日志来检查这种可能性。

另一种选择可能是使用burn,但我不熟悉这个工具;如果正确的话,我会选择这条路线,但如果可能的话,我更愿意坚持使用MSI。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-04 18:57:13

在Visual 2015中,VC++运行时重新发行表变得更加复杂。关于通用CRT,请参见VC团队博客文章。基本上,合并模块是不够的:

通用CRT不会有合并模块。如果您目前使用CRT合并模块,并且仍然希望集中部署VisualC++库,我们建议您移到上面提到的Windows包或VCRedist。或者,您可以选择静态链接到Universal和Visual库。

票数 11
EN

Stack Overflow用户

发布于 2016-11-08 14:37:29

我们遇到了这样的麻烦: MSI软件包未能用MSI Error 1618: 'Another installation is already in progress' during installation/uninstallation.安装可再发行版,我们使用Bootstraper安装了2015年的WIX可再发行版。例如:

代码语言:javascript
复制
<Chain>
  <!-- Microsoft Visual C++ 2015 x86 libraries -->
  <ExePackage Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes"
     SourceFile="EXAMPLE_PATH\vc_redist.x86.exe" InstallCommand="/install /passive /norestart">
  </ExePackage>

  <MsiPackage Id="MainPackage" SourceFile="YOUR_MSI_PACKAGE.msi" DisplayInternalUI="no" Compressed="yes" Vital="yes"/>
</Chain>

票数 3
EN

Stack Overflow用户

发布于 2017-07-07 21:52:31

值得注意的是,现在可以在应用程序中分发。MSDN博客文章描述了以下步骤:

  1. 安装Windnows 10 SDK
  2. 转到C:\Program Files (x86)\Windows Kits\10\Redist\ucrt,并为您所针对的平台找到DLL
  3. 将它们复制到应用程序的程序目录中

它们不是很大。总计约2兆字节。

我最后使用了这种技术,因为:

  • 它不需要我创建一个单独的WiX包,然后引导它们;
  • 它不要求用户运行任何额外的安装程序。

我不能说它是否能在所有的计算机上工作,但是它能在我测试过的计算机上工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34592378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档