26

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


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

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

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

5 ответов5

44

Если вас не слишком беспокоит фактическая структура папок, вы можете переместить папку в любое место и использовать символическую ссылку каталога, чтобы указать новое местоположение (например, если у вас ограниченное пространство на системном диске). Типичная командная строка для этого будет

mklink /d C:\Path\Of\Original\Folder D:\Path\Of\New\Folder

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

РЕДАКТИРОВАТЬ: Был сделан запрос, чтобы добавить, как правильно удалить символическую ссылку каталога. Вы должны быть осторожны с этим, поскольку неправильная команда может стереть папку, с которой вы связаны.

Лучшие методы:

  • Удалите символическую ссылку на каталог через Windows Explorer. Это сохранит целевую папку без изменений и удалит только символическую ссылку.

или же

  • Используйте команду rmdir C:\Path\To\Symbolic\Link

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

10

Опираясь на ответ Джонно, если пространство - это ваше дело, символическая ссылка - ваш друг. в те времена, когда steam не позволял вам устанавливать игры за пределами папки установки steam, называемой steammover, которая автоматизирует создание символической ссылки, вы можете найти в ней какое- то программное обеспечение, вы указываете на папки, содержащие программы, которые вы хотите переместить (например, C:/Program Файлы) и пункт назначения (например, D:/Programs), и вы можете перемещать определенные файлы.

7

Перемещение / установка этих приложений в другое место может иметь непредвиденные последствия.

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

Таким образом, самое простое решение (как говорили другие) - просто использовать точку соединения для перемещения файлов, позволяя приложению думать, что оно все еще находится в своем первоначально установленном месте (оно оставит папку "ghost" позади).

Что-то еще, что потребовало бы анализа для каждого приложения, чтобы увидеть, нарушает ли что-либо его перемещение, есть инструменты для этого анализа, такие как Windows ADK (Assessment and Deployment Kit), но он не автоматизирован.

5

Самый простой способ, который я нашел для этого, - это использовать Link Shell Extension. Это расширение оболочки проводника, которое позволяет вам управлять символическими и жесткими ссылками, не переходя в командную строку.

В вашем случае вы должны найти папку, которую установщик заставил вас использовать, переместить файлы в нужное место, щелкнуть правой кнопкой мыши новое местоположение и выбрать "Pick Link Source", затем вернуться к исходному местоположению и выбрать "Отбросить ссылку как ..." и выберите Junction (или символическую ссылку, хотя я обычно использую "Junction", потому что некоторые приложения не будут следовать символической ссылке).

Я использовал его для многих подобных сценариев - часто приложение навязывает принудительное расположение для файлов конфигурации и кэша (например,% appdata%\MyProgram). На SSD, если эти файлы записываются постоянно, это может сократить срок службы этого диска, поэтому я воспользуюсь этим, чтобы переместить эти файлы кэша на шпиндельный диск, немного снизив производительность, но уменьшив износ SSD.

1

Нет универсально гарантированной возможности сделать это. Существует несколько способов, с помощью которых разные программы, особенно программы, написанные на разных языках, могут проверить, где хранится исполняемый файл. Такие вещи, как символические ссылки, обычно могут быть эффективными, но всегда помните, что могут быть некоторые исключения, которые могут сломаться. Если вы перемещаете файл (например, исполняемый файл, но, возможно, какой-то другой файл), некоторые программы могут ожидать, что файл будет найден в определенном месте, и могут вести себя по-другому (возможно, особенно вероятно, что он просто сломается полностью), если что-то не так программа ожидает.

Это верно для нескольких операционных систем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .