- Баллы
- 173
Сегодня рылся в коде и через 3 минуты выявил проблему. Распаковывается client.zip только у тех, кто вошёл в Windows под именем администратора. Изменять мы будем файл GameUpdater.java.
Для начала Удалим в начале данные строки:
И добавим эти:
Спросите зачем?Не спрашивайте, а лучше делайте. Раз написал, значит так надо! Тех импортов нам недостаточно.
Идём дальше. Нажимаем Ctrl+F и вводим в строку поиска:
Чуть выше удаляем строку:
Затем удаляем весь код, который начинается с этой строчки:
До последнего символа.
И вставляем это:
Вы также можете скачать мой исходник.
Но не забудьте поменять ссылку на скачивание :trf:
Сохраняем.
Компилируем...
Лайкаем.
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
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.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
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.protected void UnZip
Чуть выше удаляем строку:
* @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:
Сохраняем.
Компилируем...
Лайкаем.
