tl; dr: То, что вы пытаетесь сделать, не так, как вы хотите. К счастью, ShimGenerator может сделать именно это (именно для этого он был разработан и поставляется с Chocolatey): & "$env:ChocolateyInstall\tools\shimgen.exe" --output="$env:ChocolateyInstall\bin\vlc.exe" --path=" C:\Program Files\VideoLAN\VLC\vlc.exe" -iconpath="C:\Program Files\VideoLAN\VLC\vlc.exe"
Почему символическая ссылка (символическая ссылка) не будет работать
Эти исполняемые файлы имеют зависимости, которые они ожидают относительно исполняемого файла. Вам нужно будет создать символическую ссылку на файл И все его зависимые файлы / папки - другими словами, вы не можете просто создать символическую ссылку на файл, вам, вероятно, нужно будет создать символическую ссылку на каталог и поместить этот каталог в PATH, что побеждает цель, которую вы пытаетесь достичь.
Shimming - лучший путь
Chocolatey создает прокладки, когда находит исполняемые файлы в каталогах пакетов. Симлинки падают, когда файлы имеют зависимости (как вы видите).
Мы написали больше об этом на https://chocolatey.org/docs/features-shim#benefits (выделено мной):
Вот преимущества создания прокладки:
- Предоставляет исполняемый файл, который вызывает целевой исполняемый файл.
- Запускает целевой исполняемый файл там, где он находится, что означает, что все используемые зависимости и другие вещи находятся в исходном местоположении
- Когда элементы требуют повышенных привилегий, прокладки вызовут запросы UAC.
- Exe-файл может быть вызван из powershell, bash, cmd.exe или других оболочек так же, как вы называете цель.
- Блокирует и ожидает завершения работы приложений командной строки, немедленно завершается при запуске приложения с графическим интерфейсом.
- Использует значок цели, если цель существует при создании.
- Работает лучше, чем символические ссылки. Симлинки на Windows падают при файловых зависимостях. Поэтому, если ваш файл зависит от других файлов и библиотек DLL, все они также должны быть связаны.
- Не требует специальных привилегий, таких как создание символических ссылок (символических ссылок). Таким образом, вы можете создавать прокладки без административных прав.
Если бы символические ссылки работали лучше, мы бы, вероятно, использовали их вместо того, чтобы тратить количество времени, которое мы потратили на работу с shimgen. На странице возможностей шимов также есть FAQ .
Шимминг в шоколадных пакетах
Chocolatey автоматически создает прокладки, когда исполняемые файлы находятся в каталоге пакета.
Вы также можете сделать это в сценариях chocolateyInstall.ps1
(в упаковке) с помощью Install-BinFile
. Подробности смотрите на https://chocolatey.org/docs/helpers-install-bin-file .
Как вы можете Symlink VLC
Для полной символической ссылки VLC вам также потребуется символическая ссылка на следующие файлы и папки (и любые подпапки и файлы в этих папках) в дополнение к просто vlc.exe
:
Хотя я мог бы предоставить сценарий для символической ссылки всей вещи, я не думаю, что это необходимо, поскольку это в значительной степени бесполезный подход.