Файл не отмечен для установки – kak-ustanovit-adobe — запись пользователя Ольга (Olen_ka85) в сообществе Компьютерная грамотность в категории Вопросы по Photoshop

Содержание

Oшибка установщика Windows Installer, решение проблемы +видео 💻

Что делать если не работает установщик Windows InstallerДовольно распространённая проблема среди пользователей операционной системы Windows любых версий – ошибка msi при установке программ из файла с расширением .msi. В этой статье я опишу часто встречаемые проблемы с установщиком Windows 7/10/XP и варианты их решения, а также сделаю видео по текущему вопросу.

Файлы с расширением .msi это обычные пакеты установки (дистрибутивы) из которых ставится программа. В отличии от обычных «setup.exe», для запуска файла msi система использует службу Windows Installer (процесс msiexec.exe). Говоря простыми словами, установщик Windows разархивирует и запускает файлы из дистрибутива. Когда Windows Installer не работает, то появляются различные ошибки.

Вообще, меня это жутко бесит, т.к. после глупого сообщения об ошибке совсем непонятно что делать дальше. Microsoft специально разработали установщик Windows Installer для расширения возможностей установки программ (в основном это касается системных администраторов), но не позаботились должным образом о безглючной работе этой службы или хотя бы об адекватных сообщениях о проблемах. А нам теперь это разгребать 🙂

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

Ошибки msi файлов

Очень часто ошибки появляются из-за недостаточных прав системы на файлы или папки. Нельзя сказать, что Windows Installer не работает, в этом случае достаточно просто добавить нужные права и всё заработает. Буквально вчера я столкнулся с тем, что скаченный дистрибутив .msi не захотел устанавливаться, при этом успешно запускается мастер установки, выбираются параметры, но затем система думает несколько секунд и выдаёт ошибку:

Error reading from file Error 1305

«Error reading from file «имя файла» verify that the file exists and that you can access it» (Error 1305). Переводится «Ошибка чтения из файла … проверьте существует ли файл и имеете ли вы к нему доступ». Ну не тупняк ли? Естественно, что кнопка «Повторить» не помогает, а отмена прекращает всю установку. Сообщение особой смысловой нагрузки также не несёт, т.к. файл точно существует и я имею к нему доступ, иначе бы просто не смог его запустить и получить это сообщение, к тому же почему-то на английском языке 🙂

А ошибка в том, что не Я должен иметь доступ к файлу, а установщик Windows, точнее сама Система. Решается очень просто:

  1. Кликаем правой кнопкой по файлу с расширением .msi, выбираем «Свойства»
  2. На вкладке «Безопасность» смотрим, есть ли в списке пользователь с именем «система» или «System»Вкладка "Безопасность" в Windows 7
  3. Скорее всего вы такого не увидите. Поэтому будем добавлять вручную. Нажимаем кнопку «Изменить…», затем «Добавить…»
  4. В поле пишем «система» или «System» (если у вас английская Windows) и нажимаем «Проверить имена». При этом слово должно стать подчёркнутым как на картинке.Добавить права и проверить имена
  5. Нажимаем «ОК», ставим галочку «Полный доступ», «ОК»
  6. Кнопка «Дополнительно» -> «Изменить разрешения…» ставим «Добавить разрешения,  наследуемые от родительских объектов», «ОК» три раза.

Теперь ошибка установщика не появится! Можно добавить доступ на всю папку, из которой вы обычно инсталлируете программы, например на папку «Downloads», как у меня. Смотрим видео по решению проблем с правами доступа:

В Windows XP вкладки «Безопасность» не будет, если включён простой общий доступ к файлам. Чтобы его выключить, нужно зайти в и выключить опцию «Использовать простой общий доступ к файлам». В урезанных версиях Windows 7/10 и XP вкладки «Безопасность» нет в принципе. Чтобы её увидеть, нужно загрузить Windows в безопасном режиме и зайти в неё под администратором.

Ещё способы решить проблему

  • Запускайте установку, войдя в систему под администраторским аккаунтом
  • Правой кнопкой по пакету «.msi» и выбираем «Запуск от имени Администратора»
  • Выключите антивирус на время
  • Включить режим совместимости с предыдущими операционными системами. Для этого зайдите в свойства файла msi и на вкладке «Совместимость» поставьте галочку «Запустить программу в режиме совместимости»
    Включение режима совместимости в Windows 7
  • Если файл на флешке, то попробуйте скопировать его куда-нибудь на жёсткий диск и запустить оттуда (бывает, что запрещена установка программ со съёмных накопителей)
  • Попробуйте просто создать новую папку с любым именем в корне диска, перекинуть туда дистрибутив и запустить его оттуда

Описанный метод поможет при разных сообщениях, с разными номерами. Например, вы можете видеть такие ошибки файлов msi:

  • Error 1723
  • Internal Error 2203
  • Системная ошибка 2147287035
  • Ошибка «Невозможно открыть этот установочный пакет»
  • Ошибка 1603: Во время установки произошла неустранимая ошибка

Во всех этих случаях должна помочь установка прав на файл и/или на некоторые системные папки. Проверьте, имеет ли доступ «система» к папке временных файлов (вы можете получать ошибку «Системе не удается открыть указанное устройство или файл»). Для этого:

  1. Сначала узнаем нужные пути. Нажмите «Win + Pause» и зайдите в Дополнительные параметры системы
  2. В списках ищем переменные с названиями «TEMP» и «TMP» (значения обычно совпадают), в них записаны пути к временным папкам, которые использует установщик WindowsВременные папки в Windows 7
  3. Теперь идём к этим папкам и смотрим в их свойствах, имеет ли к ним доступ «система». Чтобы быстро получить путь к временной папке пользователя, кликните два раза по переменной, скопируйте путь и вставьте его в адресной строке «Проводника» Windows

