Могу ли я поместить файл MSI или образ ISO в пакет Chocolatey?
Итак, когда я choco install foo
, он не загружает MSI с другого URL-адреса, а берет файл изнутри пакета?
Могу ли я поместить файл MSI или образ ISO в пакет Chocolatey?
Итак, когда я choco install foo
, он не загружает MSI с другого URL-адреса, а берет файл изнутри пакета?
Да, это определенно возможно. На самом деле это именно то, что делает пакет ChocolateyGUI. Вы можете увидеть его файл .nuspec здесь:
https://github.com/chocolatey/ChocolateyGUI/blob/develop/nuspec/chocolatey/ChocolateyGUI.nuspec
<?xml version="1.0"?>
<package>
<metadata>
<id>chocolateygui</id>
<version>$version$</version>
<title>Chocolatey GUI</title>
<authors>Chocolatey</authors>
<owners>Chocolatey</owners>
<projectUrl>https://github.com/chocolatey/ChocolateyGUI</projectUrl>
<projectSourceUrl>https://github.com/chocolatey/ChocolateyGUI</projectSourceUrl>
<packageSourceUrl>https://github.com/chocolatey/ChocolateyGUI/tree/develop/nuspec/chocolatey</packageSourceUrl>
<iconUrl>https://raw.githubusercontent.com/chocolatey/choco/master/docs/logo/chocolateyicon.gif</iconUrl>
<licenseUrl>https://raw.githubusercontent.com/chocolatey/ChocolateyGUI/develop/LICENSE</licenseUrl>
<bugTrackerUrl>https://github.com/chocolatey/ChocolateyGUI/issues</bugTrackerUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>
Chocolatey GUI is a nice GUI on top of the Chocolatey command line tool.
## Features
* View all **installed** and **available** packages
* **Update** installed but outdated packages
* **Install** and **uninstall** packages
* See detailed **package information**
## Notes
This package will only work correctly on Windows 7 SP1 through Windows 10 (1708) or Windows Server 2008 R2 SP1 through Windows Server 2016, and requires .NET Framework 4.5.2 at minimum.
</description>
<summary>A GUI for Chocolatey</summary>
<releaseNotes>
All release notes for Chocolatey GUI can be found on the GitHub site - https://github.com/chocolatey/ChocolateyGUI/releases
</releaseNotes>
<tags>chocolateygui chocolatey admin foss</tags>
<dependencies>
<dependency id="Chocolatey" version="[0.10.3, 0.11)" />
</dependencies>
</metadata>
<files>
<file src="chocolateyInstall.ps1" target="tools"/>
<file src="chocolateyUninstall.ps1" target="tools"/>
<file src="..\..\BuildArtifacts\ChocolateyGUI.msi" target="tools"/>
<file src="..\..\LICENSE" target="tools\LICENSE"/>
<file src="VERIFICATION.txt" target="tools"/>
</files>
</package>
Затем, как вы указали, вы должны затем использовать Install-ChocolateyInstallPackage для выполнения установки, которая затем будет использовать локальный MSI в пакете, а не сначала его загружать. Вы можете увидеть сценарий установки ChocolateyGUI здесь:
https://github.com/chocolatey/ChocolateyGUI/blob/develop/nuspec/chocolatey/chocolateyInstall.ps1
$ErrorActionPreference = 'Stop';
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
$fileLocation = Join-Path $toolsDir 'ChocolateyGUI.msi'
$packageArgs = @{
packageName = $env:ChocolateyPackageName
softwareName = 'Chocolatey GUI'
file = $fileLocation
fileType = 'msi'
silentArgs = "/qn /norestart /l*v `"$env:TEMP\$env:ChocolateyPackageName.$env:ChocolateyPackageVersion.log`""
validExitCodes= @(0,1641,3010)
}
Install-ChocolateyInstallPackage @packageArgs
Remove-Item -Force $packageArgs.file
Вы можете сделать то же самое с файлом образа ISO, и здесь есть пошаговое руководство по установившейся передовой практике использования этого файла ISO:
Как смонтировать ISO В шоколадной упаковке
ПРИМЕЧАНИЕ. Если вы планируете отправить пакет на Chocolatey.org, имейте в виду размер файла MSI / ISO. Если он особенно велик, вероятно, лучше не включать его в nupkg, а использовать ссылку для скачивания.
Как сказал Гэри , вы можете включать произвольные файлы в пакет.
Подчеркну, что это не лучшая идея. Вы должны загрузить сам файл пакета (вот что происходит, когда вы choco install foo
). Перемещение MSI / ISO внутри пакета означает, что вы загрузите его вместе с файлом пакета и, в зависимости от размера, замедлит обратную связь на консоли.
Использование правильных помощников и внешних URL-адресов дает вам множество отличных возможностей, наименее из которых - индикатор выполнения загрузки!
Если файловое хранилище представляет собой проблему, есть много бесплатных вариантов, включая: GitHub, Google Drive, DropBox и т. Д. Если вы создаете «внутренние» пакеты для своей компании, общий сетевой ресурс может работать с file://
URL-адресами.