Visual Studio 2017 安装程序项目 - 包括 VC++ 2015 可再发行组件

4
我正在使用Visual Studio 2017中的“Visual Studio Installer”项目类型创建我的应用程序安装程序。我想要我的安装程序在安装时也安装Visual C++ Redistributable 2015。我已经下载了vc_redist.x86.exe文件,并将其包含在我的项目中,然后尝试在“安装”时将其作为自定义操作进行安装。我使用参数/ install / passive / norestart来启动。但是当我执行安装程序时,在执行自定义操作时,出现以下错误信息:“此Windows Installer软件包存在问题。设置的一部分运行不正常。请联系您的支持人员或包供应商。” 我可以在命令提示符下无误地运行vc_redist.x86.exe /install /passive /norestart。是否有其他建议或替代方法来将 Visual C++ redistributable包含在我的安装程序中?
2个回答

5

这个可再分发包是基于 MSI 的安装程序,因此您不能将其作为自定义操作运行,并且您无法运行递归 MSI 安装(您的安装程序调用 VC 可再分发包)。

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


0

建议:迁移到 WiX Burn(引导程序/下载器/序列器),以便更好地控制和灵活性(请参阅以下 WiX 链接)。

或者您可以首先尝试 前提条件 部分(选择“Visual Studio 14”条目进行安装),或者尝试可用的 合并模块(下面的部分)。请注意,对于合并模块,请仔细阅读免责声明。


日志记录和互斥锁:日志文件是什么?从技术角度来看,通常的问题是由于技术运行时限制,您无法在自己正在运行的 MSI 设置中安装另一个 MSI 包。设置了互斥锁以防止同时发生多个 MSI 安装事务。检查日志。我相信这个可再发行版是基于 MSI 的 - 因此当您像执行自定义操作一样运行 EXE 时,您将看到此问题。

部署工具:Visual Studio 安装程序项目非常有限,似乎大多数人随着时间的推移会迁移到另一个部署工具。也许可以在这里看看 - 这里有一些工具列表。WiX 的 Burn 功能(启动程序/下载程序/序列化程序)可以实现您所需的功能。还要阅读 PhilDW 在此处的答案

先决条件:Visual Studio Installer Projects确实有先决条件视图(点击先决条件...按钮),在那里可以为通过setup.exe引导程序安装定义有限数量的先决条件(不是从您自己的MSI内部启动,而是从其引导程序setup.exe启动 - 这意味着您不会从自己的MSI内部启动安装,而是在它开始安装之前 - 因此它可以正常工作)。我不确定"Visual Studio 14"的条目是否适用于您需要的运行时版本。你可以试试看。

Merge Modules合并模块:有一些合并模块可用于安装Visual Studio运行时(请参见此处,“Visual C++运行时”部分 - 页面向下滚动到相应位置),但它们在现在这个时代似乎已经不太适用原因在此处解释(非常重要)。从2015年开始,Visual Studio运行时本身更加复杂 - 并且EXE安装程序是首选。请务必阅读链接。为了找到相关的合并模块,请在%ProgramFiles(x86)%目录下搜索*.msm文件 - 如果你已经安装了 Visual Studio(和/或Windows SDK)。可以将合并模块嵌入自己的包中,无需设置.exe启动器。在Visual Studio中,右键单击您的安装程序项目,选择Add,然后选择Merge Module...


这并不是回答任何问题,它在暗示其他事情。 - Roni Tovi
对我来说,VS安装程序项目太过有限:原因在这里简短版本)。有时候你想警告人们他们使用的方法会导致陷阱。请参见上面的“先决条件”部分 - 您可以使用此功能为您的VS版本安装VC++运行时,但它非常有限。WiX / Burn可以安装任何您想要的东西。在github.com上寻找示例 - Stein Åsmul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接