brRamires
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: По ссылке неполное описание. На самом деле, касательно offline-установки пакетов: - Пакет Chocolatey - это файл с расширением .nupkg
- Пакеты можно брать отсюда: https://chocolatey.org/packages. На странице выбранного пакета, например https://chocolatey.org/packages/autohotkey.install, в конце списка слева есть кнопка "Download".
- Установить скачанный пакет можно командой (Chocolatey должен быть установлен):
Код: choco install "полный-путь-к-nupkg-файлу" | При этом нельзя переименовывать имя файла пакета, иначе установка не произойдёт (файл дожен называться "<имя-пакета>.<версия>.nupkg"). - Метапакет - это "виртуальный" пакет, зависящий от других пакетов (содержащих в своём имени ".install" или ".portable"). Для offline-установки метапакета нужно, чтобы в папке с ним располагались пакеты, от которых он зависит.
- Пакет может как включать в себя инсталлятор программы (или portable-архив), так и не включать. Например, приведённый выше пакет "autohotkey.install" включает, а пакет "firefox" (https://chocolatey.org/packages/firefox) не включает.
- Если пакет не содержит инсталлятор, при установке он скачивается в папку, указанную опцией cacheLocation (по-умолчанию используется папка "%Temp%\chocolatey"). Скачанные инсталляторы могут использоваться при повторной установке пакетов (без повторного скачивания), а значит, они могут использоваться для offline-установки пакетов. Это работает не для всех пакетов, например, пакет "unchecky" всегда скачивает инсталлятор из Интернета, предварительно удалив тот, что находится в кэше, следовательно, его offline-установка невозможна (по крайней мере, на момент написания этого поста).
Задать свою папку для кэша можно командой: Код: choco config set cacheLocation "путь-к-папке-для-инсталляторов" | - При удалении пакета и программы из системы командой "choco uninstall" из кэша удаляется и скачанный инсталлятор, поэтому, для возможности последующей offline-установки, перед удалением нужно временно переименовать папку с инсталлятором (но не сам инсталлятор, т.к. очищается вся папка).
- При установке пакета .nupkg-файл пакета копируется в папку "%ProgramData%\chocolatey\lib\<имя-пакета>". При этом файл переименовывается - из имени удаляется версия пакета, - а значит становится непригоден для offline-установки. Также, offline-установка невозможна, если устанавливаемый пакет располагается в папке "%ProgramData%\chocolatey\lib" или одной из её подпапок.
Для обратного переименования и перемещения всех установленных пакетов в отдельную папку можно использовать скрипт move-packages.cmd: Код: @echo off if "%~1"=="/?" echo Usage: %~nx0 [dir-for-packages]&echo Default directory is "<script-dir>\packages".&echo Moves installed Chocolatey packages to specified directory.& exit /b if "%~1"=="-h" echo Usage: %~nx0 [dir-for-packages]&echo Default directory is "<script-dir>\packages".&echo Moves installed Chocolatey packages to specified directory.& exit /b if "%~1"=="" (set "MovePackagesTo=%~dp0packages") else set "MovePackagesTo=%~f1" if not exist "%MovePackagesTo%" md "%MovePackagesTo%" >nul 2>nul || (echo [ERROR] Cannot create "%MovePackagesTo%".& exit /b) for /r "%ProgramData%\chocolatey\lib" %%A in (*.nuspec) do ( if exist "%%~dpnA.nupkg" ( for /f "usebackq tokens=1,2,3* delims=<>" %%B in (`findstr.exe /c:"<version>" "%%A"`) do ( if exist "%MovePackagesTo%\%%~nA.%%D.nupkg" ( del "%%~dpnA.nupkg" >nul 2>nul || echo [ERROR] Faled to delete "%%~nA.nupkg". ) else ( ren "%%~dpnA.nupkg" "%%~nA.%%D.nupkg" >nul 2>nul if errorlevel 1 ( echo [ERROR] Failed to rename "%%~nA.nupkg". ) else ( move "%%~dpnA.%%D.nupkg" "%MovePackagesTo%" >nul 2>nul if errorlevel 1 ( echo [ERROR] Faled to move "%%~nA.%%D.nupkg". ) else ( echo [OK] "%%~nA.%%D.nupkg" ) ) ) ) ) ) echo Done. pause >nul | Правда, после перемещения nulpkg-файла, пакет перестаёт видеться командами "choco upgrade all" (обновить все установленные пакеты) и "choco list -l" (вывести список установленных пакетов). Но команды обновления отдельных пакетов, например "choco upgrade firefox", по прежнему работают, и можно использовать команду типа: Код: for %A in (packages\*.nulpkg) do choco upgrade "%A" | | Всего записей: 564 | Зарегистр. 28-09-2008 | Отправлено: 15:06 27-09-2019 | Исправлено: brRamires, 14:48 28-09-2019 |
|