Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
  • Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

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

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;

И добавим эти:
import java.io.*;
import java.util.*;
import java.util.jar.*;
import java.util.zip.*;


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

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

Чуть выше удаляем строку:
* @throws PrivilegedActionException

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

И вставляем это:
Java:
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:

Сохраняем.
Компилируем...
Лайкаем.
 
Добавьте в скайп (realbars96). Вышлю лаунчер на проверку. У вас должна быть пользовательская учётка!

Спасибо Sanchez218 за помощь в тестировании. Обновил первый пост.
 
Только у меня не работает? Все делаю как написано а не работает
 
А куда кидыть файл и где его искать??
 

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

Назад
Верх