Путь к временной папке TEMP

Путь к временной папке TEMP

После нажатия «Enter» путь преобразится на «нормальный» и вы переместитесь в реальную временную папку. Права на неё и надо проверять. Также рекомендую очистить временные папки от всего что там скопилось или даже лучше удалить их и создать новые с такими же названиями. Если не получается удалить папку, почитайте как удалить неудаляемое, но это не обязательно.

Если служба Windows Installer всё равно не хочет работать, то проверьте права на папку «C:\Config.Msi», сюда «система» также должна иметь полный доступ. В этом случае вы могли наблюдать ошибку «Error 1310». На всякий случай убедитесь, что к папке КУДА вы инсталлируете софт также есть все права.

Если вы используете шифрование папок, то отключите его для указанных мной папок. Дело в том, что хотя мы сами имеем к ним доступ, служба Microsoft Installer не может до них достучаться пока они зашифрованы.

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

Ошибка установщика Windows

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

  • Нет доступа к службе установщика Windows
  • Не удалось получить доступ к службе установщика Windows
  • Ошибка пакета установщика Windows (1719)

или ещё нечто подобное со словами «ошибка msi», «Windows Installer Error». Всё это означает, что система дала сбой и теперь её надо лечить. Может вы ставили какой-то софт, который испортил системные файлы и реестр, или подхватили вирус. Конечно, никогда не будет лишним удалить вирусы, или убедиться что их нет. Но оставьте этот вариант на потом, т.к. обычно проблема кроется в другом.

Сначала давайте проверим работает ли служба Windows Installer:

  1. Нажмите «Win + R» и введите
    services.
    msc
  2. Найдите в конце списка службу «Установщик Windows» или «Windows Installer»Служба установщик Windows Installer
  3. Тип запуска должен быть «Вручную». Если она «Отключена», то зайдите в «Свойства» и выберите «Вручную»
  4. Затем кликните по ней правой кнопкой и выберите «Запустить» или «Перезапустить». Если ошибок нет и состояние переходит в режим «Работает», то здесь всё нормально.
  5. Нажмите «Win + R» и введите msiexec. Если модуль MSI работает нормально, то должно появиться окно с версией установщика и параметрами запуска, а не ошибка.

Следующее что я посоветую сделать – это выполнить команду сканирования системы на повреждённые и изменённые системные файлы. Нажмите «Win + R» и введите

Sfc /scannow

Произойдёт поиск и замена испорченных файлов на оригинальные, при этом может потребоваться вставить установочный диск с Windows XP-7-10. После окончания процесса перегрузитесь и посмотрите, решена ли проблема.

Microsoft сам предлагает утилиту, призванную решить нашу проблему. Запустите программу Easy Fix и следуйте мастеру.

Скачать Easy Fix

Параметры реестра и службы

Следующий способ устранения ошибки – восстановление рабочих параметров в реестре установщика Windows Installer.

Скачать msiserver.reg

Для этого скачайте архив и запустите оттуда два reg-файла, соответственно своей версии Windows. Согласитесь с импортом настроек.

В Windows XP или Windows Server 2000 установите последнюю версию установщика 4.5.

Скачать Windows Installer 4.5

Если не помогло, то проделайте ещё перерегистрацию компонентов:

  1. Нажмите «Win + R» и введите «cmd». Затем в чёрном окне введите последовательно команды:
    MSIExec /unregister
    MSIExec /regserver
  2. В ответ должна быть пустота, никаких ошибок. Если проблема не решена, введите ещё команду
    regsvr32 msi.dll
  3. Закройте чёрное окно

Если пишет, что не хватает прав, то нужно запускать командную строку от имени Администратора.

Если команды выполнились, но не помогло, то скачайте файл и запустите msi_error.bat из архива, проверьте результат.

Последний вариант — скачайте программу Kerish Doctor, почитайте мою статью, там есть функция исправления работы службы установщика и многих других частых проблем Windows.

Также, многие программы используют .NET Framework, поэтому не будет лишним установить последнюю версию этого пакета. И, напоследок,  ещё один совет: если в пути к файлу-дистрибутиву есть хоть одна папка с пробелом в начале названия, то удалите пробел. Такой простой приём решит вашу проблему  🙂

Подведение итогов

Ошибки с установщиком Windows очень неприятные, их много и сразу непонятно куда копать. Одно ясно – система дала сбой и нужно восстанавливать её до рабочего состояния. Иногда ничего не помогает и приходится переустанавливать Windows. Однако не торопитесь это делать, попробуйте попросить помощи на этом форуме. В точности опишите вашу проблему, расскажите что вы уже делали, какие сообщения получили, и, возможно, вам помогут! Ведь мир не без добрых людей 🙂

Социальная инженерия с помощью программ Universal Windows Platform (APPX) / Habr

TL;DR: В APPX-файл Universal Windows Platform можно упаковать обычный exe-файл, который будет запускаться в Windows 10 (сборка 1607 и новее) примерно так же, как обычные exe-файлы. Это можно использовать для атак социальной инженерии, с помощью рассылки через email — почтовые провайдеры не блокируют файлы APPX. Файл должен быть подписан действующей цифровой подписью.

Universal Windows Platform

Universal Windows Platform — (сравнительно) новый стандарт для создания универсальных приложений под Windows 10, Windows 10 Mobile, Xbox One и Hololens. Стандарт появился с выходом Windows 10, и предоставляет API с ограничением привилегий и изоляцией, формат контейнера и метаданных внутри него.
UWP-приложения широко представлены в Microsoft Store. Они самодостаточны, безопасны, не требуют прав администратора для установки, хранят настройки в строго отведённых местах, и могут быть удалены начисто, прямо из «пуска».

UWP — попытка Microsoft избавиться от старых архитектурных подходов к разработке программ: внедрить разделение привилегий так, как это сделано на мобильных платформах, уйти от WinAPI GUI с пиксельной сеткой (для полноценной поддержки экранов любой плотности пикселей).
Программы UWP можно писать на C#, C++, VB и JS, а в качестве GUI-фреймфорка предлагается к использованию XAML, DirectX и HTML.

До недавнего времени, UWP-программы могли быть только изолированными, но в сборке Windows 10 1607 Microsoft реализовала Desktop Bridge — возможность упаковки любых Win32-программ в виде UWP, без использования UWP API, ограничений привилегий и изоляции.
Эта функция открывает простор для атак социальной инженерии.

Формат APPX

UWP стандартизирует файловый формат APPX — обычный ZIP-архив, с определённой структурой. В APPX-файле должен быть AppxManifest.xml — файл с описанием содержимого пакета, который можно сгенерировать или создать самостоятельно.
В AppxManifest.xml указано название программы, описание, иконка, требуемые привилегии, имя файла для запуска и точка входа внутри него.
Чтобы APPX-файл можно было установить, он должен быть подписан действующей цифровой подписью с возможностью подписи кода, доверенного удостовещяющего центра.Пример файла AppxManifest.xml с отключенной изоляцией
<?xml version="1.0" encoding="utf-8"?>
<Package
	xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
  <Identity Name="MyCompany.MySuite.MyApp" Version="1.0.0.0"
Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"
ProcessorArchitecture="x64" />
    <Properties>
       <DisplayName>test</DisplayName>
       <PublisherDisplayName>test</PublisherDisplayName>
			 <Description>test</Description>
      <Logo>logo.png</Logo>
    </Properties>
    <Resources>
      <Resource Language="en-us" />
    </Resources>
	  <Dependencies>
	  <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14316.0" MaxVersionTested="10.0.15063.0" />
	  </Dependencies>
	  <Capabilities>
	    <rescap:Capability Name="runFullTrust"/>
	  </Capabilities>
    <Applications>
      <Application Executable="MyApp.exe" EntryPoint="Windows.FullTrustApplication">
        <uap:VisualElements DisplayName="MyApp" Description="MyApp"	Square150x150Logo="logo.png"
				   Square44x44Logo="logo.png"	BackgroundColor="#666666" />
      </Application>
     </Applications>
  </Package>

Самый простой вариант упаковки существующего Win32 exe-файла в appx с помощью Desktop Bridge — написать файл манифеста вручную, и создать appx-контейнер с помощью утилиты makeappx.exe, входящей в состав Windows SDK.
makeappx.exe pack /d input_directory /p output.appx

Затем подписать с помощью signtool.exe:
signtool.exe sign /f "mycert.pfx" /p "123456" /fd sha256 /tr http://timestamp.comodoca.com/?td=sha256 /td sha256 output.appx

Преимущества APPX для социальной инженерии

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

Your browser does not support HTML5 video.

Все популярные почтовые сервисы не блокируют APPX-файлы в приложениях к письму.
У Gmail есть странная особенность: файл должен быть размером больше 4 мегабайт.

Резюме

Преимущества APPX Desktop Bridge для вирусных рассылок:
  • Можно использовать «как exe-файл»
  • Не накладывает изоляции и ограничений привилегий
  • Устанавливается и запускается в один клик
  • Не фильтруется почтовыми серверами

Недостатки:
  • Требует сертификата для подписи кода
  • Работает только в Windows 10 1609 и новее

Ссылки

Пример файла APPX Desktop Bridge (с самоподписным сертификатом)
Инструкция по упаковке APPX
Инструкция по созданию файла манифеста вручную
Информация о Desktop Bridge

Полное руководство по CMake. Часть вторая: Система сборки / Habr


В данной статье рассмотрено использование системы сборки CMake, применяемой в колоссальном количестве проектов на C/C++. Строго рекомендуется прочитать первую часть руководства во избежание непонимания синтаксиса языка CMake, явным образом фигурирующего на протяжении всей статьи.


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


Система сборки CMake представляет из себя оболочку над другими платформенно зависимыми утилитами (например, Ninja или Make). Таким образом, в самом процессе сборки, как бы парадоксально это ни звучало, она непосредственного участия не принимает.

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

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


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

# Задать третью минимальную версию CMake:
cmake_minimum_required(VERSION 3.0)

Как подметили в комментариях, команда cmake_minimum_required выставляет все флаги совместимости (смотреть cmake_policy). Некоторые разработчики намеренно выставляют низкую версию CMake, а затем корректируют функционал вручную. Это позволяет одновременно поддерживать древние версии CMake и местами использовать новые возможности.


В начале любого CMakeLists.txt следует задать характеристики проекта командой project для лучшего оформления интегрированными средами и прочими инструментами разработки.

# Задать характеристики проекта "MyProject":
project(MyProject VERSION 1.2.3.4 LANGUAGES C CXX)

Стоит отметить, что если ключевое слово LANGUAGES опущено, то по умолчанию задаются языки C CXX. Вы также можете отключить указание любых языков путём написания ключевого слова NONE в качестве списка языков или просто оставить пустой список.


Команда include заменяет строку своего вызова кодом заданного файла, действуя аналогично препроцессорной команде include языков C/C++. Этот пример запускает скриптовый файл MyCMakeScript.cmake описанной командой:

message("'TEST_VARIABLE' is equal to [${TEST_VARIABLE}]")

# Запустить скрипт `MyCMakeScript.cmake` на выполнение:
include(MyCMakeScript.cmake)

message("'TEST_VARIABLE' is equal to [${TEST_VARIABLE}]")

