tl; dr : Was Sie zu tun versuchen, ist nicht in der gewünschten Weise möglich. Glücklicherweise kann ShimGenerator genau das tun (dafür wurde es entwickelt und es wird mit Chocolatey geliefert ): & "$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"
Warum funktioniert ein symbolischer Link (Symlink) nicht?
Diese ausführbaren Dateien haben Abhängigkeiten, von denen sie erwarten, dass sie relativ zur ausführbaren Datei sind. Sie müssten die Datei UND alle ihre abhängigen Dateien / Ordner mit einem Symlink verknüpfen. Mit anderen Worten, Sie können die Datei nicht einfach mit einem Symlink verknüpfen. Möglicherweise müssen Sie das Verzeichnis mit dem Symlink verknüpfen und dieses Verzeichnis auf den PATH setzen, was die Art der Datei beeinträchtigt Zweck, den Sie zu erreichen versuchen.
Shimming ist ein besserer Weg
Chocolatey erstellt Shims, wenn es ausführbare Dateien in Paketverzeichnissen findet. Symlinks fallen herunter, wenn die Dateien Abhängigkeiten haben (wie Sie sehen).
Wir haben mehr darüber unter https://chocolatey.org/docs/features-shim#benefits (Hervorhebung meines) geschrieben:
Dies sind die Vorteile der Erstellung einer Unterlage:
- Stellt eine Exe-Datei bereit, die eine ausführbare Zieldatei aufruft.
- Führt die Ziel-Programmdatei an dem Ort aus, an dem sie sich befindet, dh alle Abhängigkeiten und sonstigen verwendeten Elemente befinden sich alle am ursprünglichen Speicherort
- Wenn für Elemente erhöhte Berechtigungen erforderlich sind, werden durch Shims UAC-Eingabeaufforderungen angezeigt.
- Das Exe kann von Powershell, Bash, cmd.exe oder anderen Shells aufgerufen werden, genau wie Sie das Ziel nennen würden.
- Blockiert und wartet, bis die Ausführung der Befehlszeilen-Apps abgeschlossen ist. Wird beim Ausführen einer GUI-App sofort beendet.
- Verwendet das Symbol des Ziels, wenn das Ziel bei der Erstellung vorhanden ist.
- Funktioniert besser als Symlinks. Symlinks unter Windows fallen bei Dateiabhängigkeiten aus. Wenn Ihre Datei also von anderen Dateien und DLLs abhängig ist, müssen alle diese Dateien auch verlinkt werden.
- Erfordert keine besonderen Privilegien wie das Erstellen von Symlinks (symbolischen Links). So können Sie Shims ohne Administratorrechte erstellen.
Wenn Symlinks besser funktionierten, hätten wir sie wahrscheinlich verwendet, anstatt die Zeit zu verwenden, die wir an Shimgen gearbeitet haben. Es gibt auch eine FAQ auf der Shim-Feature-Seite .
Shining in schokoladigen Packungen
Chocolatey erstellt automatisch Shims, wenn sich ausführbare Dateien im Paketverzeichnis befinden.
Sie können dies auch in chocolateyInstall.ps1
Skripten (in der Verpackung) mit tun Install-BinFile
. Weitere Informationen finden Sie unter https://chocolatey.org/docs/helpers-install-bin-file .
Wie können Sie VLC verknüpfen?
Um VLC vollständig zu verknüpfen, müssen Sie zusätzlich zu den folgenden Dateien und Ordnern (sowie den Unterordnern und Dateien in diesen Ordnern) auch einen Symlink erstellen vlc.exe
:
Ich könnte zwar ein Skript bereitstellen, um die gesamte Sache symbolisch zu verknüpfen, aber ich denke nicht, dass es notwendig ist, da es ziemlich sinnlos ist.