Skip to content

Commit a48f561

Browse files
authored
Added arguments support, removed documentation, added OpenGL optimizations.
1 parent ce40f1e commit a48f561

File tree

1 file changed

+21
-113
lines changed

1 file changed

+21
-113
lines changed

winebox/wbstart

+21-113
Original file line numberDiff line numberDiff line change
@@ -4,126 +4,24 @@
44
### Author : Igorek536
55
### Email : [email protected]
66
### Date : 06.11.2017
7-
### Version : 1.1
8-
9-
###################################################################
10-
### ВНИМАНИЕ!!!
11-
### На 06.11.17 wine-staging(wine-staging.com) для дистрибутива Debian Sid
12-
### вызывает ряд очень серьёзных ошибок. В их числе крахи, ошибки,
13-
### связанные с дочерними процессами и проч. Согласно тестам, этому
14-
### подвержен пока только Debian Sid. Так что не ставьте wine-staging,
15-
### лучше установите wine-development из стандартных репозиториев.
16-
### Однако, все эти ошибки замечены лишь в некоторых приложениях.
17-
###
18-
19-
20-
###################################################################
21-
### Описание
22-
### WineBox - набор скриптов для удобного портирования программ
23-
### в Wine. Данный набор скриптов основан на скриптах от Kron'a.
24-
### Суть работы скрипта заключается в создании изолированного
25-
### префикса, в котором и содержится программа. Одновременно в
26-
### префиксе может содержиться лишь одна программа, однако
27-
### допускается установка дополтинельных программ-зависимостей.
28-
29-
### WineBox Start - основной скрипт, который определяет параметры
30-
### приложения, его расположение и выполняет его запуск. Секрет
31-
### его работы заключается в использовании sandbox окружения,
32-
### которое активируется другим сторонним скриптом - winetricks.
33-
34-
### Для того, чтобы портировать приложение, вам нужно поместить
35-
### этот скрипт в папку, в которой и будет расположено ваше
36-
### приложение. Далее, вам нужно поместить папку с программой
37-
### по пути [папка со скриптом]/prefix/drive_c . После чего
38-
### вам будет необходимо настроить ряд параметров,
39-
### представленных ниже.
40-
###################################################################
7+
### Version : 1.3
418

42-
########################################################
43-
# Ниже представленны настройки(параметры). Измените их,
44-
# согласно вашим потребностям.
45-
46-
########################################################
47-
# Параметры, специфичные для приложения:
48-
# export APP_NAME="Calculator" - имя программы
49-
# export APP_VER="1.0" - версия программы
50-
# export APP_FOLDER="CALC" - расположения программы в папке prefix/drive_c .
51-
# Если исполняемый файл программы расположен
52-
# по пути [папка со скриптом]/prefix/drive_c/CALC/calc.exe,
53-
# то следует указать только папку CALC. (export APP_FOLDER="CALC/")
54-
# export APP_EXE="calc.exe" - имя исполняемого файла программы.
55-
# Тут следует указать имя .exe файла, который должен быть запущен и
56-
# который находится по пути, указанному выше(в нашем случае - это calc.exe)
57-
# export APP_CHILDPROC="calc.bin" - имя процесса, который может создать программа(дочерний(е) процесс(ы)).
58-
# Предположим вы хотите запустить приложение, которое является лаунчером.
59-
# Такие приложения часто встречаются в различных онлайн играх.
60-
# Тоесть, лаунчер создаёт новый процесс - процесс игры. Таким образом,
61-
# запустив одно приложение, мы получаем два, а то и более дочерних процессов.
62-
# В этот пункт следует вписать имя такого дочернего просса, если их несколько,
63-
# необходимо записать их через пробел.
64-
#
65-
66-
export APP_NAME="World of Warcraft - Mists of Pandaria"
67-
export APP_VER="5.4.8"
68-
export APP_FOLDER="MoP"
69-
export APP_EXE="WoW.exe"
70-
export APP_CHILDPROC="WoW-64.bin"
9+
export APP_NAME="World of Warcraft - Wrath of the Lich King"
10+
export APP_VER="3.3.5a"
11+
export APP_FOLDER="WoTLK"
12+
export APP_EXE="Wow.exe"
13+
export APP_ARGS="-opengl"
14+
export APP_CHILDPROC=""
7115

72-
########################################################
73-
# Параметры, специфичные для скрипта WineBox Start:
74-
# export WBOX_PREKILL="yes" - Использовать ли опцию PREKILL?
75-
# Порой, программы-лаунчеры не корректно завершаются и не завершают дочерние
76-
# процессы. Более того, сам Wine порой этим грешит. Висячие дочерние процессы
77-
# могут доставить уйму гемороя пользователям. Ведь далеко не каждый с первого
78-
# раза поймёт что случилось и почему приложение не работает, или работает не так
79-
# как нужно. Опция PREKILL является рекомендуемой. Она убивает большинство процессов
80-
# Wine'a, а так же убивает дочерние процессы перед запуском приложения.
81-
# Этот костыль в каком-то смысле гаратнирует то, что у вас не будет ошибок,
82-
# связанных с дочерними процессами. Такие ошибки часто возникают из-за того, что
83-
# программа способна работать только в единичном экземпляре остаётся жива, а заного запустить
84-
# её не выйдет без остановки процесса предыдущего экземпляра.
85-
86-
export WBOX_PREKILL="yes"
16+
export WBOX_PREKILL="no"
8717