В данном примере, первое сообщение уведомит о том, что переменная TEST_VARIABLE ещё не определена, однако если скрипт MyCMakeScript.cmake определит данную переменную, то второе сообщение уже будет информировать о новом значении тестовой переменной. Таким образом, скриптовый файл, включаемый командой include, не создаёт собственной области видимости, о чём упомянули в комментариях к предыдущей статье.


Команда add_executable компилирует исполняемый файл с заданным именем из списка исходников. Важно отметить, что окончательное имя файла зависит от целевой платформы (например, <ExecutableName>.exe или просто <ExecutableName>). Типичный пример вызова данной команды:

# Скомпилировать исполняемый файл "MyExecutable" из
# исходников "ObjectHandler.c", "TimeManager.c" и "MessageGenerator.c":
add_executable(MyExecutable ObjectHandler.c TimeManager.c MessageGenerator.c)

Команда add_library компилирует библиотеку с указанным видом и именем из исходников. Важно отметить, что окончательное имя библиотеки зависит от целевой платформы (например, lib<LibraryName>.a или <LibraryName>.lib). Типичный пример вызова данной команды:

# Скомпилировать статическую библиотеку "MyLibrary" из
# исходников "ObjectHandler.c", "TimeManager.c" и "MessageConsumer.c":
add_library(MyLibrary STATIC ObjectHandler.c TimeManager.c MessageConsumer.c)

  • Статические библиотеки задаются ключевым словом STATIC вторым аргументом и представляют из себя архивы объектных файлов, связываемых с исполняемыми файлами и другими библиотеками во время компиляции;
  • Динамические библиотеки задаются ключевым словом SHARED вторым аргументом и представляют из себя двоичные библиотеки, загружаемые операционной системой во время выполнения программы;
  • Модульные библиотеки задаются ключевым словом MODULE вторым аргументом и представляют из себя двоичные библиотеки, загружаемые посредством техник выполнения самим исполняемым файлом;
  • Объектные библиотеки задаются ключевым словом OBJECT вторым аргументом и представляют из себя набор объектных файлов, связываемых с исполняемыми файлами и другими библиотеками во время компиляции.

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

Первым аргументом команда target_sources принимает название цели, ранее указанной с помощью команд add_library или add_executable, а последующие аргументы являются списком добавляемых исходных файлов.

Повторяющиеся вызовы команды target_sources добавляют исходные файлы к цели в том порядке, в каком они были вызваны, поэтому нижние два блока кода являются функционально эквивалентными:

# Задать исполняемый файл "MyExecutable" из исходников
# "ObjectPrinter.c" и "SystemEvaluator.c":
add_executable(MyExecutable ObjectPrinter.c SystemEvaluator.c)

# Добавить к цели "MyExecutable" исходник "MessageConsumer.c":
target_sources(MyExecutable MessageConsumer.c)
# Добавить к цели "MyExecutable" исходник "ResultHandler.c":
target_sources(MyExecutable ResultHandler.c)
# Задать исполняемый файл "MyExecutable" из исходников
# "ObjectPrinter.c", "SystemEvaluator.c", "MessageConsumer.c" и "ResultHandler.c":
add_executable(MyExecutable ObjectPrinter.c SystemEvaluator.c MessageConsumer.c
ResultHandler.c)

Местоположение выходных файлов, сгенерированных командами add_executable и add_library, определяется только на стадии генерации, однако данное правило можно изменить несколькими переменными, определяющими конечное местоположение двоичных файлов:


Исполняемые файлы всегда рассматриваются целями выполнения, статические библиотеки — архивными целями, а модульные библиотеки — библиотечными целями. Для «не-DLL» платформ динамические библиотеки рассматриваются библиотечными целями, а для «DLL-платформ» — целями выполнения. Для объектных библиотек таких переменных не предусмотрено, поскольку такой вид библиотек генерируется в недрах каталога CMakeFiles.

Важно подметить, что «DLL-платформами» считаются все платформы, основанные на Windows, в том числе и Cygwin.


Команда target_link_libraries компонует библиотеку или исполняемый файл с другими предоставляемыми библиотеками. Первым аргументом данная команда принимает название цели, сгенерированной с помощью команд add_executable или add_library, а последующие аргументы представляют собой названия целей библиотек или полные пути к библиотекам. Пример:

# Скомпоновать исполняемый файл "MyExecutable" с
# библиотеками "JsonParser", "SocketFactory" и "BrowserInvoker":
target_link_libraries(MyExecutable JsonParser SocketFactory BrowserInvoker)

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


Как упомянули в комментариях, цели в CMake тоже подвержены ручному манипулированию, однако весьма ограниченному.

Имеется возможность управления свойствами целей, предназначенных для задания процесса сборки проекта. Команда get_target_property присваивает предоставленной переменной значение свойства цели. Данный пример выводит значение свойства C_STANDARD цели MyTarget на экран:

# Присвоить переменной "VALUE" значение свойства "C_STANDARD":
get_target_property(VALUE MyTarget C_STANDARD)

# Вывести значение полученного свойства на экран:
message("'C_STANDARD' property is equal to [${VALUE}]")

Команда set_target_properties устанавливает указанные свойства целей заданными значениями. Данная команда принимает список целей, для которых будут установлены значения свойств, а затем ключевое слово PROPERTIES, после которого следует список вида <название свойства> <новое значение>:

# Установить свойству 'C_STANDARD' значение "11",
# а свойству 'C_STANDARD_REQUIRED' значение "ON":
set_target_properties(MyTarget PROPERTIES C_STANDARD 11 C_STANDARD_REQUIRED ON)

Пример выше задал цели MyTarget свойства, влияющие на процесс компиляции, а именно: при компиляции цели MyTarget CMake затребует компилятора о использовании стандарта C11. Все известные именования свойств целей перечисляются на этой странице.

Также имеется возможность проверки ранее определённых целей с помощью конструкции if(TARGET <TargetName>):

