Вопрос или проблема
Я хочу изменить путь установки winget (диспетчер пакетов для Windows) на D:\Program Files\{вставить имя папки}
. Это команда, которую мне рекомендовали использовать в документации
winget install --id {вставить id программы} --location "D:\Program Files\{вставить имя папки}"
Но вместо этого он устанавливает файл в D:\Program
Таким образом, насколько я понял, он считывает расположение до пробела и создает папку до этого места. Чтобы убедиться, я использовал имя папки без пробелов, и оно установилось правильно.
Я изначально разместил этот вопрос на StackOverflow, но его пометили как аппаратное/программное обеспечение и сказали разместить его здесь, как это относится к этому?
Эта функция предложена в
Можно ли задать путь установки программного обеспечения? #489.
Ответ от 11 июля 2020 года был:
В Winget уже есть функция: используйте
winget install Software.Name --location "C:\Folder\Software.Name"
Однако поддержка пока ограничена.
НО, у нас также появилась поддержка интерактивного режима winget install
Software.Name-i
, который на данный момент является более безопасным вариантом, чем--location
.
Опция location
новая и, вероятно, содержит ошибки, и похоже, что вы нашли одну из них.
Возможно, лучшее решение – подождать, пока это будет исправлено, и добавить
отчет об ошибке на https://github.com/microsoft/winget-cli/issues.
Если решение -i
не подходит, вы можете временно
вручную переместить содержимое папки с C
на D
и
заменить папку C
символьной ссылкой на папку D
.
Для получения дополнительной информации смотрите
Полное руководство по созданию символических ссылок (также известных как symlinks) в Windows.
вы можете использовать “Progra~1” для “Program Files” и “Progra~2” для “Program Files (x86)”. это ошибка, вызванная синтаксисом powershell или cmd, а не из-за winget. Вам нужно преобразовать ваш путь в любую форму без пробелов или специальных символов, это должно быть обычной привычкой, если вы не хотите сталкиваться с такими проблемами.
.
Ответ или решение
Изменение каталога установки Winget: Подробное руководство
Теория
Windows Package Manager "winget" предоставляет мощный инструмент для установки программного обеспечения. Однако, как и с многими инструментами, возникают проблемы совместимости и использования, особенно когда дело касается смены путей установки. В вашем случае, проблема, связанная с установкой в неверный путь, не редкость, особенно учитывая пробелы в путях, которые могут приводить к некорректной интерпретации командной строкой.
При использовании командной строки Windows или PowerShell, пробелы в путях могут вызывать проблемы, поскольку они интерпретируются как разделители. Чтобы избежать этого, нужно либо обернуть весь путь в двойные кавычки, либо использовать краткие имена путей. Например, "Program Files" может быть интерпретировано неправильно, если не применять соответствующие меры.
Кроме того, важно отметить, что поддержка параметра --location
в winget является новой и не всеми программами поддерживается в полной мере. Это означает, что некоторые разработчики софта могут не предусматривать переопределение каталога установки через этот механизм, который еще может содержать ошибки или работать с ограничениями.
Пример
Рассмотрим пример: вы хотите установить программу через winget в "D:\Program Files\MyApp". Правильная команда будет:
winget install --id MyApp --location "D:\Program Files\MyApp"
Если пробелы приводят к установке в "D:\Program", нужно убедиться, что кавычки используются правильно. Альтернативно, можно использовать 8.3 имена путей:
winget install --id MyApp --location "D:\Progra~1\MyApp"
По состоянию на июль 2020 года, в ответе на запрос по функциям установки было предложено использовать интерактивный режим установки:
winget install MyApp -i
Интерактивный режим может предложить более устойчивый вариант, позволяющий вручную уточнить параметры установки во время выполнения.
Применение
Для практического решения вашей проблемы, рассмотрите следующие подходы:
-
Использование кавычек и 8.3-формата. Всегда используйте двойные кавычки для путей с пробелами или используйте 8.3 имена, чтобы избежать недоразумений с пробелами.
-
Сообщение о проблеме. Если проблема повторяется, стоит сообщить о ней на GitHub в разделе проблем winget. В разделе можно поделиться как вашими наблюдениями, так и предложениями, что может ускорить решение проблемы.
-
Избегание пробелов в пользовательских путях. Лучший подход – избегать путей с пробелами или специальными символами, что поможет предотвратить многие накладки.
-
Использование символических ссылок. Если путём не удается установить приложение, установите его в дефолтное местоположение и переместите файлы вручную в желаемый каталог, затем создайте символическую ссылку:
mklink /D "C:\Program Files\MyApp" "D:\Program Files\MyApp"
Символические ссылки могут помочь сделать приложения доступными по новому пути, что актуально для тех, у кого SSD на C: становится полностью занятым и требуется более свободное пространство на другом диске.
Для более наглядного объяснения и шага за шагом рассмотрения символических ссылок, вы можете обратиться к руководству по символьным ссылкам.
Заключение
Эти рекомендации должны помочь вам эффективно управлять установками, избегая проблем с пробелами в путях. Внимательное следование этим инструкциям обеспечит надежное управление установками через winget и минимизацию проблем, связанных с несовместимостью инструментов.