88-
########################################################
89-
# Параметры, специфичные для самого Wine:
90-
# export WINE_CSMT="off" - Использовать ли CSMT?
91-
# CSMT - это особый режим, который присутствует только в Wine-Staging.
92-
# Если у вас обычный Wine, НЕ ИСПОЛЬЗУЙТЕ ЭТОТ РЕЖИМ и оставьте "off".
93-
# Если у вас Wine-Staging, использовать этот режим не рекомендуется так же.
94-
# Однако, включение данного режима может несколько повысить быстродействие
95-
# некоторых игр и 3D приложений, но это происходит редко. Экспериментируйте.
96-
# export WINE_FORCEDX9="yes" - Использовать ли принудительно DirectX 9?
97-
# Если ваше приложение использует DirectX 11 - ставьте "no",
98-
# во всех иных случаях, оставьте "yes".
99-
# export WINE_WINDOWED="yes" - Запускать ли приложение, в искусственном окне?
100-
# Если ваше приложение работет в полноэкранном режиме, оставьте "yes",
101-
# в иных случаях - ставьте "no".
102-
# export WINE_RESOLUTION="1366x768" - Какое разрешение использовать для искусственного полноэкранного режима(ИПР)?
103-
# Даже, если вы не используете ИПР, рекомендуется записать сюда разрешение вашего экрана.
104-
# export WINE_FIXRES="no" - Использовать ли автоисправление разрешения экрана?
105-
# В некоторых случаях, программы могут сбивать резрешение вашего экрана. Однако,
106-
# Это может произойти лишь в полноэкранных приложениях(для которых рекомендована установка ИПР).
107-
# Если по каким-то причинам ИПР вам не подходит, вы можете включить этот режим, установим значение
108-
# "yes". Во всех остальных случаях крайне рекомендуется оставить как есть "no".
109-
# export WINE_USESYSWINE="yes" - Использовать ли системный Wine?
110-
# Если вы установили Wine из репозиториев своего дистрибутива, оставьте как есть "yes".
111-
# Если же вы готовы собирать Wine из исходников, руками доустанавливать зависимости,
112-
# можете установить "no". Однако, КРАЙНЕ РЕКОМЕНДУЕТСЯ УСТАНОВИТЬ WINE ИЗ РЕПОЗИТОРИЕВ
113-
# ПРИ ПОМОЩИ ПАКЕТНОГО МЕНЕДЖЕРА! Почему? Всё потому, что установка таким образом
114-
# гарантирует то, что все зависимости будут удовлетворены. В противном случае, возможны
115-
# самые разные ошибки. Так что лучше установите Wine из репозиториев вашего дистрибутива,
116-
# или попробуйте установить Wine-Staging(wine-staging.com).
117-
118-
export WINE_CSMT="off"
18+
export WINE_CSMT="no"
11919
export WINE_FORCEDX9="yes"
12020
export WINE_WINDOWED="yes"
12121
export WINE_RESOLUTION="1366x768"
12222
export WINE_FIXRES="no"
12323
export WINE_USESYSWINE="yes"
12424

125-
126-
# Конец настроек. Всё что ниже - не трогать!
12725
########################################################
12826

12927
# Предотвращаем запуск скрипта от имени суперпользователя(root)
@@ -149,12 +47,18 @@ export UPDATEPREFIX="yes"
14947
export CORES="$(getconf _NPROCESSORS_ONLN)"
15048
export WORK_FOLDER="$WINEPREFIX/drive_c/$APP_FOLDER"
15149

50+
# Some optimizations for MESA drivers
51+
export mesa_glthread=true
52+
export __GL_THREADED_OPTIMIZATIONS=1
53+
export __GL_SHADER_DISK_CACHE=1
54+
export __GL_SHADER_DISK_CACHE_PATH=$DIR
55+
15256
# Процессы, которые создаёт Wine
15357
export WINE_WINEPROC="wineserver winedevice.exe services.exe plugplay.exe winedbg explorer.exe"
15458

15559
# WineBox PREKILL
15660
if [ "$WBOX_PREKILL" == "yes" ]; then
157-
killall $APP_EXE $APP_PREKILL 2>>/dev/null
61+
killall $APP_EXE $APP_CHILDPROC $WINE_WINEPROC 2>>/dev/null
15862
fi
15963

16064
# Если у нас одноядерный процессор, принудительно отключаем CSMT.
@@ -279,6 +183,7 @@ elif [ ! -f "$DIR/csmt_on" ] && [ "$WINE_CSMT" == "on" ]; then
279183
fi
280184

281185
# Используем sandbox окружения скрипта winetricks.
186+
chmod +x "$WINETRICKS"
282187
"$WINETRICKS" sandbox
283188

284189
# Получаем нативное разрешение экрана.
@@ -298,14 +203,15 @@ echo "csmt: $WINE_CSMT"
298203
echo "===================="
299204
echo "application: $APP_NAME"
300205
echo "version: $APP_VER"
206+
echo "command: $APP_EXE $APP_ARGS"
301207
echo "===================="
302208
echo "home: $HOME"
303209
echo
304210

305211
# Запускаем приложение.
306212
cd "$WORK_FOLDER"
307213
if [ "$WINE_WINDOWED" == "yes" ] || [ "$1" == "-sw" ]; then
308-
"$WINE" explorer /desktop=Game,$WINE_RESOLUTION "$APP_EXE"
214+
"$WINE" explorer /desktop=Game,$WINE_RESOLUTION "$APP_EXE" "$APP_ARGS"
309215
else
310216
"$WINE" "$APP_EXE"
311217
fi
@@ -314,3 +220,5 @@ fi
314220
if [ "$WINE_FIXRES" == "yes" ]; then
315221
"/usr/bin/xrandr" -s "$WINE_RESOLUTION"
316222
fi
223+
224+
#EOF

0 commit comments

Comments
 (0)