1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
  3. Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Фикс Не распаковывался client.zip

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем Bars, 11 окт 2012.

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

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Сегодня рылся в коде и через 3 минуты выявил проблему. Распаковывается client.zip только у тех, кто вошёл в Windows под именем администратора. Изменять мы будем файл GameUpdater.java.

    Для начала Удалим в начале данные строки:
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.EOFException;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FilePermission;
    import java.io.IOException;
    import java.io.InputStream;
    import java.i:confused:utputStream;
    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.io.Writer;

    import java.util.Enumeration;
    import java.util.Properties;
    import java.util.StringTokenizer;
    import java.util.Vector;
    import java.util.jar.JarEntry;
    import java.util.jar.JarFile;
    import java.util.jar.JarOutputStream;
    import java.util.jar.Pack200;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;

    И добавим эти:

    Спросите зачем? Не спрашивайте, а лучше делайте. Раз написал, значит так надо! Тех импортов нам недостаточно.

    Идём дальше. Нажимаем Ctrl+F и вводим в строку поиска:
    И нажимаем Enter.

    Чуть выше удаляем строку:
    Затем удаляем весь код, который начинается с этой строчки:
    Код:
    protected void UnZip() throws PrivilegedActionException
    До последнего символа.

    И вставляем это:
    Код:
    protected void UnZip() {
        String szZipFilePath;
        String szExtractPath;
        String path = Util.getWorkingDirectory() + File.separator;
        int i;
       
        szZipFilePath = path + "bin" + File.separator + "client.zip";
         
        File f = new File(szZipFilePath);
        if(!f.exists())
        {
          System.out.println(
        "\nNot found: " + szZipFilePath);
        }
         
        if(f.isDirectory())
        {
          System.out.println(
        "\nNot file: " + szZipFilePath);
        }
       
        System.out.println(
          "Enter path to extract files: ");
        szExtractPath = path;
       
        File f1 = new File(szExtractPath);
        if(!f1.exists())
        {
          System.out.println(
        "\nNot found: " + szExtractPath);
        }
         
        if(!f1.isDirectory())
        {
          System.out.println(
        "\nNot directory: " + szExtractPath);
        }
       
        ZipFile zf;
        Vector zipEntries = new Vector();
         
        try
        { 
          zf = new ZipFile(szZipFilePath);   
          Enumeration en = zf.entries();
         
          while(en.hasMoreElements())
          {
            zipEntries.addElement(
          (ZipEntry)en.nextElement());
          }
         
          for (i = 0; i < zipEntries.size(); i++)
          {
            ZipEntry ze =
          (ZipEntry)zipEntries.elementAt(i);
         
            extractFromZip(szZipFilePath, szExtractPath,
          ze.getName(), zf, ze);
          }
         
          zf.close();
          System.out.println("Done!");
        }
        catch(Exception ex)
        {
          System.out.println(ex.toString());
        }
        f.delete();
      }
     
      // ============================================
      // extractFromZip
      // ============================================
      static void extractFromZip(
        String szZipFilePath, String szExtractPath,
        String szName,
        ZipFile zf, ZipEntry ze)
      {
        if(ze.isDirectory())
          return;
         
        String szDstName = slash2sep(szName);
       
        String szEntryDir;
       
        if(szDstName.lastIndexOf(File.separator) != -1)
        {
          szEntryDir =
            szDstName.substring(
          0, szDstName.lastIndexOf(File.separator));
        }
        else     
          szEntryDir = "";
       
        System.out.print(szDstName);
        long nSize = ze.getSize();
        long nCompressedSize =
          ze.getCompressedSize();
       
        System.out.println(" " + nSize + " (" +
          nCompressedSize + ")"); 
     
        try
        {
          File newDir = new File(szExtractPath +
        File.separator + szEntryDir);
       
          newDir.mkdirs();   
         
          FileOutputStream fos =
        new FileOutputStream(szExtractPath +
        File.separator + szDstName);
     
          InputStream is = zf.getInputStream(ze);
          byte[] buf = new byte[1024];
     
          int nLength;
         
          while(true)
          {
            try
            {
          nLength = is.read(buf);
            }   
            catch (EOFException ex)
            {
          break;
        } 
       
            if(nLength < 0)
          break;
            fos.write(buf, 0, nLength);
          }
         
          is.close();
          fos.close();
        } 
        catch(Exception ex)
        {
          System.out.println(ex.toString());
          //System.exit(0);
        }
      } 
      // ============================================
      // slash2sep
      // ============================================
      static String slash2sep(String src)
      {
        int i;
        char[] chDst = new char[src.length()];
        String dst;
       
        for(i = 0; i < src.length(); i++)
        {
          if(src.charAt(i) == '/')
            chDst[i] = File.separatorChar;
          else
            chDst[i] = src.charAt(i);
        }
        dst = new String(chDst);
        return dst;
      }
     
     
    }
    Вы также можете скачать мой исходник.
    Но не забудьте поменять ссылку на скачивание :trf:

    Сохраняем.
    Компилируем...
    Лайкаем.
     
    DanilS и Sanchez218 нравится это.
  2. Kor

    Kor Активный участник

    Баллы:
    63
    Skype:
    fifa1162
    Ждём фикс.
     
  3. Автор темы
    Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Добавьте в скайп (realbars96). Вышлю лаунчер на проверку. У вас должна быть пользовательская учётка!

    Спасибо Sanchez218 за помощь в тестировании. Обновил первый пост.
     
    Sanchez218 нравится это.
  4. Elements

    Elements Активный участник Пользователь

    Баллы:
    88
    Только у меня не работает? Все делаю как написано а не работает
     
  5. Kor

    Kor Активный участник

    Баллы:
    63
    Skype:
    fifa1162
    Не только у тебя!!!!
     
  6. Автор темы
    Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    На днях перепишу фикс. Просто не всё написал тут.
     
  7. Kor

    Kor Активный участник

    Баллы:
    63
    Skype:
    fifa1162
    Ждём!!
     
  8. Автор темы
    Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
  9. Kl0NeR

    Kl0NeR Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    Kl0NeR
    А куда кидыть файл и где его искать??
     

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