【发布时间】:2020-06-10 03:52:57
【问题描述】:
我有一些带有一些关联文件但没有可执行文件的 Powershell 脚本。如果我可以说运行像 Choco install MyStuff 这样的命令,安装会创建一个名为 C:\MyStuff 的文件夹并将 Powershell 脚本复制到该文件夹中,那就太好了。很简单,但想知道是否可以用 Choco 做到这一点。 感谢您的建议!
【问题讨论】:
标签: chocolatey
我有一些带有一些关联文件但没有可执行文件的 Powershell 脚本。如果我可以说运行像 Choco install MyStuff 这样的命令,安装会创建一个名为 C:\MyStuff 的文件夹并将 Powershell 脚本复制到该文件夹中,那就太好了。很简单,但想知道是否可以用 Choco 做到这一点。 感谢您的建议!
【问题讨论】:
标签: chocolatey
这是 Chocolatey 包的一个非常基本的用例。 (基本上很多“便携式”Chocolatey 包都是这样工作的。)
我建议您查看 choco new 命令提供的帮助 - 您最终会获得大量有关如何开始创建自定义包的信息和提示。
只需创建一个包含您要部署的内容的 .zip / .7z 文件,然后创建一个 Chocolatey 包,该包利用 Install-ChocolateyZipPackage 帮助函数将该存档解压缩到选择的位置 - 例如 C:/MyStuff。
以nomacs.portable 为例。
chocolateyInstall.ps1
$ErrorActionPreference = 'Stop'
if ((Get-OSArchitectureWidth 32) -or ($env:chocolateyForceX86 -eq 'true')) {
throw "This package doesn't support 32bit architecture"
}
$fileName = 'nomacs-portable-win.zip'
$toolsPath = Split-Path $MyInvocation.MyCommand.Definition
$zip_path = "$toolsPath\$fileName"
Get-ChildItem $toolsPath\* | Where-Object { $_.PSIsContainer } | Remove-Item -Force -Recurse
$packageArgs = @{
PackageName = 'nomacs.portable'
FileFullPath = $zip_path
Destination = $toolsPath
}
Get-ChocolateyUnzip @packageArgs
Remove-Item $zip_path -ea 0
在这种情况下,文件“nomacs-portable-win.zip”被提取到“工具”文件夹 - 很可能是“C:/ProgramData/Chocolatey/lib/nomacs.portable/tools” - 如果您更改“目标” ' 在脚本中的 'C:/MyStuff' 中提取的文件将在那里结束。
【讨论】: