Я создаю автономный пакет Chocolatey. Папка пакета содержит: app.nuspec
, app.exe
, app.nupkg
и подпапку tools
. 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
Когда я бегу:
choco install app -y
Я получил:
Copy-Item : cannot find the path C:\ProgramData\app.exe because does not exist
Как я могу заставить это работать? Я немного читал о «создании автономного пакета с прокладками», но я действительно не понимаю, как это использовать? Любая помощь? благодарю вас
РЕДАКТИРОВАТЬ 1
Я также нашел это другое решение здесь (http://patrickhuber.github.io/2015/03/19/creating-enterprise-versions-of-public-chocolatey-packages.html), который работает. Итак, в моем случае это будет:
$directory = $PSScriptRoot
$packageName = 'app'
$fileType = 'exe'
$silentArgs = '/VERYSILENT'
$url = Join-Path $directory '..\app.exe'
Install-ChocolateyPackage $packageName $fileType $silentArgs $url
Мне было интересно, что такое переменная $PSScriptRoot
?
choco new pkgname
генерирует все, что вам нужно для правильного понимания. - person ferventcoder   schedule 23.03.2016$PSScriptRoot
— это то же самое, что и$(Split-Path $MyInvocation.MyCommand.Path)
, но это автоматическая переменная, доступная в PowerShell v3+. Мы рекомендуем вам использовать старый метод — если у вас есть только компьютеры с версией 3+ (например, Windows 8/Windows 2012 и более поздние версии или обновление WMF на всех других ваших машинах), то вы можете без проблем использовать$PSScriptRoot
. - person ferventcoder   schedule 23.03.2016