Домой /  Интернет / Завершение с ошибкой код ошибки 1

Завершение с ошибкой код ошибки 1

Скачав с Интернета RePack с игрой или программой, многие пользователи жалуются на ошибку, которая происходит во время установки. Как правило, при этом написано: "Unarc.dll вернул код ошибки - 1" или любое другое число вместо единицы. В статье мы разберем шесть способов устранения данной неполадки, так что дочитайте ее до конца, чтобы точно решить проблему.

Определение характера ошибки

Для начала постараемся разобраться, почему вообще появляется "Unarc.dll вернул код ошибки - 1", а уже потом перейдем к способам решения.

Сразу стоит сказать, что данная ошибка связана с распаковкой данных и может делиться на две категории:

  1. Ошибка, которую нельзя исправить.
  2. Ошибка, которую можно исправить.

Сейчас давайте более подробней рассмотрим эти два момента.

Ошибка, которую исправить нельзя

Ситуация: " Unarc.dll вернул код ошибки - 1" может быть критичной, то есть никак не получится исправить ошибку. Как было сказано, это связано с архивом, и ошибка возникает в процессе его распаковки. В данном случае в сообщении также будет указано следующее: "ERROR: file [путь_к_архиву] failed CRC check". Если это сообщение у вас высветилось, то можете даже не пытаться исправить ситуацию одним из нижеперечисленных способов. Скорее всего, архив повредился при загрузке, поэтому скачайте игру или программу заново и лучше с другого сайта.

Ошибка, которую можно исправить

Наряду с ошибкой, которую нельзя исправить, есть и другая, устранение которой возможно. Сразу стоит обозначить, что если после строки "Unarc.dll вернул код ошибки - 1" идет пометка в скобках: (decompression fails) , то данную ошибку исправить получиться одним из способов, которые мы предложим вам в этой статье. Также стоит сказать, что ошибка связана непосредственно с распаковкой архива, а точнее с самим архиватором, но также бывают случаи, когда причина немного другая. Обо всем этом будет рассказано ниже.

Способ первый: установка архиватора

Как было сказано выше, "Unarc.dll вернул код ошибки - 11" или какого-то другого числа связано чаще с архиватором. Дело в том, что создатели RePack"ов частенько используют редкие архиваторы, чтобы как можно больше снизить итоговый размер игры или программы, а у пользователей не всегда есть на компьютере инструменты, для работы с такими архивами.

К счастью, способ устранения такой ошибки довольно простой, вам нужно всего-навсего скачать и установить программу 7-Zip.

Способ №2: изменения адреса установки

Если же у вас 7-Zip уже установлен, или его установка не помогла, то можно воспользоваться вторым способом и устранить проблему с "Unarc.dll вернул код ошибки - 11". Нередкие случаи, когда данное сообщение появляется по причине присутствия русских символов на пути установки. Как не сложно догадаться, чтобы вам необходимо всего лишь переименовать папки с использованием латинских символов.

Способ третий: увеличение объема подкачки

Сообщение, например, "Unarc.dll вернул код ошибки - 14" может возникать также из-за малого объема файла подкачки. Благо на операционных системах Windows данный объем можно отрегулировать в любое время:

  1. Чтобы это сделать, вам нужно открыть утилиту "Выполнить", нажав клавиши Win+R , и выполнить в ней команду sysdm.cpl .
  2. Потом в окне, которое появится, переместиться в раздел "Дополнительно", там кликнуть по "Параметрам" в области "Быстродействие".
  3. В новом окне опять перейти в "Дополнительно" и нажать "Изменить...".
  4. Далее появится окошко "Виртуальная память", где нужно снять отметку с первого пункта, указать любой диск, кроме системного, и обозначить максимальный размер, который соответствует размеру виртуальной памяти.
  5. После этого нажать "Задать" и "ОК".

Способ №4: замена оперативной памяти

Продолжая разговор, как исправить "Unarc.dll вернул код ошибки - 1", отметим, что виною этому может стать недостаточный объем оперативной памяти. К сожалению, в этом случае поможет только ее увеличение. Однако есть и хорошая сторона - данная проблема появляется очень редко.

Способ пятый: отключение антивируса

Порою, особенно когда вы устанавливаете RePack, а не лицензию, ошибка может появляться из-за антивируса. Дело в том, что он может счесть файлы игры зараженными и переместить необходимые библиотеки, служащие для распаковки и установки, в карантин.

Что делать с "Unarc.dll вернул код ошибки - 12", если ее причиной стал антивирус? В этом случае вам достаточно всего-навсего зайти в настройки антивируса и отключить его на время инсталляции. После чего его можно снова включить.

Способ №6: анализ диска

Есть еще одна причина, которая полностью исключает возможность установки игры. Связана она непосредственно с вашим жестким диском. Дело в том, что он может быть поврежденным. При этом взаимодействие с ним ограничивается частично: вы сможете перемещать, копировать, скидывать файлы с флешки, но вот установить игру не всегда получится.

В этом случае необходима замена, но перед тем как идти в магазин, для начала лучше просканировать его. Для этого откройте окно "Выполнить" и вбейте следующую команду cmd - откроется "Командная строка". В ней вам необходимо выполнить следующую задачу: chkdsk C: /F /R /B . По итогу сканирования вы сможете понять, в норме ли ваш диск или нет. И если результаты неутешительны, то стоит задуматься о приобретении нового накопителя, так как с большой вероятностью вскоре он полностью перестанет функционировать.

Способ седьмой: установка динамической библиотеки

Порою ошибка может быть вызвана отсутствием соответствующих библиотек. В этом случае достаточно будет всего лишь загрузить их из Интернета и поместить в нужную директорию.

Нужны следующие файлы динамических библиотек: ISDone.dll и Unarc.dll . Загрузите файл динамической библиотеки ISDone с сайта, которому можно доверять, также скачайте и Unarc . После загрузке поместите их по пути - C:\Windows\System32 (32-разрядная система) или C:\Windows\SysWOW64 (64-разрядная система). После этого ошибка должна будет пропасть.

Мы рассматривали несложный механизм, позволяющий процессам в ОС реагировать на внешние события. Рассматривались способы отправки сигналов процессам при помощи kill , а также обработка поступающих сигналов в сценариях оболочки. Аналогично сигналам, коды возврата позволяют процессам взаимодействовать с вызвавшими их процессами. Эта тема частенько игнорируется пользователями, однако довольно! Сегодня мы поговорим о кодах возврата и работе с ними.

Чем являются коды возврата

Предлагаю начать наше знакомство с простой команды известной практически каждому — mv , которая перемещает файл из одного места файловой системы в другое и, возможно, переименовывает его. Как вы уже, наверное, заметили, при работе mv могут возникать ошибки в случае, если отсутствует исходный файл, или же возникли какие-то другие обстоятельства, помешавшие mv выполнить свою работу. Например:

$ mv ~/missing ~/missing2 mv: cannot stat `/home/ashep/missing": No such file or directory

Вы видите сообщение об ошибке. Очевидно, что команда не сработала. И в то же самое время за кулисами оболочки инициализируется переменная оболочки, содержащая так называемый «код возврата» последней выполненной команды. При желании мы можем получить значение этой переменной. Попробуйте:

$ mv ~/missing ~/missing2 mv: cannot stat `/home/ashep/missing": No such file or directory $ echo $? 1 $ echo "Test me" Test me $ echo $? 0

Если команда выполняется без ошибок, то обычно её код возврата равен нулю . После выполнения команды оболочка автоматически устанавливает значение переменно $? равным этому коду. Если же команда завершится с ошибкой, то, как правило, её код возврата будет отличным от нуля . В примере выше мы сперва пытаемся переместить несуществующий файл при помощи команды mv . Естественно, мы получаем ошибку, о чём свидетельствует сообщение самой программы, а также код возврата равный единице. Затем мы выполняем команду echo , которая завершается успешно. Её код возврата равен нулю.

Давайте теперь обратимся к info-странице документации программы mv (info coreutils mv ). В конце документа есть абзац, говорящий о том, что нулевой код возврата команды означает успешное выполнение, а ненулевой — об ошибке . Небогатый выбор, скажем честно, негде развернуться душе сисадмина!

Вот grep предлагает более широкий выбор средств диагностики результатов своей работы. Фрагмент из документации: «Обычно нулевой код возврата означает, что искомые строки были найдены, и код равный единице в противном случае. Если же при запуске grep использовалась опция -q , --quiet или --silent , строки были найдены, но возникла какая-то ошибка, то возвращается код 2.»

Ниже приведён список определённых системных кодов возврата:

  • 1: общие ошибки;
  • 2: ошибки работы встроенных средств оболочки;
  • 126: невозможно вызвать запрошенную команду;
  • 127: команда не найдена;
  • 128: некорректный аргумент exit ;
  • 128 + n: сигнал критической ошибки (например, kill -9 = 137);
  • 130: скрипт прерван по Ctrl+C .

