public File downloadUpdate(LauncherVersion remoteVersion, String format) throws IOException {
    if (remoteVersion.getSource() == null) { // malformed file, or local version
      throw new RuntimeException("Invalid remote version: source is null");
    }

    // check current format

    String remoteURL = remoteVersion.getSource() + format;

    String fileName =
        "mualauncher_" + remoteVersion.getVersion() + "_" + remoteVersion.getBuild() + "-";

    File temporaryFile = File.createTempFile(fileName, format);

    DownloadAdapter downloader = Downloader.create(remoteURL);

    DownloadWindow window = new DownloadWindow(Resources.string("selfupdate_title"));

    downloader.setDownloadListener(window);

    downloader.downloadToFile(temporaryFile);

    window.dispose(); // not needed anymore

    return temporaryFile;
  }
  public LauncherVersion fetchRemoteVersion() {
    try {
      String versionJson = Downloader.create(removeVersionURL).downloadToString();

      return LauncherVersion.fromJson(versionJson);
    } catch (Throwable e) {
      Logger.warning("Unable to fetch remote version: %s", e.getMessage());
      e.printStackTrace();
    }

    return null;
  }