tl; dr : O que você está tentando fazer não é possível da maneira que você deseja fazer. Felizmente, ShimGenerator pode fazer isso exatamente (é para isso que foi projetado e vem com o 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"
Porqueumlinksimbólico(Symlink)nãofunciona
Essesexecutáveistêmdependênciasqueelesesperamserrelativosaoexecutável.VocêprecisarialinkarsimbolicamenteoarquivoEtodososseusarquivos/pastasdependentes-então,emoutraspalavras,vocênãopodesimplesmentecriarumlinksimbólicoparaoarquivo,vocêprovavelmenteprecisarácriarumlinksimbólicoparaodiretórioecolocaressediretórionodiretório.PATH,quemeioquederrotaopropósitoquevocêestátentandoalcançar.
Shimmingéumamaneiramelhor
OChocolateycria
Nós escrevemos mais sobre isso em link (grifo meu):
These are the benefits of creating a shim:
- Provides an exe file that calls a target executable.
- Runs the target executable where it is, which means all dependencies and other things used are all in the original location
- When items require elevated privileges, shims will raise UAC prompts.
- The exe can be called from powershell, bash, cmd.exe, or other shells just like you would call the target.
- Blocks and waits for command line apps to finish running, exits immediately when running a GUI app.
- Uses the icon of the target if the target exists on creation.
- Works better than symlinks. Symlinks on Windows fall down at file dependencies. So if your file depends on other files and DLLs, all of those need to also be linked.
- Does not require special privileges like creating symlinks (symbolic links) do. So you can create shims without administrative rights.
Se os links simbólicos funcionassem melhor, provavelmente os usaríamos em vez de gastar o tempo que trabalhamos no shimgen. Há uma FAQ na página do recurso de correção também.
Shimming em pacotes com chocolate
O Chocolatey cria automaticamente shims quando os executáveis são encontrados no diretório do pacote.
Você também pode fazer isso em chocolateyInstall.ps1
scripts (na embalagem) com Install-BinFile
. Veja mais detalhes em link .
Como você pode Symlink VLC
Para criar um link completo para o VLC, você também precisará vincular os seguintes arquivos e pastas (e todas as subpastas e arquivos nessas pastas), além de apenas vlc.exe
:
Embora eu possa fornecer um script para simbolizar a coisa toda, não acho que seja necessário, pois é uma abordagem fútil.