Автор не видел представленного выше списка до тех пор, пока не начал более детально копаться в теме кодов возврата, так что, в принципе, вы можете создавать сценарии вообще не обращая внимание на эту информацию.

Использование кодов возврата

В основном значение кодов возврата анализируются с целью обработки ошибочных ситуаций. Ниже представлен простой фрагмент кода, в котором предпринимается попытка создать каталог и в зависимости от результатов выводится определённое сообщение.

#!/bin/bash mkdir /usr echo \$? = $? if [ $? -ne 0 ] ; then echo "mkdir /usr failed: we have an exit code of $?" exit 1 fi echo "made the requested directory. Why is "/" world writable?" exit 0

Оказывается, есть нюанс при работе с переменной $? , который вызван выполнением команд, вроде echo . Взгляните на результат работы сценария:

$ ./test.sh mkdir: /usr: File exists $? = 1 made the requested directory. Why is "/" world writable?

Увидели в чём проблема? Код возврата сразу после вызова mkdir равен единице, и это логично, поскольку каталог /usr существует. Но когда мы проверяем значение переменной $? в конструкции if , оказывается, что её значение равно нулю! Почему так? Потому что в этот момент значение переменной $? содержит код возврата предыдущего вызова echo , а не команды mkdir .

Получившуюся проблему можно решить, например, так:

#!/bin/bash mkdir /usr error=$? if [ $error -ne 0 ] ; then echo "mkdir /usr failed: we have an exit code of $error" exit 1 fi

Выше показан один из случаев, когда дублирование значения глобальной переменной в локальной имеет смысл. Таким образом, вы получаете возможность затем использовать сохранённое значение глобальной переменной там, где вам нужно, не заботясь о том, что её значение может измениться в результате каких-то событий.

Конечно же, обработка ошибок далеко не всегда связана лишь с выводом сообщений и завершением работы сценария. Рассмотрим сценарий, скачивающий файл с нескольких источников до тех пор, пока не будет успешно скачен:

Alternates=" http://www.example.com/test.pdf http://www.example2.com/test.pdf http://www.example3.com/test.pdf " gotit=0 for file in $alternates do wget $file if [ $? -ne 0 ]; then echo "Unable to get $file else gotit=1 break fi done

Сокрытие сообщений об ошибках

Теперь, когда вы знаете, как анализировать код возврата программы, вы можете заменять текст сообщений об ошибках программы на свой собственный. Это можно сделать при помощи оператора >& , который перенаправляет стандартный поток вывода и поток ошибок. Например, в нашем первом простом сценарии вывод команды mkdir можно перенаправить таким образом:

Mkdir /usr >& /dev/null

Вместо >& можно с тем же успехом использовать &> или 2>&1 . Конечно, если вы проверяете код возврата команды, то особого смысла в замене текста сообщений об ошибках нет.


Иногда ошибки Code 1 типа "синий экран", связанные с аппаратным обеспечением, могут быть вызваны повреждением оперативной памяти (RAM). Если вы сталкиваетесь со случайными перезагрузками компьютера, звуковыми сигналами при загрузке или другими неисправностями компьютера (в дополнение к ошибкам BSOD 1), то весьма вероятно, что имеются повреждения памяти. На самом деле, почти 10% падений приложений в ОС Windows вызваны повреждениями памяти.

Если вы недавно добавили новую память в компьютер, мы рекомендуем временно убрать ее, чтобы убедиться, что она не является причиной ошибки Code 1. Если это действие устранило BSOD, знаичит, это источник проблемы, и, следовательно, новая память либо несовместима с каким-то вашим оборудованием, либо повреждена. В таком случае, вам потребуется замена новых модулей памяти.

Если вы не добавляли новой памяти, на следующем этапе необходимо провести диагностический тест имеющейся памяти компьютера. Тест памяти позволяет провести сканирование на наличие серьезных сбоев памяти и периодических ошибок, которые могут быть причиной вашего синего экрана смерти 1.

Хотя последние версии Windows содержат утилиту для проверки оперативной памяти, я крайне рекомендую вместо нее использовать Memtest86 . Memtest86 представляет собой тестирующее программное обеспечение на основе BIOS, в отличие от других тестовых программ, запускаемых в среде Windows. Преимущество такого подхода в том, что утилита позволяет проверять ВСЮ операционную память на наличие ошибок Code 1, в то время как другие программы не могут проверять области памяти, занятые собственно программой, операционной системой и другими запущенными программами.