【问题标题】:Visual Studio 2017 Installer Project - include VC++ 2015 RedistributableVisual Studio 2017 安装程序项目 - 包括 VC++ 2015 Redistributable
【发布时间】:2019-02-06 16:55:09
【问题描述】:

我正在使用 Visual Studio 2017 中的“Visual Studio Installer”项目类型为我的应用程序创建安装程序。

我希望我的安装程序在我的应用程序中安装 Visual c++ Redistributable 2015。我已经下载了vc_redist.x86.exe 文件,将其包含在我的项目中,并且我正在尝试将安装作为“安装”上的自定义操作进行。我将使用参数/install /passive /norestart 启动。

当我执行我的安装程序时,当它执行自定义操作时,我收到此错误:

此 Windows 安装程序包有问题。作为设置的一部分运行的程序未按预期完成。请联系您的支持人员或软件包供应商。

我可以在命令提示符下运行vc_redist.x86.exe /install /passive /norestart,没有任何问题或错误。

有任何建议或替代方法将 Visual C++ 可再发行组件作为我安装的一部分吗?

【问题讨论】:

    标签: visual-studio-2017 installation redistributable visual-studio-setup-proje


    【解决方案1】:

    您无法将该可再发行组件作为自定义操作运行,因为它是基于 MSI 的安装,并且您无法运行递归 MSI 安装(您调用 VC redist 安装)。

    在 Visual Studio 安装项目中,您应该使用先决条件功能。右键单击解决方案资源管理器中的安装项目,选择属性,然后选择先决条件。这将构建一个 setup.exe 来安装先决条件,然后是您的 MSI 文件。据我所知,Microsoft Visual C++ 14 是 Visual Studio 2015 运行时。

    【讨论】:

      【解决方案2】:

      建议:迁移到WiX Burn(引导程序/下载程序/排序程序)以实现更多未来的灵活性和控制(WiX 链接如下)。

      或者先尝试下面的先决条件部分(选择“Visual Studio 14”条目进行安装)或尝试可用的合并模块(下面的部分)。请注意合并模块的免责声明。


      Logging & Mutex:日志文件说明了什么?从技术角度来看,通常的问题是由于技术运行时限制,您无法从自己运行的 MSI 设置中安装另一个 MSI 软件包。设置互斥锁以防止同时发生多个 MSI 安装事务。检查日志。我相信这个可再发行组件是基于 MSI 的 - 所以当你像你一样从自定义操作运行 EXE 时会看到这个问题。

      部署工具:Visual Studio 安装程序项目非常有限,随着时间的推移,大多数人似乎从它们迁移到另一个部署工具。 Maybe have a look here - 和 here is a list of tools。 WiX 的刻录功能(bootstrapper / downloader / sequencer)可以实现你所需要的。 Also read PhilDW's answer here.

      先决条件:Visual Studio 安装程序项目确实有 a prerequisites view(单击 Prerequisites... 按钮),其中可以通过 setup.exe bootstrapper(不是从您的 MSI 本身启动,而是从它的 bootstrapper setup.exe 启动 - 这意味着您不会从您自己的 MSI 启动安装,而是在它开始安装之前启动- 因此它可以正常工作)。我不确定“Visual Studio 14”的条目是否适用于您需要的运行时版本。我想你可以试一试。

      合并模块:有安装 Visual Studio 运行时的合并模块(see here, section "Visual C++ Runtime" - 页面下方相当多),但这些天它们似乎不够用 @ 987654330@(非常重要)。从 2015 年开始,Visual Studio 运行时本质上变得更加复杂 - 首选 EXE 安装程序。必须阅读链接 - 请。为了找到相关的合并模块,请在 %ProgramFiles(x86)% 下搜索 *.msm 文件 - 如果您安装了 Visual Studio(和/或 Windows SDK)。 Merge modules can be installed embedded in your own package without the need for a setup.exe launcher。在 Visual Studio 中,右键单击您的安装程序项目 Add,然后单击 Merge Module...

      【讨论】:

      • 这不是在回答任何问题,而是在暗示其他事情。
      • 对我来说 VS 安装程序项目太有限了:Here is why (short version)。有时你想警告人们,他们使用的方法会导致他们陷入陷阱。请参阅上面的“先决条件”部分 - 您可以使用此功能为您的 VS 版本安装 VC++ 运行时,但它非常有限。 WiX / Burn 可以安装任何你想要的东西。 Pillage github.com for samples.
      猜你喜欢
      • 2021-09-23
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多