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

时间:2018-08-31 16:02:04

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

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

我希望安装程序通过我的应用程序安装Visual C ++ Redistributable 2015。我已经下载了output = "all"文件,并将其包含在我的项目中,并且我试图作为“安装”上的自定义操作来进行安装。我正在使用参数vc_redist.x86.exe启动。

当我执行安装程序时,如果执行自定义操作,则会出现此错误:

  

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

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

在安装过程中是否包含将Visual C ++可再分发的任何建议或替代方法?

2 个答案:

答案 0 :(得分:0)

  

推荐 :迁移到WiX Burn(引导程序/下载器/音序器)以提供更多的灵活性和控制力(下面的WiX链接)。

     

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

     

日志记录和互斥对象 :日志文件说什么?从技术角度来看,通常的问题是由于技术运行时间的限制,您无法在自己运行的MSI安装程序中安装另一个MSI软件包。设置了互斥锁可防止同时发生多个MSI安装事务。检查日志。我相信这种可重新分发的基于MSI的消息-因此,当像您一样通过自定义操作运行EXE时,您会看到此问题。

部署工具 :Visual Studio Installer项目非常有限,随着时间的推移,似乎大多数人都将其从迁移到另一个部署工具。 Maybe have a look here-和here is a list of tools。 WiX的刻录功能(引导程序/下载器/音序器)可以实现您所需要的。 Also read PhilDW's answer here

先决条件 :Visual Studio Installer项目确实具有a prerequisites view(单击Prerequisites...按钮),可以在其中定义有限数量的先决条件通过 setup.exe 引导程序进行安装(不是从您的MSI内部启动,而是从其bootstrap setup.exe启动-这意味着您不会从自己的MSI内部开始安装,但在开始安装之前-它可以正常工作)。我不确定“ Visual Studio 14”的条目是否适合您所需的运行时版本。我想你可以试试看。

合并模块 :有一些合并模块可用于安装Visual Studio运行时(see here, section "Visual C++ Runtime"-在页面下端很长),但是这些模块似乎不足天for reasons explained here(非常重要)。从2015年开始,Visual Studio Runtime从本质上讲更加复杂-首选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中,右键单击您的安装程序项目,依次单击AddMerge Module...

答案 1 :(得分:0)

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

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