Wine. Решение проблемы «Bad serial given in setup» в Arma на Linux.

04. мая 2020 Linux, Wine 2

С основами по использованию Wine можно ознакомиться здесь: https://noostyche.ru/blog/2020/04/30/ispolzovanie-wine-dlya-zapuska-windows-programm-v-linux/

 

На Wine и Proton проблема характерна для Arma: Cold War Assault (Operation Flashpoint), Arma 1 и 2, кроме Arma 2: Operation Arrowhead (с ней всё в порядке). Она заключается в том, что установочный скрипт (xxxxx_install.vdf) не может сгенерировать специальный код в шестнадцатеричной системе счисления из ключа (серийного номера) игры и подставить его в реестр Windows, то есть в файл реестра в префиксе. Решение заключается в генерации кода из лицензионного ключа и добавлении его в реестр вручную.

Генератор кода из ключа можно подсмотреть здесь: https://github.com/ValveSoftware/Proton/issues/767#issuecomment-508957522

Альтернативный вариант решения проблемы: https://github.com/ValveSoftware/Proton/issues/1308

 

Генератор кода представлен скриптом на языке perl:

echo 1234-56789-ABCDE-FGHIJ-KLMNO | perl -ne 's/-//g; tr/IO/10/; for $i (0..2) { $res = 0; for $j (0..7) { $res += index("0123456789ABCDEFGHJKLMNPRSTVWXYZ", substr($_, $i * 8 + $j, 1)) << (5 * $j); }; printf("%010x", $res); }; print("\n");'

Примечание: Интерпретатор perl всё ещё присутствует во многих дистрибутивах Linux, поэтому команду можно выполнить в терминале и сразу получить результат. Альтернативным вариантом является возможность воспользоваться онлайн-сервисом.

В первом фрагменте команды можно увидеть буквенно-цифровую строку из 24 символов — здесь должен быть ваш лицензионный ключ игры, который можно посмотреть в Steam: ПКМ на игре в «Библиотеке» / Управление / Цифровые ключи.

После выполнения команды в выводе терминала окажется код подобный этому: 41cc520c4183dcd62d4905ab49c831

Это 15 пар символов в шестнадцатеричной системе счисления. Именно этот код необходимо добавить в реестр префикса игры.

 

Чтобы префикс был создан, нужно запустить игру один раз, полюбоваться на ошибку и закрыть её.

 

Для Arma: Cold War Assault префикс и файл реестра по умолчанию располагаются здесь:

/home/$USER/.local/share/Steam/steamapps/compatdata/65790/pfx/system.reg

Для обычной Arma 2:

/home/$USER/.local/share/Steam/steamapps/compatdata/33910/pfx/system.reg

Примечание: Номером префикса является ID игры в Steam.

 

Отредактировать файл реестра можно двумя способами: через графическую Wine-программу regedit и через редактирование обычным текстовым редактором (nano, gedit, kate и подобными).

 

Примечание по Arma 2.

С этой игрой есть довольно неприятная особенность. Установочно-конфигурационный скрипт 33910_install.vdf, который находится в корневом каталоге игры, при запуске игры каждый раз стирает(!) запись ключа (шестнадцатеричное значение) из реестра, что приводит к той самой «Bad serial given in setup». Чтобы он не осуществлял эту диверсию, необходимо лишить пользователя прав его выполнять и читать. Пример:

sudo chmod 000 "/home/$USER/.local/share/Steam/steamapps/common/Arma 2/33910_install.vdf"

Или через графический интерфейс:

Всё, диверсионная деятельность скрипта пресечена. Теперь можно приступить к редактированию реестра.

 

Wine. Редактирование файла реестра с помощью regedit.

Начнём с Arma 2.

WINEPREFIX="/home/$USER/.local/share/Steam/steamapps/compatdata/33910/pfx" wine regedit

Примечание: Если будет предложено установить в префикс Mono и Gecko — отказываемся, для префикса игры это ни к чему.

  1. Перейти в HKEY_LOCAL_MACHINE\Software\Wow6432Node\bohemia interactive studio\arma 2
  2. Выбрать строку key.
  3. ПКМ / Изменить…
  4. В появившемся окне в текстовое поле переписать сгенерированный код. В данном примере это 41cc520c4183dcd62d4905ab49c831.
  5. Подтвердить изменения.
  6. Закрыть окно «Редактора реестра».

Теперь можно запустить игру и ошибки «Bad serial given in setup» более не будет.

 

Для Arma: Cold War Assault алгоритм действий тот же. Разница только в пути до префикса и до записи в реестре.

WINEPREFIX="/home/$USER/.local/share/Steam/steamapps/compatdata/65790/pfx" wine regedit

Путь до записи в реестре: HKEY_LOCAL_MACHINE\Software\Wow6432Node\bohemia interactive studio\coldwarassault

 

Редактирование реестра текстовым редактором.

Для Arma 2.

Открываем файл реестра, как текстовый документ:

/home/$USER/.local/share/Steam/steamapps/compatdata/33910/pfx/system.reg

Необходимо найти строку:

[Software\\Wow6432Node\\bohemia interactive studio\\arma 2]

Ниже будет строка:

«key»=hex:

Это то самое место, куда нужно скопировать сгенерированный код. Пример записи:

«key»=hex:41,cc,52,0c,41,83,dc,d6,2d,49,05,ab,49,c8,31

Важно обратить внимание, что код разбит на пары символов, которые отделены запятой без пробела.

Сохранить изменения в файле.

Теперь проблема с «Bad serial given in setup» решена.

 

Для Arma: Cold War Assault.

/home/$USER/.local/share/Steam/steamapps/compatdata/65790/pfx/system.reg

Искомый блок в реестре:

[Software\\Wow6432Node\\bohemia interactive studio\\coldwarassault]

В строку «KEY»=hex: прописать сгенерированный код:

«KEY»=hex:41,cc,52,0c,41,83,dc,d6,2d,49,05,ab,49,c8,31

Сохранить изменения в файле.

Готово.

 

Теперь можно без проблем наслаждаться играми серии Arma на Linux.


2 отзыва к статье “Wine. Решение проблемы «Bad serial given in setup» в Arma на Linux.”

  • 1
    Geon в 07.06.2023 Ответить

    Есть код для этого решения на Java, если что.

    • 2
      Igor в 15.06.2023 Ответить

      Можно самому написать на чём угодно, задача на 10 минут работы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *