private static boolean launcherUpdateRequired() {
        // Obtain path to our jar and get checksum of it 
        String[] mainCommand = System.getProperty(SUN_JAVA_COMMAND).split(" ");
        if (mainCommand.length == 0) {
            return false;
        }

        String jarPath = mainCommand[0];
        if (!jarPath.endsWith(".jar")) // It's not a jar (usually it happend when launcher is running from IDE)
        {
            return false;
        }

        try {
            String ourMd5 = Md5Checksum.getMD5Checksum(jarPath);

            // Obtain new launcher checksum from server within 5 tries
            String newMd5 = downloadChecksum(ConfigManager.getInstance().getLauncherChecksumUrl(), 5);

            // Obtaining is failed, abort
            if (newMd5 == null)
                return false;
            
            newMd5 = newMd5.trim();
            
            System.out.println("Launcher md5: " + ourMd5);
            System.out.println("Server md5: " + newMd5);
            System.out.println("Equals: " + ourMd5.equals(newMd5));
            
            // Compare checksums
            return !ourMd5.equals(newMd5);
        } catch (Exception ex) {
            Logger.getLogger(Kubach.class.getName()).log(Level.SEVERE, null, ex);
        }

        return false;
    }