这个可再分发包是基于 MSI 的安装程序,因此您不能将其作为自定义操作运行,并且您无法运行递归 MSI 安装(您的安装程序调用 VC 可再分发包)。
在 Visual Studio 设置项目中,您应该使用预备条件功能。在“解决方案资源管理器”中右键单击设置项目,选择“属性”,然后选择“预备条件”。这将构建一个 setup.exe 文件,以安装先决条件,然后是您的 MSI 文件。据我所知,Microsoft Visual C++ 14 是 Visual Studio 2015 运行库。
建议:迁移到 WiX Burn(引导程序/下载器/序列器),以便更好地控制和灵活性(请参阅以下 WiX 链接)。
或者您可以首先尝试 前提条件 部分(选择“Visual Studio 14”条目进行安装),或者尝试可用的 合并模块(下面的部分)。请注意,对于合并模块,请仔细阅读免责声明。
- WiX Burn XML Markup 示例。
- WiX Burn 信息与简单标记示例 - 含有许多进一步信息的链接。
- WiX - 安装前提条件和第三方应用程序
日志记录和互斥锁:日志文件是什么?从技术角度来看,通常的问题是由于技术运行时限制,您无法在自己正在运行的 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...