自定义Chocolatey软件包安装到错误的目录吗?

问题描述 投票:0回答:1

我创建了一个将下载并安装依赖项的安装程序(我不知道我是否正确地这样做了。]

一切都安装正确...但是在安装结束时,我得到了一个晦涩的信息。这是我的安装程序

function install_package {
Param([string]$package_name)
$result = choco list -lo | Where-object { $_.ToLower().StartsWith($package_name.ToLower()) }
if($null -ne $result) {
return
}
Write-Host "Installing $package_name" -ForegroundColor Green
choco install $package_name -y | Out-Null
}
function setup_env_for_exe {
Param([string]$exe_name)
refreshenv | Out-Null
$exe_path = (Get-ChildItem -Force -ErrorAction SilentlyContinue 'C:\Program Files\' -recurse -include "$exe_name.exe").DirectoryName
$envPath = [Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::Machine)
if(!$env:Path.Contains($exe_path)) {
Write-Host "Setting environment path for $exe_name" -ForegroundColor Green
[Environment]::SetEnvironmentVariable(
"Path",
$envPath + ";$exe_path",
[EnvironmentVariableTarget]::Machine)
refreshenv | Out-Null
}
}
function full_setup {
Param([string]$package_name)
install_package($package_name)
setup_env_for_exe($package_name)
}
$toolsDir = (Split-Path -parent $MyInvocation.MyCommand.Definition)
full_setup("gnuplot")
full_setup("snaketail")
install_package("mongodb")
setup_env_for_exe("mongo")
Get-ChocolateyUnzip -FileFullPath "$toolsDir\test.zip" -Destination "C:\test\"

使用此脚本,我得到以下输出:

The install of stress-test-package was successful.

Software installed to 'C:\Program Files\gnuplot\'

为什么将其安装到gnuplot目录中?

如果我从脚本中删除gnuplot设置,则确实会将其安装到测试目录中。但是我不知道为什么要打印出来..以及与我的测试包无关的内容都被推送到gnuplot目录的事实

package chocolatey
1个回答
0
投票

有一个原因,为什么要在安装脚本中处理依赖项?您可以在程序包的.nuspec文件中指定程序包依赖性,这些是它们的依赖性。如果不是自维护包,则可以创建一个虚拟包。

只是一种不同的方法,也许可以帮助您。

<metadata>...</metadata>部分中添加以下内容:

<dependencies>
  <dependency id="gnuplot" version="5.2.7" />
  <dependency id="snaketail" version="1.9.4" />
  <dependency id="mongodb" version="4.2.1" />
</dependencies>
© www.soinside.com 2019 - 2024. All rights reserved.