Ich baue ein in sich geschlossenes Chocolatey-Paket. Der Paketordner enthält: app.nuspec
, app.exe
, app.nupkg
und den tools
Unterordner. Die chocolateyInstall.ps1
ist wie folgt:Wie verwende ich eine EXE im Chocolate-Paket von chocolateyInstall.ps1?
$packageName = 'app'
$fileType = 'exe'
$silentArgs = '/VERYSILENT'
$url = '../app.exe' # the location of the file relative to the tools folder
Install-ChocolateyPackage $packageName $fileType $silentArgs $url
Wenn ich laufen:
choco install app -y
ich:
Copy-Item : cannot find the path C:\ProgramData\app.exe because does not exist
Wie kann ich diese Arbeit machen? Ich habe ein wenig darüber gelesen, wie man ein eigenständiges Paket mit Shims erstellt, aber ich verstehe nicht, wie man das benutzt. Irgendeine Hilfe? danke
EDIT 1
ich auch hier, um diese andere Lösung gefunden haben (http://patrickhuber.github.io/2015/03/19/creating-enterprise-versions-of-public-chocolatey-packages.html), die Arbeit macht. Also in meinem Fall das wäre:
$directory = $PSScriptRoot
$packageName = 'app'
$fileType = 'exe'
$silentArgs = '/VERYSILENT'
$url = Join-Path $directory '..\app.exe'
Install-ChocolateyPackage $packageName $fileType $silentArgs $url
Ich frage mich, was ist die $PSScriptRoot
Variable?
Es funktioniert nicht mit relativen Pfaden. Sehen Sie sich Garys Antwort unten an. Denken Sie auch daran, dass "choco new pkgname" alles generiert, was Sie brauchen, um dies richtig zu machen. – ferventcoder
'$ PSScriptRoot' ist dasselbe wie' $ (Split-Path $ MyInvocation.MyCommand.Path) ', aber eine automatische Variable, die in PowerShell v3 + verfügbar ist. Wir empfehlen Ihnen, die ältere Methode zu verwenden - wenn Sie nur Computer ab 3+ haben (Windows 8/Windows 2012 oder höher oder WMF auf allen anderen Rechnern aktualisieren), dann können Sie '$ PSScriptRoot' ohne Probleme verwenden . – ferventcoder