# Выведет "The target was defined!" если цель "MyTarget" уже определена,
# а иначе выведет "The target was not defined!":
if(TARGET MyTarget)
    message("The target was defined!")
else()
    message("The target was not defined!")
endif()

Команда add_subdirectory побуждает CMake к незамедлительной обработке указанного файла подпроекта. Пример ниже демонстрирует применение описанного механизма:

# Добавить каталог "subLibrary" в сборку основного проекта,
# а генерируемые файлы расположить в каталоге "subLibrary/build":
add_subdirectory(subLibrary subLibrary/build)

В данном примере первым аргументом команды add_subdirectory выступает подпроект subLibrary, а второй аргумент необязателен и информирует CMake о папке, предназначенной для генерируемых файлов включаемого подпроекта (например, CMakeCache.txt и cmake_install.cmake).

Стоит отметить, что все переменные из родительской области видимости унаследуются добавленным каталогом, а все переменные, определённые и переопределённые в данном каталоге, будут видимы лишь ему (если ключевое слово PARENT_SCOPE не было определено аргументом команды set). Данную особенность упомянули в комментариях к предыдущей статье.


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

# Загрузить настройки пакета библиотеки "GSL":
find_package(GSL 2.5 REQUIRED)

# Скомпоновать исполняемый файл с библиотекой "GSL":
target_link_libraries(MyExecutable GSL::gsl)

# Уведомить компилятор о каталоге заголовков "GSL":
target_include_directories(MyExecutable ${GSL_INCLUDE_DIRS})

В приведённом выше примере команда find_package первым аргументом принимает наименование пакета, а затем требуемую версию. Опция REQUIRED требует печати фатальной ошибки и завершении работы CMake, если требуемый пакет не найден. Противоположность — это опция QUIET, требующая CMake продолжать свою работу, даже если пакет не был найден.

Далее исполняемый файл MyExecutable линкуется с библиотекой GSL командой target_link_libraries с помощью переменной GSL::gsl, инкапсулирующей расположение уже скомпилированной GSL.

В конце вызывается команда target_include_directories, информирующая компилятора о расположении заголовочных файлов библиотеки GSL. Обратите внимание на то, что используется переменная GSL_INCLUDE_DIRS, хранящая местоположение описанных мною заголовков (это пример импортированных настроек пакета).

Вам, вероятно, захочеться проверить результат поиска пакета, если Вы указали опцию QUIET. Это можно сделать путём проверки переменной <PackageName>_FOUND, автоматически определяемой после завершения команды find_package. Например, в случае успешного импортирования настроек GSL в Ваш проект, переменная GSL_FOUND обратится в истину.

В общем случае, команда find_package имеет две разновидности запуска: модульную и конфигурационную. Пример выше применял модульную форму. Это означает, что во время вызова команды CMake ищет скриптовый файл вида Find<PackageName>.cmake в директории CMAKE_MODULE_PATH, а затем запускает его и импортирует все необходимые настройки (в данном случае CMake запустила стандартный файл FindGSL.cmake).


Информировать компилятора о располжении включаемых заголовков можно посредством двух команд: include_directories и target_include_directories. Вы решаете, какую из них использовать, однако стоит учесть некоторые различия между ними (идея предложена в комментариях).

Команда include_directories влияет на область каталога. Это означает, что все директории заголовков, указанные данной командой, будут применяться для всех целей текущего CMakeLists.txt, а также для обрабатываемых подпроектов (смотреть add_subdirectory).

Команда target_include_directories влияет лишь на указанную первым аргументом цель, а на другие цели никакого воздействия не оказывается. Пример ниже демонстрирует разницу между этими двумя командами:

add_executable(RequestGenerator RequestGenerator.c)
add_executable(ResponseGenerator ResponseGenerator.c)

# Применяется лишь для цели "RequestGenerator":
target_include_directories(RequestGenerator headers/specific)

# Применяется для целей "RequestGenerator" и "ResponseGenerator":
include_directories(headers)

В комментариях упомянуто, что в современных проектах применение команд include_directories и link_libraries является нежелательным. Альтернатива — это команды target_include_directories и target_link_libraries, действующие лишь на конкретные цели, а не на всю текущую область видимости.


Команда install генерирует установочные правила для Вашего проекта. Данная команда способна работать с целями, файлами, папками и многим другим. Сперва рассмотрим установку целей.

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

# Установить цели "TimePrinter" и "DataScanner" в директорию "bin":
install(TARGETS TimePrinter DataScanner DESTINATION bin)

Процесс описания установки файлов аналогичен, за тем исключением, что вместо ключевого слова TARGETS следует указать FILES. Пример, демонстрирующий установку файлов:

# Установить файлы "DataCache.txt" и "MessageLog.txt" в директорию "~/":
install(FILES DataCache.txt MessageLog.txt DESTINATION ~/)

Процесс описания установки папок аналогичен, за тем исключением, что вместо ключевого слова FILES следует указать DIRECTORY. Важно подметить, что при установке будет копироваться всё содержимое папки, а не только её название. Пример установки папок выглядит следующим образом:

# Установить каталоги "MessageCollection" и "CoreFiles" в директорию "~/":
install(DIRECTORY MessageCollection CoreFiles DESTINATION ~/)

После завершения обработки CMake всех Ваших файлов Вы можете выполнить установку всех описанных объектов командой sudo checkinstall (если CMake генерирует Makefile), или же выполнить данное действие интегрированной средой разработки, поддерживающей CMake.


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

+ MyProject
      - CMakeLists.txt
      - Defines.h
      - StartProgram.c
      + core
            - CMakeLists.txt
            - Core.h
            - ProcessInvoker.c
            - SystemManager.c

