如何在运行时检测XNA版本?

时间:2011-11-28 20:00:27

标签: .net xna assemblies version

我有一个为.NET 2.0编写的启动器/更新程序应用程序,需要检查用户是否安装了XNA 4.0。

如果不是,则要求用户安装它。

怎么做?

2 个答案:

答案 0 :(得分:1)

这是我写的一个函数:

    public string CheckXNAFramework(out bool ok)
    {
        string output = "";

        string baseKeyName = @"SOFTWARE\Microsoft\XNA\Game Studio";
        Microsoft.Win32.RegistryKey installedFrameworkVersions = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(baseKeyName);

        string[] versionNames = installedFrameworkVersions.GetSubKeyNames();

        bool found = false;
        foreach (string s in versionNames)
        {
            if (s == "v4.0")
            {
                found = true;
                break;
            }
        }
        if (found)
        {
            output += "Microsoft XNA Framework found successfully.\n";
            ok = true;
        }
        else
        {
            output += "Correct version of the Microsoft XNA Framework not found. Please install version 4.0 or higher.\n";
            ok = false;
        }

        return output;
    }

答案 1 :(得分:0)

好吧,所以我想说最简单的方法是找到xna 4.0版本是否会找到注册表项。请查看this bytes forum以获取如何操作的示例。

另外,正如我的评论中所述,这不是最佳解决方案,因为C#运行时不是很普遍,这意味着您的安装程序可能甚至无法工作。尝试使用oneclick安装程序或类似的东西(如InnoInstaller)。

编辑:感觉很愚蠢,这是要查找的注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v4.0