Domanda

Ho un'applicazione launcher / updater scritto per .NET 2.0 che ha bisogno di controllare se l'utente ha XNA 4.0 installato.

Se non lo è, allora l'utente è invitato a installarlo.

Come fare?

Nessuna soluzione corretta

Altri suggerimenti

Ecco una funzione che ho scritto a fare questo:

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

Va bene, quindi direi il modo più semplice per trovare se la versione è installata 4.0 su XNA potrebbe essere quella di cercare la chiave di registro. Guardate questo byte forum per un esempio di come farlo.

Inoltre, come affermato nei miei commenti, questa non è la soluzione migliore, perché C # di runtime non è molto diffuso, il che significa che il vostro installatore potrebbe anche non di lavoro. Prova il programma di installazione OneClick o qualcosa di simile (come l'InnoInstaller).

EDIT: sentire stupido, questo il la chiave di registro da cercare: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v4.0

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top