Главный файл сборки CMakeLists.txt описывает компиляцию всей программы: сперва происходит вызов команды add_executable, компилирующей исполняемый файл, затем вызывается команда add_subdirectory, побуждающая обработку подпроекта, и наконец, исполняемый файл линкуется с собранной библиотекой:

# Задать минимальную версию CMake:
cmake_minimum_required(VERSION 3.0)

# Указать характеристики проекта:
project(MyProgram VERSION 1.0.0 LANGUAGES C)

# Добавить в сборку исполняемый файл "MyProgram":
add_executable(MyProgram StartProgram.c)

# Требовать обработку файла "core/CMakeFiles.txt":
add_subdirectory(core)

# Скомпоновать исполняемый файл "MyProgram" со
# скомпилированной статической библиотекой "MyProgramCore":
target_link_libraries(MyProgram MyProgramCore)

# Установить исполняемый файл "MyProgram" в директорию "bin":
install(TARGETS MyProgram DESTINATION bin)

Файл core/CMakeLists.txt вызывается главным файлом сборки и компилирует статическую библиотеку MyProgramCore, предназначенную для линковки с исполняемым файлом:

# Задать минимальную версию CMake:
cmake_minimum_required(VERSION 3.0)

# Добавить в сборку статическую библиотеку "MyProgramCore":
add_library(MyProgramCore STATIC ProcessInvoker.c SystemManager.c)

После череды команд cmake . && make && sudo checkinstall работа системы сборки CMake завершается успешно. Первая команда запускает обработку файла CMakeLists.txt в корневом каталоге проекта, вторая команда окончательно компилирует необходимые двоичные файлы, а третья команда устанавливает скомпонованный исполняемый файл MyProgram в систему.


Теперь Вы способны писать свои и понимать чужие CMake-файлы, а подробно прочитать про остальные механизмы Вы можете на официальном сайте.

Следующая статья данного руководства будет посвящена тестированию и созданию пакетов с помощью CMake и выйдет через неделю. До скорых встреч!

“ошибка открытия файла для записи” на Windows 10, 8.1, 7

Установка любого программного обеспечения в Виндовс 10 – довольно простой процесс, но пользователи сообщают об ошибке при инсталляции определенных приложений. Такая неприятность скорее всего помешает установить любое другое ПО. Не волнуйтесь, вы сами сможете исправить неполадку, используя один из нижеперечисленных пунктов. Для начала разберемся, что вызвало неполадку и какую ОС вы используете.

  • Ошибка открытия документа для записи в Виндовс 7 и 8. Даже если вы не являетесь пользователем Виндовс 10, большинство решений, собранных здесь, подойдет и вам.
  • Ошибка открытия файла для записи qt5core.dll, vcredist_x86.exe, npf.sys, msvcr110.dll. Многие юзеры сообщили, что эта ошибка вызвана определенными файлами на вашем ПК. Чтобы устранить проблему, вам придется переустановить компоненты, отвечающие за них, затем проверить, решает ли это проблему.
  • При открытии одного из файлов MSI Afterburner, Kodi, Steam, VLC, Wireshark, CCleaner, BSPlayer, Hotspot Shield. Для устранения переустановите приложение.

1. Проверьте антивирус

Антивирус – ключевой элемент, защищающий ваш ПК. Скорее всего он задействовал необходимый документ, и это вызвало конфликт.

  • Отключите некоторые его функции и проверьте, исправило ли это проблему.
  • Отключите антивирусное ПО полностью, включая брандмауэр.

2. Запускаем средство устранения неполадок

Старое программное обеспечение, вероятно, не совместимо с Виндовс 10.

  • Кликните ПКМ по файлу установки.

  • Выберите “Свойства”.
  • Вкладка “Совместимость”.
  • Выбирите “Устранение неполадок совместимости”.

  • Нажмите на “рекомендованные настройки”.
  • Следуйте инструкциям.

3. Запустите программу от имени администратора

Предположим, что сообщение вызвано недостаточностью прав у пользователя. Запустите ее от имени админа:

  • Правой кнопкой по файлу -> “Запустить от имени администратора”.

При удачном запуске выполните следующие действия:

  • Правой кнопкой на документ -> Свойства.
  • Перейдите во вкладку совместимость.
  • Поставьте галочку на – “Запускать от имени администратора”.

 

4. Переустановите приложение, вызывающее ошибку

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

  • Воспользуйтесь специальной утилитой для деинсталляции.
  • Удалите вручную, через “установку и удаление программ”.
  • Воспользуйтесь деинсталлятором, он находится в папке установленного ПО.

5. Отключите контроль учетных записей пользователей

Контроль учетных записей – это функция безопасности в Windows, запрещающая пользователям изменять параметры, имеющие административные привилегии. Несмотря на то, что эта функция бывает полезна, многие склонны ее отключать.

  • Нажмите одновременно Win + S.

  • Введите “учетная запись”.
  • Выберите «Управление пользователями» в меню (либо откройте меню «Пуск» и выполните поиск пользовательского элемента управления).

  • Появится окно настроек управления профилями.
  • Передвиньте ползунок до упора до «Никогда» и нажмите «ОК», чтобы сохранить изменения.

 

Установочные файлы

Распаковать файлы в указанную директорию. Эта команда упаковывает указанные файлы в инсталляцию и затем распаковывает их в процессе установки.

Комментарий

При желании, вы можете указать комментарии к данной команде.

Тип сжатия

Укажите алгоритм сжатия, который будет использоваться для всех файлов текущей группы. Возможны следующие варианты:
DEFAULT — Сжатие основанное на LZ алгоритмах. Этот алгоритм позволяет производить очень быструю распаковку.
PPMD — PPMD сжатие. Этот алгоритм обеспечивает отличную степень сжатия, но время распаковки равно равновремени упаковки. Поэтому распаковка не очень быстрая. Этот алгоритм сжатия реализован и адаптирован для CreateInstall Дмитрием Шкариным.
STORE — Не сжимать файлы.

