代码之家  ›  专栏  ›  技术社区  ›  John Myczek

在Windows 7/Vista中,如何检测.NET框架功能何时“关闭”?

  •  12
  • John Myczek  · 技术社区  · 15 年前

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

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

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

    编辑:“关闭”Windows Vista或Windows 7中的.NET框架与卸载它不同。框架可以在不重新安装的情况下重新打开: http://windows.microsoft.com/en-US/windows-vista/Turn-Windows-features-on-or-off

    3 回复  |  直到 15 年前
        1
  •  8
  •   KevinH    15 年前

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

    看一看: hklm\software\microsoft\net framework安装程序\ndp\v3.5

        2
  •  3
  •   Fábio Batista Raza Ahmed    15 年前

    看起来你要为你的应用程序编写一个非托管的启动程序。卷起袖子,做一个漂亮的C++潜水:

        3
  •  1
  •   Jon Onstott    15 年前

    噢,我想这个网址可能有你的答案:

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

    请参见“如何在部署方案中安装.NET Framework 3.0 OS组件”。据我所知,它描述了如何使用OCSETUP触发窗口来打开该功能。祝你好运。

    另外,我很好奇ClickOnce安装程序是否智能地知道该功能是否被关闭(我想他们会这样做)。但是,由于您使用的是InstallShield,您可能希望安装程序比ClickOnce功能更全面;o)