【问题标题】:how to include "MSVC Runtime.exe" in my MSI installer proj, and have it be run if it's not installed?如何在我的 MSI 安装程序项目中包含“MSVC Runtime.exe”,如果未安装,如何运行它?
【发布时间】:2011-06-27 23:14:51
【问题描述】:

我想在我的安装程序包中包含“vcredist_x86.exe”。

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

我尝试了什么: 1)project->properties->config props->build->Prerequisites,然后勾选“Create setup program to install prereq components”,再勾选“Visual C++ Runtime Libraries”

问题:违反所有要求,除了 6,没有实际意义。

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

问题:违反要求 3、4 和 6。至于 6:运行安装程序时,它失败并显示消息“此 Windows 安装程序包存在问题。程序作为一部分运行的设置未按预期完成。请联系您的支持人员或软件包供应商。”那就是我,我不知道该怎么办。

【问题讨论】:

  • 忽略要求 5,该部分正在工作。

标签: installation windows-installer runtime action


【解决方案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

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

  • 创建一个搜索以确定是否安装了运行时
  • 使用该搜索来调整每个依赖文件

【讨论】:

  • 很抱歉,如果我遇到了,好像我知道我在说什么。我根本不完全理解这个过程。如果我们可以从我的第二次尝试中简单地解决问题 #6,我会很高兴。我想我只是传递了错误的命令行参数。我愿意放弃问题 3 和 4。我不知道如何“创建一个确定模块是否已安装的搜索”,我认为只有一个安装程序选项我可以选择执行此操作的选项,如我问的问题似乎很常见。
  • 不支持您的第二种方法。一个简单的解决方案是使用先决条件。大多数安装程序都使用它们,因此您可以为了简单而放弃您的要求。如果要使用条件合并模块或文件,则需要了解安装程序的工作原理以及如何配置安装项目。尝试阅读我提到的文章。如果它仍然太复杂,您可以随时尝试商业设置创作工具。它们更易于使用,但您必须购买许可证。
  • 好吧,好吧,我愿意放弃要求 3 和 4。5 没有实际意义,这是我的错,它已经修复。我希望它包含在 MSI 文件中的原因是人们倾向于直接从 zip 文件的“内部”运行它们,如果你在 zip 文件中有“文件”,它往往会休息。您说“为简单起见”,也许您对我来说是指开发人员。实际上,我想要的是 n00b 用户的简单性。他们只想运行一个安装程序并拥有它,好吧,安装所有东西。甚至要求新用户从自述文件中运行单独的安装程序都要求太多。
  • 是否/可以从安装程序自动运行“先决条件”?重点是使其“一键式”安装。有什么方法可以使用 Visual Studio MSI 创建工具或 python MSI 创建器来获得我的要求?
  • 是的,我的意思是简单。为最终用户简化复杂的安装程序通常需要商业设置创作工具。它需要比 Visual Studio 提供的更多功能。 VS 中的先决条件由 EXE 引导程序自动处理。它下载并启动它们。缺点是您有两个文件(EXE 和 MSI)。但是有一些工具可以将它们打包到 SFX 存档中。
【解决方案2】:

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

在 .bat 文件中,创建“vcredist_x86”文件夹并将“vcredist_x86.exe”移动到其中,然后运行 ​​setup.exe

这符合我最初的所有要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多