Pregunta

Tengo una aplicación de lanzador/actualización escrita para .NET 2.0 que debe verificar si el usuario tiene instalado XNA 4.0.

Si no es así, se le pide al usuario que lo instale.

¿Cómo hacerlo?

No hay solución correcta

Otros consejos

Aquí hay una función que escribí para hacer esto:

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

Muy bien, entonces diría que la forma más fácil de encontrar si la versión 4.0 de XNA está instalada sería buscar la clave de registro. Mirar Este foro de bytes Para un ejemplo de cómo hacerlo.

Además, como se indica en mis comentarios, esta no es la mejor solución porque el tiempo de ejecución de C# no está muy extendido, lo que significa que su instalador podría no funcionar. Pruebe el instalador OneClick o algo similar (como el innoinstaller).

Editar: Siéntete estúpido, esta es la clave del registro para buscar: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v4.0

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top