我有一个在.Net 4.0上开发的.Net WinForms应用程序。 (Windows安装程序包)。该应用程序依赖于SAP Crystal Report运行时和MS Access运行时。我需要检查是否在用户计算机上安装了这两个必备组件,如果没有,请退出安装程序,并显示一个对话框,指出由于缺少必备组件而导致安装失败。
[编辑] 下图突出显示了我正在处理的安装程序项目的类型。这是一个旧的遗留应用程序。
[编辑2] 在这里,我创建了“搜索目标计算机”,并创建了“添加注册表搜索”-“搜索Crystal Report运行时”
并在“启动条件”下创建了一个新的“启动条件”,称为“ CrystalReportRuntimeInstalled”。即使安装了该软件,这种情况总会以某种方式评估为false。我在做什么错了?
答案 0 :(得分:0)
更新,因为您要使用WiX:
WiX快速入门 :您可以通过{{ 3}}: Helge Klein。
https://helgeklein.com/blog/2014/09/real-world-example-wix-msi-application-installer/。那 包括更多的源代码示例链接和各种链接。它是 “即席答案”(换句话说,是凌乱的),这似乎有助于 真实世界。我仍然想知道为什么,如果你能告诉我那是否是 正确与否会很好。
- 以下是上面链接的示例:There are more "WiX quick start suggestions" here(从Wayback复活)。 Alex Shevchuk。
快速在线示例 :
<Condition Message="The .NET Framework 2.0 must be installed"> Installed OR NETFRAMEWORK20 </Condition>
From MSI to WiX, Part 3 – Launch Conditions and Application Search:用于此目的的一般机制是LaunchCondition Table。您在此处添加了必须满足的条件(评估为true),软件包才能进行安装操作(不仅仅是全新安装)。您可以使用自定义操作来检查系统并设置属性,也可以使用内置的MSI搜索机制来设置属性。然后在指定的条件下使用这些属性。
启动条件问题 :在维护和卸载操作中,条件可能会意外评估为false。通常这是非常不希望的。一个示例是检查是否存在可以手动卸载的运行时,从而意外使主MSI无法卸载甚至升级。 LaunchCondition table(请仔细阅读)。
调整 :为确保 LaunchConditions
仅适用于全新安装(以及主要升级-从技术上讲,它们作为全新安装) ,有一种技巧可以将 "OR Installed"
添加到您所需的条件中。 Example here。到蝙蝠车。
示例 :以下是Described here中的一行示例(需要.NET版本4.7):
Installed OR DOTNETVERSION471FULL>="#461308", Microsoft .NET Framework 4.7.1 Full package or greater needs to be installed for this installation to continue.
答案 1 :(得分:0)