【问题标题】:How can I detect when the .NET Framework feature is "turned off" in Windows 7 / Vista?如何检测 Windows 7 / Vista 中 .NET Framework 功能何时“关闭”?
【发布时间】:2011-02-09 19:47:22
【问题描述】:

我的应用程序需要 .NET Framework 3.5 版。我最近遇到了一个安装了 .NET Framework 但在 Windows Vista 上turned off(也适用于 Windows 7)的客户。

在这种情况下,我的安装程序 (InstallShield 2009) 不会提示用户安装框架(因为它已经安装)并且当我的应用程序运行时它会立即崩溃。我尝试了另一个 .NET 应用程序,它也立即崩溃了。

有什么方法可以检测到这种情况并更优雅地处理它? 仅仅在安装过程中检测到这种情况并不理想,因为 .NET Framework 可以随时关闭。理想情况下,应用程序将能够检查并向用户显示一条友好消息,告诉他们需要打开 .NET Framework。

编辑:在 Windows Vista 或 Windows 7 中“关闭”.NET Framework 与卸载它不同。无需重新安装即可简单地重新打开框架:http://windows.microsoft.com/en-US/windows-vista/Turn-Windows-features-on-or-off

【问题讨论】:

  • 我从未听说过可以关闭 .NET Framework。您需要更好地描述情况,可能来自客户。
  • 我一直认为(假设)这样做与卸载相同。
  • @John,@dkackman。在 Windows 7 中关闭某个功能不会卸载该功能,它只是被关闭或禁用。
  • @Chris:他也没有说 Windows 7。添加到标签中。
  • 如果 CLR 加载程序能够检测到此状态并给出友好的指示“此应用程序无法运行,因为您已禁用 .NET Framework 功能。请“单击此处”管理您启用的特征。”再说一次,我一直希望在未能解决依赖程序集时遇到类似的事情......

标签: c# .net-3.5 windows-7 windows-vista installshield


【解决方案1】:

当我关闭该功能时,注册表中指示已安装框架的值被删除。您可以检查该值。

看看: HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5

【讨论】:

  • 谢谢,所以我可以检查该注册表项,但我必须通过非托管启动器进行检查,对吧?
  • 是的,不幸的是没有办法解决这个问题,因为该功能可以随意关闭和打开。
【解决方案2】:

您似乎要为您的应用编写一个非托管启动器。卷起袖子,来一场精彩的 C++ 潜水吧:)

【讨论】:

    【解决方案3】:

    Woot,我想这个 URL 可能有你的答案:

    http://blogs.msdn.com/astebner/archive/2008/04/04/8358995.aspx

    请参阅“如何在部署方案中安装 .NET Framework 3.0 操作系统组件”。据我所知,它描述了使用 ocsetup 触发 Windows 以打开该功能。祝你好运。

    此外,我很好奇 ClickOnce 安装程序是否能够智能地知道该功能是否已关闭(我想他们会关闭)。但是由于您使用的是 InstallShield,因此您可能想要一个比 clickonce 更全功能的安装程序;o)

    【讨论】:

    • 我提到的解决方案适用于 .NET 3,但我敢打赌您可以对 3.5 使用相同的方法。
    猜你喜欢
    • 1970-01-01
    • 2011-02-23
    • 2023-04-01
    • 2014-02-05
    • 2011-09-24
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    相关资源
    最近更新 更多