public static bool IsJavaInstalled(Architectures architecture, int majorVersion)
        {
            bool isInstalled = false;

            if (architecture == Architectures.X86)
            {
                if (Get32bitJavaJREVersions().FindIndex(item => item.Major == majorVersion) >= 0 ||
                    ProgramInstaller.IsSoftwareInstalled(Architectures.X86, "Java " + majorVersion + " Update *"))
                {
                    isInstalled = true;
                }
            }
            else if (architecture == Architectures.X64)
            {
                if (Get64bitJavaJREVersions().FindIndex(item => item.Major == majorVersion) >= 0 ||
                    ProgramInstaller.IsSoftwareInstalled(Architectures.X64, "Java " + majorVersion + " Update * (64-bit)"))
                {
                    isInstalled = true;
                }
            }
            else
            {
                throw new InvalidOperationException("Invalid architecture");
            }

            return(isInstalled);
        }
        public static bool ChocoUpgrade(string pkgName, string displayName, bool verifyInstall, string searchName, string[] argumentList)
        {
            try
            {
                Console.Out.WriteLine("Verifying network connectivity before installing " + displayName);
                if (Network.TestInternetConnection() == true)
                {
                    Console.Out.WriteLine("Network connectivity confirmed...");

                    if ((verifyInstall) == true)
                    {
                        Console.Out.WriteLine("Checking for pre-existing installs...");
                        var x86VersionExists = ProgramInstaller.IsSoftwareInstalled(Architectures.X86, searchName);
                        var x64VersionExists = ProgramInstaller.IsSoftwareInstalled(Architectures.X64, searchName);
                        Console.Out.WriteLine("32-bit version found?: " + x86VersionExists);
                        Console.Out.WriteLine("64-bit version found?: " + x64VersionExists);
                    }

                    Console.Out.WriteLine("Installing " + displayName + "...");

                    string arguments = "";
                    foreach (string argument in argumentList)
                    {
                        arguments += " --" + argument;
                    }

                    SystemUtil.ExecuteCMDCommand("choco.exe upgrade " + pkgName + arguments); //" --force --y --ignorechecksum ");

                    if ((verifyInstall) == true)
                    {
                        Console.Out.WriteLine("Verifying install...");
                        var x86VersionExists = ProgramInstaller.IsSoftwareInstalled(Architectures.X86, searchName);
                        var x64VersionExists = ProgramInstaller.IsSoftwareInstalled(Architectures.X64, searchName);
                        Console.Out.WriteLine("32-bit version found?: " + x86VersionExists);
                        Console.Out.WriteLine("64-bit version found?: " + x64VersionExists);
                        if (x64VersionExists == true || x86VersionExists == true)
                        {
                            return(true);
                        }
                        else
                        {
                            Console.Out.WriteLine("[0] " + displayName + " installation failed... Rolling back...");
                            if (Network.TestInternetConnection() == false)
                            {
                                Console.Out.WriteLine("Failed to confirm network connectivity. if your host has connection, try: VMWare Toolbar -> Edit -> Virtual Network Editor -> Change Settings -> Restore Defaults. Then Restart");
                            }
                            return(false);
                        }
                    }
                    else
                    {
                        return(true);
                    }
                }
                else
                {
                    Console.Out.WriteLine("Failed to confirm network connectivity. if your host has connection, try: VMWare Toolbar -> Edit -> Virtual Network Editor -> Change Settings -> Restore Defaults. Then Restart");
                    return(false);
                }
            }
            catch
            {
                Console.Out.WriteLine("[1] " + displayName + " installation failed... Rolling back...");
                return(false);
            }
        }