Уровень сжатия

Если вы используйте DEFAULT или PPMD сжатие, то уровень сжатия может изменяться от 1 до 10. Более высокое значение означает лучшее сжатие, но большее время на упаковку.

Сплошное сжатие

Отмечен => Информация об уже сжатых файлов используется для сжатия следующих файлов. Это обеспечивает лучшую степень сжатия на большом количестве однородных файлов. Заметьте, что если вы используйте PPMD сжатие, то эта возможность может ухудшить сжатие на некоторых файлах.

Команда Установочные файлы
Команда Установочные файлы

Исходные файлы (маски) или директории

Файл, маска или папка

Укажите имя файла (включая полный путь) или директории на вашем компьютере, которые должны быть включены в установку. Вы можете указать их в окне выбора нажав на кнопки справа. Если будет указана директория, то она будет сжата со всеми своими файлами и потом создана в процессе установки.


C:\data\*.dbf 
C:\myapp\*.* 
C:\picture 
C:\files\myfiles.a?? 

Рекурсивный поиск

Отмечен => рекурсивный поиска файлов в поддиректориях.

Искать только файлы

Отмечен => использовать указанные маски только для поиска файлов.

Упаковывать пустые папки

Отмечен => учитывать и добавлять в установку пустые директории.

Игнорировать маски

Вы можете определить маски для исключаемых файлов. Маски должны разделяться через точку с запятой. Эти файлы будут игнорироваться упаковщиком. Вы можете использовать ‘*’ и ‘?’.


*.bak; temp*.dat

Комментарий
Вы можете добавить в этом поле комментарий.

Опции распаковки

Конечная директория

Укажите директорию куда будут распакованы данные файлы.
APPLICATION DATA PATH — Папка программы в Application Data.
CDROM PATH — CD или DVD диск.
CUSTOM PATH — Путь будет определен вместе с именем файла.
INSTALL PATH — Главный путь установки.
SETUP FILE PATH — Путь к запущеному файлу установки.
SYSTEM PATH — Системная директория Windows.
TEMPORARY PATH — Временная директория Windows.
WINDOWS PATH — Директория Windows.
Распаковать позднее — Вы может распаковать эти файлы в разные директории с помощью команды Распаковать файлы.

Путь не по умолчанию

Здесь вы можете указать любую директорию для установки если вы выбрали CUSTOM PATH выше.

Если файл существует

Что нужно делать если устанавливаемый файл уже существует.
Пропустить — не записывать файл.
Записать — переписать существующий файл.
Записать если новее — переписать существующий файл если записываемый файл новее или имеет большую версию.
Спросить — запросить у пользователя разрешение на перезапись данного файла.
Спросить если новее — запросить у пользователя разрешение на перезапись только если записываемый файл новее или имеет большую версию. В противном случае запись файла будет пропущена.
Замечание! Если файл должен быть обновлен, но он занят системой или другим приложением, то в конце инсталляции пользователю будет предложено перезагрузить компьютер. Такие файлы будут перезаписаны только после перезагрузки.

Условие

Вы можете указать условие при котором необходимо выполнить это действие. Если указанное условие будет ложно, то команда выполняться не будет. Подробнее использование условий описано в Как использовать Условие.

Дополнительные опции

allfolders — присвойте этой переменной 1, если вы хотите чтобы включались директории, которе непустые, но все их файлы попали в исключения.
groupname — укажите имя группы если хотите потом распаковать данные файлы с помощью команды Распаковать файлы.
password — Вы можете защитить эти файлы дополнительным паролем.
unlog — Выбор режима управлением лог файлом деинсталляции. Текущее значение будет восстановлено после окончания работы команды. Возможные параметры: on — Включено, off — Отключено, on1 — Включено (Mode 1), on2 — Включено (Mode 2).
unlogfile — Выбор режима удаления файла при деинсталляции. Текущее значение будет восстановлено после окончания работы команды. Возможные параметры: delete — Удалять, confirm — Подтверждение пользователя, list — Добавление в список файлов на удаление.
Xfilter — установка функции-фильтра для распаковки. Смотрите Как установить фильтр при распаковке файлов.


groupname => mydatafiles
password => 15qwe67
unlog => on1
unlogfile => delete
Xfilter => filtercmdproc
allfolder => 1

Комментарий
Вы можете добавить в этом поле комментарий.

Если вы распаковываете очень много файлов, то можно скрывать путь установки и имена файлов в Диалог — Прогресс. Это позволяет существенно увеличить скорость распаковки. Для этого установите значение переменной hidefiles равной 1.

Смотрите также

Как изменить каталог установки программ по умолчанию в Windows

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

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

Для проведения этой операции нам понадобится произвести всего лишь небольшое изменение в системном реестре Windows. Для этого нажмите на кнопку Пуск и введите в строке поиска regedit.exe.

Windows

Перед вами откроется окно редактора реестра, в котором вы должны найти следующий ключ:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

Теперь в правой панели выделите значение ProgramFilesDir и\или ProgramFilesDir (x86) в зависимости от того, какую версию Windows вы используете (32- или 64-разрядную). Сделайте двойной клик по этой записи и в появившемся всплывающем окне измените ее значение на D:\Program Files. Сохраните сделанные изменения и закройте редактор реестра.

Windows

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

Установка пакетов Debian | Losst

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

Установка пакетов Debian выполняется, как и в Ubuntu, с помощью пакетного менеджера apt и утилиты dpkg. Мы рассматривали их подробно в статье про установку пакетов Ubuntu. В этой же статье мы более детально остановимся на особенностях Debian.

Содержание статьи:

Установка программ с помощью apt

