Задача: изменить имя игры при установки с Worms на Worms
<?php
/*
Задача: изменить имя игры при установки с Worms на Worms snippets.pp.ru
*/
//исходный файл
$file = 'Worms.jar';
//создаем объект
$z = new ZipArchive();
//открываем архив с возможностью перезаписи
if (!$z->open($file, ZIPARCHIVE::OVERWRITE)) die('Не удалось открыть архив');
//далее извлекаем MANIFEST.MF
$mf = '';
$manifest = 'META-INF/MANIFEST.MF';
$fp = $z->getStream($manifest);
if(!$fp) {
//манифест еще может быть здесь Meta-inf/Manifest.mf
$manifest = 'Meta-inf/Manifest.mf';
$fp = $z->getStream($manifest);
if (!$fp) {
die('не удалось извлечь манифест');
}
}
//читаем данные
while (!feof($fp)) {
$mf .= fread($fp, 2000);
}
fclose($fp);
echo $mf;
/* Получаем вот это
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.2
Created-By: 1.4.2_06-b03 (Sun Microsystems Inc.)
MIDlet-Name: Worms Forts Etty 2D
MIDlet-Vendor: THQ.Etty
MIDlet-1: Worms Forts, /Icon_15x15.png, CMIDlet
MIDlet-Version: 1.0.1
MIDlet-Icon: /Icon_15x15.png
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0
*/
//дополняем название игры
$mf = preg_replace('`MIDlet-Name:s+([^
]+)`i', 'MIDlet-Name: 1 snippets.pp.ru', $mf);
//и теперь самое главное! заменяем файл манифеста в архиве
//разумеется у архива должны быть права на запись
$z->addFromString($manifest, $mf);
$z->close();