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

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

怎么做?

没有正确的解决方案

其他提示

这是我写的功能:

    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;
    }

好吧,我想说的是是否安装XNA版本的第4.0版的最简单方法是寻找注册表密钥。看着 这个字节论坛 对于如何做的示例。

另外,正如我的评论中所述,这不是最好的解决方案,因为C#运行时并不是很广泛,这意味着您的安装程序甚至可能无法正常工作。尝试使用OneClick安装程序或类似的内容(例如InnoInstaller)。

编辑:愚蠢,这是注册表的关键: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v4.0

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top