Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Как реализовать обновление лаунчера, если он конвертирован в EXE?

Тема в разделе "[Архив] Помощь", создана пользователем LaoTheLizard, 7 дек 2013.

  1. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    В лаунчере сашка в классе BaseUtils есть метод updateLauncher, который загружает с сервера новый файл лаунчера и заменяет им сам себя, после чего тут же перезапускается (в новом обличье). У меня он не хотел работать - постоянно выкидывал мне FileNotFoundException.
    Путем несколькочасовой вспашки кода носом я, наконец, понял, в чем проблема.
    Вот код, собственно:

    Код:
        public static void updateLauncher() throws Exception
            {
                    send("Обновление лаунчера...");
                    send("Загружаем файл: " + Settings.updateFile);
    
                    InputStream is = new BufferedInputStream(new URL(Settings.updateFile).openStream());
                    FileOutputStream fos = new FileOutputStream(Starter.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
    
    
                    int bs = 0;
                    byte[] buffer = new byte[65536];
                    MessageDigest md5 = MessageDigest.getInstance("MD5");
                    while((bs = is.read(buffer, 0, buffer.length)) != -1)
                    {
                            fos.write(buffer, 0, bs);
                            md5.update(buffer, 0, bs);
                    }
                    is.close();
                    fos.close();
                    BaseUtils.send("Загружен файл: " + Settings.updateFile);
                    Starter.main(null);
                    System.exit(0);
            }
    Причина проблемы оказалась в том, что у меня файл EXE, а эта процедура ищет файл JAR. По крайней мере, это показал опыт: я скомпилировал JAR, но на этот раз не конвертировал его в EXE, а запустил через батник. И - о, чудо - обновление происходит. Забавно то, что на сервере у меня лежит EXE-файл. А когда производится обновление - обновляется файл JAR. И JAR-файлом при этом и остается. То есть, получается, что он не просто качает с сервера файл и заменяет им имеющийся, а еще и извлекает из него JAR...?

    А теперь вопрос. Я JAR-файл после компилирования программой Jar2Exe преобразую в EXE-файл. Что мне изменить в вышеупомянутом куске кода, чтобы этот файл у меня нормально обновлялся?
     
    Последнее редактирование: 7 дек 2013
  2. Хостинг MineCraft
    <
  3. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Нашел причину. Экспериментальным путем выяснено, что файл не находится, если в пути к нему на компьютере игрока есть русские буквы или пробелы. Как исправить эту проблему?
     
    Последнее редактирование: 7 дек 2013

Поделиться этой страницей