How To Create a Script Package
How To Create a Script Package
This tutorial will focus on creating a Chocolatey script package. This type of package is one which contains one or more PowerShell scripts that are executed by Chocolatey on the target system. This powerful package type allows you to version system configuration, making reporting and compliance much simpler!
If you have not yet read Preparing Your Environment for Package Creation, please do so now and ensure you are ready to go before continuing.
Creating Your Package
- Open the
tutorials
folder in VS Code. - Press
Ctrl+Shift+P
or use the View menu and click on Command Palette. - Type
Chocolatey:
and selectCreate new Chocolatey package
from the list of available commands - Give your package a name, e.g.
script-package
. - Select
Default Template
when prompted.
Adding Your PowerShell Script
You can download an example PowerShell script from here. Once downloaded, place this script inside the tools
folder of your script package.
Next we’ll create an install script that leverages the sample script.
Create Your Install Script
Open the chocolateyInstall.ps1
script from the VS Code Explorer pane. Replace the contents of the script with the following:
$ErrorActionPreference = 'Stop' # stop on all errors
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
$script = Join-Path $toolsDir -ChildPath 'example.ps1'
Write-Host "Executing script: $script"
& $script
Save and close the file.
Cleaning Up The Packaging
Our simple example here doesn’t require anything special for an upgrade or uninstall scenario. In the VS Code Explorer pane find both the chocolateyBeforeModify.ps1
and chocolateyUninstall.ps1
files and remove them.
Creating The Package Metadata
The package metadata is stored in a file with a .nuspec
extension. It provides information to Chocolatey such as:
- Package Id
- Package Version
- Author
- Synopsis
- Dependencies
For packages being published to the Chocolatey Community Repository additional information is required. You can find information on package metadata requirements in our Package Validator Rules documentation.
In the VS Code Explorer pane find and open the embedded-zip.nuspec
file.
Replace the contents of the nuspec file with the following:
<!-- Do not remove this test for UTF-8: if “Ω” doesn’t appear as greek uppercase omega letter enclosed in quotation marks, you should use an editor that supports UTF-8, not this one. -->
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
<metadata>
<id>script-package</id>
<version>1.0.0</version>
<title>script-package (Install)</title>
<authors>Chocolatey Software</authors>
<tags>script-package script tutorial</tags>
<summary>Tutorial for script package</summary>
<description>Tutorial for script package</description>
</metadata>
<files>
<!-- this section controls what actually gets packaged into the Chocolatey package -->
<file src="tools\**" target="tools" />
</files>
</package>
Compile Your Package
The choco pack
command is used to compile your package files into a usable Chocolatey package.
- In VS Code press
Ctrl+Shift+P
or use the View menu and click on Command Palette. - Type
Chocolatey:
and clickChocolatey: Pack Chocolatey package(s)
. - Select
script-package.nuspec
from the list. - In Additional arguments enter
--output-directory='C:\tutorials'
and pressEnter
.
Install Your Script Package
You can test your package, and see how it behaves with the following command:
choco install script-package -y --source='tutorials'
Uninstall Your Script Package
You can test the uninstall behavior with the following:
choco uninstall script-package -y
Conclusion
At this point, you should have a working script package! Congratulations! Hopefully you can apply this to other scripts!