pashazz 30.04.2010 21:35
WineGame — Создаем пакет для WineGame
Предположим, что вы знаете, как запустить ту или иную win-игру через Wine, и хотите, чтобы она устанавливалась в WineGame. И, естественно, этой игры там нет.Информация на моей wiki довольно загадочна, так что перескажу ее здесь на реальном примере, хотя и очень простом, на примере моей любимой игрушки FIFA 10.
1. Начало.
Для начала создадим нужные директории:
1 |
|
2. Control-файл
Теперь нам нужно заполнить ini-файл control, к-рый содержит всю информацию о том, что надо делать, собственно.
1 |
|
Любой ini-файл состоит из секций. Сначала идет имя секции в квадратных кавычках
, затем пары имя=значение. Секция может быть ограничена только началом следующей секции. В принципе, секции могут располагаться в любом порядке.
Все параметры, относящиеся к собственно Wine, находятся в секции . Вот что можно указать:
distr - URL для закачки дистрибутива Wine. Я тестировал только протокол HTTP, но, в принципе, все что умеет QNetworkAcessManager можно указать (public FTP, HTTPS).
Пример:
1 |
|
P.S. Использование этой фичи строго не рекомендуется из за бага #17055 Обойти его можно, как это делать, я покажу ниже. Также нужно соблюсти файловую иерархию от корня ФС. Как это сделано, см. в архиве из примера. Формат файлов - tar.gz/tar.bz2
components - список компонентов winetricks, устанавливаемых в один префикс с игрой, через пробел. Список тут.
Пример:
1 |
|
P.S. Не рекомендуется использовать directx9 в Wine 1.1.4x. Используйте d3dx9. к тому же он не беспокоит пользователя.
memory=true (по умолчанию false) - это магическая настройка, прописывающая в реестр wine (Direct3d only) размер видеопамяти. Необходимо для DirectX игр.
На этом секция wine заканичивается. Все значения секции wine не обязательны.
Вторая секция в файле control нашего пакета - . Она определяет поведение wine относительно приложения. Что указывается здесь:
prefix - имя префикса wine, куда будет устанавливаться приложение. Это должна быть строчка без пробелов и знака "/". Это обязательный параметр
Пример:
1 |
|
WineGame интерпретирует эту строчку так: приложение устанавливается в ~/Windows/%имя_префикса№, а Wine распаковывается в ~/Windows/wines/%имя_префикса%.
setup - путь к файлу установщика от корня диска. Проверяется, когда пользователь устанавливает приложение с CD/DVD. По умолчанию используется значение из autorun.inf. В версии 0.0.2, я думаю, можно будет переопределять это значение для каждого отдельного диска.
Пример:
1 |
|
exepath - если вы заполните этот параметр, то WineGame создаст ярлык на рабочем столе для данного приложения. Это обход бага wine, о котором я сказал выше. Это должен быть путь Windows.
Пример:
1 |
|
На этом все о Control-файле. Вот что у меня получилось:
distr="http://winegame.googlecode.com/files/wine-1.1.20-bin.tar.bz2"
components="d3dx9 vcrun2005 ddr=opengl"
memory=true
setup="EASetup.exe"
prefix="fifa10"
exepath="c:/program files/ea sports/fifa 10/fifa10.exe
3. Скрипты.
Иногда нужно выполнить какие-либо действия, до и/или после установки нашей игры. Например, заменить DLL поставить NoCD, если без него игра не работает, или еще что-нибудь.
WineGame решает эту проблему с помощью скриптов preinst и postinst (да, я взял имена из Debian).
Вы можете написать эти скрипты на любом интерпретируемом языке, будь то bash или python. Каждому из этих скриптов передаются следующие переменные окружения:
WINEPREFIX - путь к префиксу WineWINE - путь к исполняемому файлу wineCDROOT - путь к корню диска (если идет установка с диска)FILESDIR - путь к директории с дополнительными файлами (см. ниже)4. Даем нашей игре имя.
Теперь нашей игре нужно как-то назваться, и иметь описание. Это делается так:
Имя игры (нелокализованное) будет находиться в файле.name в директории нашего пакета:
1 |
|
Пример:
EA Sports FIFA 10
Если вы не заполнили его, используется имя директории пакета (в нашем случае fifa10). Имя игры показывается в списке игр и при вставке диска с игрой (и натравливании на него winegame`а).
Игра может быть локализована на множество стран, и иметь множество названий на разных языках. Чтобы задать имя игры, допустим, на русском языке, поместите его в файл .name.ru_RU (и так для любого языка). Когда WineGame будет запущен с русской локалью, он отобразит русское имя игры, если найдет. А если нет, то отобразит нелокализованное.
Конечно, нашей игре нужно и описание (оно показывается, если щелкнуть по имени игры в списке). Туда помещается любой текст. Описание должно помещаться в файле .note Вы можете (и, наверное, должны) использовать HTML..
Аналогично названию, можно задать локализованное описание в файле ".note.%локаль%".
5. Определение диска игры.
Для определения диска игры создайте директорию cdrom.d в папке пакета winegame:
1 |
|
Для того, чтобы WineGame определил диск с игрой, нужно в файл с любым именем в этой директории поместить список файлов, находящихся в корневом каталоге CD/DVD с игрой (лучше метода не придумал).
Пример:
alocale
autorun.dat
autorun.inf
data
dirtysock.dll
FIFA10.exe
fifaosdkz.pdb
GDFBinary.dll
msvcr71d.dll
Redistributable
Support
Autorun
AutoRun.exe
config.dat
DirectX
EASetup.exe
fifaosdkz.dll
fifapc.ico
Group10.cab
msvcr71.dll
Setup.exe
Таким образом, можно привязать сколько угодно дисков к одной игре.
6. Дополнительно.
WineGame предоставляет возможность таскать за собой файлы, нужные игре (естественно, они должны быть небольшими). Вы можете сохранить любые файлы (снабдив их правовой информацией) в папке files пакета winegame. Вы можете использовать их в скриптах (путь к этой папке передается в переменной окружения FILESDIR), вы можете использовать, к примеру, картинки в описаниии (вставив в описание ).
На этом все. Для проверки работоспособности скопируйте папку пакета в /usr/share/winegame, а затем пришлите мне на [email protected]
vvorth 03.05.2010 10:40 #
+ 0 -
Почему бы имя и описание в control файл не запихнуть?