安装程序启动程序如何检测先决条件是否安装?

3
尝试解决这个问题
我想学习引导程序如何检测预先安装的内容(具体来说是.NET 3.5)。
根据这个参考资料,检测.NET是否已安装的方法是检查以下注册表键:
HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5
使用进程监视器,我已经检查了引导程序(setup.exe)执行的注册表查询,并没有显示对此注册表键的任何访问。 有人知道引导程序如何确定目标系统上是否已安装先决条件吗?
1个回答

4
生成 msbuild GenerateBootStrapper 包所需的前提包被定义为 XML 文件。 这些 XML 文件的架构在此文档here中有所说明。请查看“InstallChecks”元素,以了解可能进行哪些检查。
有趣的是,我在 .NET 3.5 的先决条件包中找不到这样的安装检查。 您可以在 windows SDK 文件夹(C:\ Program Files \ Microsoft SDKs \ Windows)中找到此软件包,以及其他预定义的引导程序包。

1
由于某种原因,安装程序检查 .Net 的部分似乎在程序包的本地化部分中 (请参见 Bootstrapper\Packages\DotNetFX35SP1\en 下的 package.xml)。 - Damien_The_Unbeliever
感谢Wim和Damien,这解决了我们的问题。这个问题发生在德国Windows 7安装上,构建机器SDK Bootstrapper目录中只有\en子文件夹。en子文件夹包含一个package.xml,其中包含对.NET注册表键(<RegistryCheck Property="DotNet35InstallSuccess" Key="HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\1033" Value="Install" />)的\1033子键的注册表检查。由于某种原因,在默认的德国Windows 7安装中不存在此项。 - Marek
在构建机上调整package.xml解决了问题,但我仍然对问题的真正来源以及这是否是Windows 7中的一个错误(即使在德语Windows 7上也应该存在1033子键)或引导程序(检查不正确的键)感兴趣。 - Marek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接