如何在 installshield 基本 MSI 项目中添加对 .NET framework 4.5.2 的先决条件检查

How to add prerequisite check on .NET framework 4.5.2 in installshield basic MSI project

我要通过 installshield 安装 .NET 应用程序。我的 .NET 应用程序依赖于 .NET Framework 4.5.2。因此,如果在安装开始后系统上未找到 .NET Framework 4.5.2 先决条件,我不希望安装继续进行。我怎样才能在 Installshield 2015 中实现这一点?

更新:当我尝试按照 Shahzad 的建议进行可分发路线时,出现以下错误:

Your project contains installshield prerequisites. A setup.exe setup launcher is required.

我正在处理的项目是一个基本的 MSI 项目。我发现它应该创建一个 setup.exe 而不是作为输出来解决此错误,但我没有看到 here 建议的任何 setup.exe 选项卡。我会在某处的 Project Assistant 选项卡或 Installation Designer 选项卡下看到它吗?

您可以在 Project Assistant 选项卡下的安装要求中 select .Net framework 的版本。或者,您也可以指定是否要将 .Net Framework 作为安装的一部分从 安装设计器(选项卡)-> 应用程序数据(左窗格中的导航节点)-> Redistributables

您还可以通过 项目助手 -> 安装要求 -> 创建自定义软件条件 创建自定义要求。 Select注册表项从drop-down搜索。在下一步中,您可以提供要查找的注册表根目录、注册表项路径和值。

您还可以查看如何设置Registry Comparison Settings

我正在详细阐述自定义软件条件方法,以便在遇到任何困难时对某人有所帮助。当您只想检查注册表项是否存在时,自定义软件条件可以满足需要。

在我的特定情况下,除了检查注册表项是否存在之外,我还必须将特定注册表项的值与预定义值 (379893) 进行比较。我通过两步过程实现了它:

  1. 转到 Project Assistant 选项卡。单击底部的Installation Requirements link。
  2. 现在在左窗格的 More Options 部分下单击 Create a custom software condition link。

  1. 单击“下一步”欢迎使用“系统搜索向导”屏幕

  1. Select Registry Entry

  1. Select 注册表项路径,它告诉任何计算机上安装的 .Net 框架的确切版本。在 Registry Value: (Optional) 字段中键入将存储键值的变量名称。此变量稍后用于创建比较条件以检查 .Net 框架版本的确切值。此变量被附加到名为 SecureCustomProperties 的 属性 的列表中。您可以在 Installation Designer 选项卡 Behavior and Logic 下的 Property Manager 中看到此 属性

  1. 放置在未安装所需的 .Net 框架版本时应弹出的错误消息:

  1. 这样形成的安装条件现在将显示在列表中,并在 Project Assistant 选项卡上选中其复选框。

  1. 现在转到 Installation Designer [Tab] -> Behavior and Logic -> System Search。在这里您将看到一条新记录,它对应于我们目前创建的软件搜索条件。右键单击该行,然后单击 Modify...

  1. 不要更改向导前两个屏幕上的任何内容。在标题为 What do you want to do with the value? select 的第三个屏幕上,Store the value in the property and use the property in an Install Condition 单选按钮。现在单击“完成”。

  1. 现在弹出一个新的 Condition Builder window。双击 Condition 列进行更改。将条件更改为 DOTNETFRAMEWORKRELEASEVERSIONVALUE >= "#379893"。您可以根据 this link.
  2. 上的详细信息,根据要检查的 .Net 框架更改条件。

我们必须更改的条件如下: