Como colocar links simbólicos para todos os executáveis instalados através do Chocolatey em um diretório específico?

2

Chocolatey - PowerShell - link simbólico

Eu instalei alguns pacotes usando o Gerenciador de Pacotes do Chocolatey. Em vez de adicionar cada diretório de instalação ao PATH ou na minha variável $PATH no PowerShell, desejo criar um diretório e colocar links simbólicos para executáveis de cada pacote. Eu fiz isso para os seguintes pacotes:

  • CCleaner
  • Google Chrome
  • Firefox
  • Tudo isso funcionou bem. Recentemente instalei o VSCode e o VLC e o mesmo método não funcionou. Eu usei este comando para criar os links simbólicos no PowerShell:

    %código% VLC (e VSCode) ambos funcionam bem quando são clicados duas vezes no symlink. Existe uma maneira melhor de fazer isso (e por que esse método não está funcionando)?     
    por sauravsahu 16.06.2017 / 17:30

    1 resposta

    6

    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 shims quando encontra executáveis nos diretórios de pacotes. Os links simbólicos caem quando os arquivos têm dependências (como você está vendo).

    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.

        
    por 16.06.2017 / 18:45