Перед тем как говорить непосредственно про Debian, нужно рассмотреть apt. Этот пакетный менеджер был специально разработан для Debian и потом стал использоваться в других основанных на нем дистрибутивах. Синтаксис для работы с утилитой такой:

$ sudo apt опции команда имя_пакета

Вот основные команды apt, которые вы можете использовать для управления пакетами:

  • download — скачать пакет, но не устанавливать;
  • update — используется для обновления информации о списках пакетов в репозиториях;
  • upgrade — обновление системы без удаления пакетов;
  • full-upgrade — полное обновление системы с удалением конфликтующих зависимостей;
  • install — установка пакета;
  • remove — удаление пакета без удаления конфигурационных файлов;
  • purge — полное удаление пакета;
  • autoremove — автоматическое ненужных удаление пакетов;
  • search — поиск пакета в локальной базе данных;
  • show — посмотреть информацию о пакете.

Кроме того, утилите можно передать некоторые опции, основные:

  • -c — сторонний конфигурационный файл;
  • -o — строка конфигурации;
  • -t — версия релиза для которой устанавливать пакет;
  • -f — выполнить операцию принудительно.

Таким образом, для установки пакета из репозиториев достаточно набрать:

sudo apt install имя_пакета
$ sudo apt install vlc

А для удаления пакета наберите:

sudo apt purge vlc

Вы можете искать пакеты с помощью команды search:

sudo apt search vlc

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

С помощью политик вы можете настроить из каких репозиториев будет выполняться установка deb пакетов в debian в первую очередь. Мы рассматривали репозитории Debian и как их добавлять в отдельной статье. Допустим, вы добавили backports, testing и unstable. Теперь, чтобы настроить для них приоритеты откройте конфигурационный файл /etc/apt/preferences и добавьте в него строки:

sudo vi /etc/apt/preferences

Package: *
Pin: release a=stable
Pin-Priority: 700

Package: *
Pin: release a=stretch-backports
Pin-Priority: 650

Package: *
Pin: release a=testing
Pin-Priority: 600

Package: *
Pin: release a=unstable
Pin-Priority: 100

Чем выше значение Priority, тем выше приоритет. Сначала мы указываем с помощью инструкции Package имя пакета, а затем репозиторий и его приоритет. В нашем примере самый высокий приоритет имеет репозиторий stable, если там пакета нет, он будет установлен из backports, и только потом из testing и из unstable. Теперь добавление нестабильных репозиториев не будет ломать систему. А если вы захотите установить пакет из нестабильного репозитория, то просто укажите его с помощью опции -t. Например, для testing:

sudo apt -t testing install firefox

Очень удобно и не ломает систему.

Установка программ с помощью tasksel

Инструмент tasksel разработан специально для Debian. Он позволяет устанавливать пакеты группами. Разработчики сгруппировали пакеты в зависимости от их предназначения и вы можете установить одну из нужных групп. Именно эта утилита используется в установщике Debian.

Чтобы посмотреть список доступных групп наберите:

tasksel --list-tasks

Также вы можете посмотреть какие пакеты находятся в группе:

tasksel --task-packages web-server

Или описание группы пакетов:

tasksel --task-desc web-server

Чтобы установить группу пакетов, например, веб-сервера, выполните:

tasksel install web-server

А для удаления группы:

tasksel remove web-server

Установка программ Debian таким способом достаточно проста, но здесь есть не так много пакетов.

Установка пакетов Aptitude

Aptitude — это более продвинутая программа для управления пакетами. Она поддерживает больше функций чем apt. Но для использования ее нужно установить:

sudo apt install aptitude

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

aptitude

Пакеты разделены на удобные категории чтобы их можно было просто найти:

Чтобы посмотреть информацию о пакете нажмите «Enter», чтобы отметить пакет для установки, нажмите «+», а для удаления пакета — «-«:

 

Далее чтобы установить или удалить отмеченные пакеты нажмите кнопку «g». Затем еще раз «g» для подтверждения:

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

  • install — установить пакет, поддерживает регулярные выражения;
  • remove — удалить пакет;
  • purge — удалить пакет вместе с его конфигурацией;
  • reinstall — переустановить пакет;
  • build-depens — отобразить зависимости пакета;
  • markauto — пометить пакет, как установленный автоматически в виде зависимости;
  • hold — не обновлять этот пакет;
  • keep — если для пакета намечено какое-либо действие — отменяет его;
  • forget-new — удаляет всю информацию о пакете;
  • update — обновление системы;
  • safe-update — обновление системы без удаления конфликтующих пакетов, такие пакеты не будут обновлены;
  • full-update — полное обновление системы;
  • search — поиск пакетов;
  • show — посмотреть информацию о пакете;
  • source — скачать исходный код пакета;
  • vesrsions — отобразить доступные версии пакета;
  • why — отображает причину, почему пакет не может быть установлен;
  • clean — удаляет лишние deb файлы;
  • autoclean — удаляет все пакеты из кэша;
  • download — скачать пакет, но не устанавливать.

Установка deb пакетов в debian с помощью aptitude будет выглядеть аналогично apt:

sudo aptitude install vlc

Опция -t здесь тоже актуальна:

sudo aptitude -t unstable install vlc

Установка программ Debian в synaptic

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

Для поиска нужного пакета нажмите кнопку поиск, потом введите его имя:

Далее, найденные пакеты будут отображены на панели:

Кликните по нужному пакету правой кнопкой и выберите «Отметить для установки»:

Утилита покажет какие еще пакеты будут установлены как зависимости:

Чтобы установить выбранные пакеты, нажмите кнопку «Применить».

Вам нужно будет подтвердить операцию и дождаться завершения установки. Но установка deb пакетов из консоли debian все равно проще.

Выводы

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

Оцените статью:

Загрузка…

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

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