如何在我的MSI安装程序项目中包含“MSVC Runtime.exe”,并在没有安装的情况下运行它?

时间:2011-06-27 23:14:51

标签: installer windows-installer runtime action

我希望安装程序包中包含“vcredist_x86.exe”。

要求: 1)内置到msi文件,不是单独的包,不是单独安装 2)作为单个安装程序的一部分自动运行 3)仅在尚未安装的情况下运行 4)不会在用户硬盘上留下额外的副本 5)成功从命令行脚本构建安装程序文件 6)安装程序必须在运行时成功

我试过的: 1)project-> properties-> config props-> build->先决条件,然后选中“Create setup program to install prereq components”,然后选中“Visual C ++ Runtime Libraries”

问题:违反除6之外的所有要求,这是没有实际意义的。

2)在installer pro中,显示“文件系统”,然后将“vcredist_x86.exe”添加到用户的桌面或应用程序文件夹,然后在“自定义操作”下的“安装”下,右键单击 - >添加自定义操作,然后从安装位置选择“vcredist_x86.exe”。然后选择它,然后在“Arguments”下的“Properties”中,将“/ Install”更改为“/ Install / qb!” (这应该导致安装为“无人值守安装,没有取消按钮”

问题:违反了要求3,4和6.对于6:运行安装程序时,它失败并显示消息“此Windows Installer程序包有问题。程序作为一部分运行安装程序没有按预期完成。请联系您的支持人员或软件包供应商。“那将是我,我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

让我们从一些先决条件规则和最佳实践开始:

  • 他们使用单独的包
  • 仅在需要时安装
  • 由EXE引导程序处理
  • 其中大多数无法作为主要MSI安装过程的一部分运行

其中大多数都会破坏您的要求。另一种方法是使用“C:\ Program Files \ Common Files \ Merge Modules”中的Visual Studio合并模块:

http://msdn.microsoft.com/en-us/library/ms235290.aspx

http://msdn.microsoft.com/en-us/library/8x727h8b.aspx

Visual Studio安装项目无法有条件地安装合并模块,因此将始终安装它们。其他设置创作工具允许您根据相关功能调整合并模块:

  • 创建一个搜索,确定是否安装了合并模块
  • 使用该搜索结果调整合并模块功能

第三种选择是仅包含您的应用程序依赖项: http://msdn.microsoft.com/en-us/library/ms235317(VS.90).aspx

在这种情况下,只有您的应用程序才能访问运行时。此方法支持条件安装:

  • 创建一个确定运行时是否已安装的搜索
  • 使用该搜索来条件化每个依赖项文件

答案 1 :(得分:0)

好的,解决方案是使用IExpress并让它执行的东西是shell脚本(.bat文件)。

<。>在.bat文件中,让它创建“vcredist_x86”文件夹并将“vcredist_x86.exe”移入其中,然后运行setup.exe

这符合我原来的所有要求。