Welcome to the Chocolatey Community Package Repository! The packages found in this section of the site are provided, maintained, and moderated by the community.
Moderation
Every version of each package undergoes a rigorous moderation process before it goes live that typically includes:
- Security, consistency, and quality checking
- Installation testing
- Virus checking through VirusTotal
- Human moderators who give final review and sign off
More detail at Security and Moderation.
Organizational Use
If you are an organization using Chocolatey, we want your experience to be fully reliable. Due to the nature of this publicly offered repository, reliability cannot be guaranteed. Packages offered here are subject to distribution rights, which means they may need to reach out further to the internet to the official locations to download files at runtime.
Fortunately, distribution rights do not apply for internal use. With any edition of Chocolatey (including the free open source edition), you can host your own packages and cache or internalize existing community packages.
Disclaimer
Your use of the packages on this site means you understand they are not supported or guaranteed in any way. Learn more...
-
STEP1
Package Review
-
STEP2
Integration Method
-
STEP3
Internal Repo Url
-
STEP4
Environment Setup
-
STEP5
Install Script
Step 1: Review Your Packages
Step 2: Choose Your Integration Method
Step 3: Enter Your Internal Repository Url
(this should look similar to https://community.chocolatey.org/api/v2/)
Step 3: Copy Your Script or Download Config
Option 1: Copy Script
Option 2: Download Config
Step 4: Setup Your Environment
1. Ensure you are set for organizational deployment
Please see the organizational deployment guide
2. Get the package into your environment
Option 1: Cached Package (Unreliable, Requires Internet - Same As Community)-
Open Source or Commercial:
- Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to https://community.chocolatey.org/api/v2/. Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
-
You can also just download the packages and push them to a repository
Download Packages
-
Open Source
-
Download the packages:
Download Packages - Follow manual internalization instructions
-
-
Package Internalizer (C4B)
-
Run: (additional options)
-
For package and dependencies run:
- Automate package internalization
-
Run: (additional options)
Step 5: Copy Your Script
See options you can pass to upgrade.
See best practices for scripting.
Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.
If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:
## 1. REQUIREMENTS ##
### Here are the requirements necessary to ensure this is successful.
### a. Internal/Private Cloud Repository Set Up ###
#### You'll need an internal/private cloud repository you can use. These are
#### generally really quick to set up and there are quite a few options.
#### Chocolatey Software recommends Nexus, Artifactory Pro, or ProGet as they
#### are repository servers and will give you the ability to manage multiple
#### repositories and types from one server installation.
### b. Download Chocolatey Package and Put on Internal Repository ###
#### You need to have downloaded the Chocolatey package as well.
#### Please see https://chocolatey.org/install#organization
### c. Other Requirements ###
#### We initialize a few things that are needed by this script - there are no other requirements.
$ErrorActionPreference = "Stop"
#### Set TLS 1.2 (3072) as that is the minimum required by various up-to-date repositories.
#### Use integers because the enumeration value for TLS 1.2 won't exist
#### in .NET 4.0, even though they are addressable if .NET 4.5+ is
#### installed (.NET 4.5 is an in-place upgrade).
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
#### We use this variable for future REST calls.
$RequestArguments = @{
UseBasicParsing = $true
}
## 2. TOP LEVEL VARIABLES ##
### a. Your internal repository url (the main one). ###
#### Should be similar to what you see when you browse
#### to https://community.chocolatey.org/api/v2/
$NugetRepositoryUrl = "INTERNAL REPO URL"
### b. Internal Repository Credential ###
#### If required, add the repository access credential here
# $NugetRepositoryCredential = [PSCredential]::new(
# "username",
# ("password" | ConvertTo-SecureString -AsPlainText -Force)
# )
# $RequestArguments.Credential = $NugetRepositoryCredential
### c. Chocolatey nupkg download url ###
#### This url should result in an immediate download when you navigate to it
$ChocolateyDownloadUrl = "$($NugetRepositoryUrl.TrimEnd('/'))/package/chocolatey.1.1.0.nupkg"
### d. Chocolatey Central Management (CCM) ###
#### If using CCM to manage Chocolatey, add the following:
#### i. Endpoint URL for CCM
# $ChocolateyCentralManagementUrl = "https://chocolatey-central-management:24020/ChocolateyManagementService"
#### ii. If using a Client Salt, add it here
# $ChocolateyCentralManagementClientSalt = "clientsalt"
#### iii. If using a Service Salt, add it here
# $ChocolateyCentralManagementServiceSalt = "servicesalt"
## 3. ENSURE CHOCOLATEY IS INSTALLED ##
### Ensure Chocolatey is installed from your internal repository
#### Download the Nupkg, appending .zip to the filename to handle archive cmdlet limitations
if (-not (Get-Command choco.exe -ErrorAction SilentlyContinue)) {
$TempDirectory = Join-Path $env:Temp "chocolateyInstall"
if (-not (Test-Path $TempDirectory -PathType Container)) {
$null = New-Item -Path $TempDirectory -ItemType Directory
}
$DownloadedNupkg = Join-Path $TempDirectory "$(Split-Path $ChocolateyDownloadUrl -Leaf).zip"
Invoke-WebRequest -Uri $ChocolateyDownloadUrl -OutFile $DownloadedNupkg @RequestArguments
#### Extract the Nupkg, and run the chocolateyInstall script
if (Get-Command Microsoft.PowerShell.Archive\Expand-Archive -ErrorAction SilentlyContinue) {
Microsoft.PowerShell.Archive\Expand-Archive -Path $DownloadedNupkg -DestinationPath $TempDirectory -Force
} else {
# PowerShell versions <4.0 do not have this function available
try {
$shellApplication = New-Object -ComObject Shell.Application
$zipPackage = $shellApplication.NameSpace($DownloadedNupkg)
$destinationFolder = $shellApplication.NameSpace($TempDirectory)
$destinationFolder.CopyHere($zipPackage.Items(), 0x10)
} catch {
Write-Warning "Unable to unzip package using built-in compression."
throw $_
}
}
& $(Join-Path $TempDirectory "tools\chocolateyInstall.ps1")
}
if (-not (Get-Command choco.exe -ErrorAction SilentlyContinue)) {
refreshenv
}
## 4. CONFIGURE CHOCOLATEY BASELINE ##
### a. FIPS Feature ###
#### If you need FIPS compliance - make this the first thing you configure
#### before you do any additional configuration or package installations
# choco feature enable -n useFipsCompliantChecksums
### b. Apply Recommended Configuration ###
#### Move cache location so Chocolatey is very deterministic about
#### cleaning up temporary data and the location is secured to admins
choco config set --name cacheLocation --value C:\ProgramData\chocolatey\cache
#### Increase timeout to at least 4 hours
choco config set --name commandExecutionTimeoutSeconds --value 14400
#### Turn off download progress when running choco through integrations
choco feature disable --name showDownloadProgress
### c. Sources ###
#### Remove the default community package repository source
choco source list --limitoutput | ConvertFrom-Csv -Header 'Name', 'Location' -Delimiter '|' | ForEach-Object {
if ($_.Location -eq 'https://community.chocolatey.org/api/v2/') {
choco source remove -n $_.Name
}
}
#### Add internal default sources
#### You could have multiple sources here, so we will provide an example
#### of one using the remote repo variable here
#### NOTE: This EXAMPLE may require changes
if ($NugetRepositoryCredential) {
choco source add --name ChocolateyInternal --source $NugetRepositoryUrl --user $NugetRepositoryCredential.UserName --password $NugetRepositoryCredential.GetNetworkCredential().Password --priority 1
} else {
choco source add --name ChocolateyInternal --source $NugetRepositoryUrl --priority 1
}
### b. Keep Chocolatey Up To Date ###
#### Keep chocolatey up to date based on your internal source
#### You control the upgrades based on when you push an updated version
#### to your internal repository.
#### Note the source here is to the OData feed, similar to what you see
#### when you browse to https://community.chocolatey.org/api/v2/
choco upgrade chocolatey --confirm
## 5. ENSURE CHOCOLATEY FOR BUSINESS ##
### If you don't have Chocolatey for Business (C4B), you'll want to remove from here down.
### a. Ensure The License File Is Installed ###
#### Create a license package using script from https://docs.chocolatey.org/en-us/how-tos/setup-offline-installation#exercise-4-create-a-package-for-the-license
choco install chocolatey-license --source $NugetRepositoryUrl --confirm
### b. Disable The Licensed Source ###
#### The licensed source cannot be removed, so it must be disabled.
#### This must occur after the license has been set by the license package.
if ("chocolatey-license" -in (choco list --localonly --limitoutput | ConvertFrom-Csv -Header "Name" -Delimiter "|").Name) {
choco source disable --name chocolatey.licensed
} else {
Write-Warning "Not disabling 'chocolatey.licensed' feed, as Chocolatey-License has not been installed."
}
### c. Ensure Chocolatey Licensed Extension ###
#### You will have downloaded the licensed extension to your internal repository
#### as you have disabled the licensed repository in step 5b.
#### Ensure the chocolatey.extension package (aka Chocolatey Licensed Extension)
if ("chocolatey-license" -in (choco list --localonly --limitoutput | ConvertFrom-Csv -Header "Name" -Delimiter "|").Name) {
choco install chocolatey.extension --source $NugetRepositoryUrl --confirm
} else {
Write-Warning "Not installing 'chocolatey.extension', as Chocolatey-License has not been installed."
}
#### The Chocolatey Licensed Extension unlocks all of the following, which also have configuration/feature items available with them. You may want to visit the feature pages to see what you might want to also enable:
#### - Package Builder - https://docs.chocolatey.org/en-us/features/paid/package-builder
#### - Package Internalizer - https://docs.chocolatey.org/en-us/features/paid/package-internalizer
#### - Package Synchronization (3 components) - https://docs.chocolatey.org/en-us/features/paid/package-synchronization
#### - Package Reducer - https://docs.chocolatey.org/en-us/features/paid/package-reducer
#### - Package Audit - https://docs.chocolatey.org/en-us/features/paid/package-audit
#### - Package Throttle - https://docs.chocolatey.org/en-us/features/paid/package-throttle
#### - CDN Cache Access - https://docs.chocolatey.org/en-us/features/paid/private-cdn
#### - Branding - https://docs.chocolatey.org/en-us/features/paid/branding
#### - Self-Service Anywhere (more components will need to be installed and additional configuration will need to be set) - https://docs.chocolatey.org/en-us/features/paid/self-service-anywhere
#### - Chocolatey Central Management (more components will need to be installed and additional configuration will need to be set) - https://docs.chocolatey.org/en-us/features/paid/chocolatey-central-management
#### - Other - https://docs.chocolatey.org/en-us/features/paid/
### d. Ensure Self-Service Anywhere ###
#### If you have desktop clients where users are not administrators, you may
#### to take advantage of deploying and configuring Self-Service anywhere
choco feature disable --name showNonElevatedWarnings
choco feature enable --name useBackgroundService
choco feature enable --name useBackgroundServiceWithNonAdministratorsOnly
choco feature enable --name allowBackgroundServiceUninstallsFromUserInstallsOnly
choco config set --name allowedBackgroundServiceCommands --value "install,upgrade,uninstall"
### e. Ensure Chocolatey Central Management ###
#### If you want to manage and report on endpoints, you can set up and configure
### Central Management. There are multiple portions to manage, so you'll see
### a section on agents here along with notes on how to configure the server
### side components.
if ($ChocolateyCentralManagementUrl) {
choco install chocolatey-agent --source $NugetRepositoryUrl --confirm
choco config set --name CentralManagementServiceUrl --value $ChocolateyCentralManagementUrl
if ($ChocolateyCentralManagementClientSalt) {
choco config set --name centralManagementClientCommunicationSaltAdditivePassword --value $ChocolateyCentralManagementClientSalt
}
if ($ChocolateyCentralManagementServiceSalt) {
choco config set --name centralManagementServiceCommunicationSaltAdditivePassword --value $ChocolateyCentralManagementServiceSalt
}
choco feature enable --name useChocolateyCentralManagement
choco feature enable --name useChocolateyCentralManagementDeployments
}
See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.
If Applicable - Chocolatey Configuration/Installation
## 1. REQUIREMENTS ##
### Here are the requirements necessary to ensure this is successful.
### a. Internal/Private Cloud Repository Set Up ###
#### You'll need an internal/private cloud repository you can use. These are
#### generally really quick to set up and there are quite a few options.
#### Chocolatey Software recommends Nexus, Artifactory Pro, or ProGet as they
#### are repository servers and will give you the ability to manage multiple
#### repositories and types from one server installation.
### b. Download Chocolatey Package and Put on Internal Repository ###
#### You need to have downloaded the Chocolatey package as well.
#### Please see https://chocolatey.org/install#organization
### c. Other Requirements ###
#### i. chocolatey.chocolatey
##### You will require the chocolatey.chocolatey collection to be installed
##### on all machines using this playbook.
##### Please see https://github.com/chocolatey/chocolatey-ansible/#installing-the-collection-from-ansible-galaxy
- name: Install and Configure Chocolatey
hosts: all
## 2. TOP LEVEL VARIABLES ##
vars:
### a. Your internal repository url (the main one). ###
#### Should be similar to what you see when you browse
#### to https://community.chocolatey.org/api/v2/
nuget_repository_url: INTERNAL REPO URL
### b. Internal Repository Credential ###
#### If required, add the repository access credential here and
#### uncomment lines with source_username and source_password below
# nuget_repository_username: username
# nuget_repository_password: password
### c. Chocolatey Central Management (CCM) ###
#### If using CCM to manage Chocolatey, add the following:
#### i. Endpoint URL for CCM
# chocolatey_central_management_url: https://chocolatey-central-management:24020/ChocolateyManagementService
#### ii. If using a Client Salt, add it here
# chocolatey_central_management_client_salt: clientsalt
#### iii. If using a Service Salt, add it here
# chocolatey_central_management_service_salt: servicesalt
## 3. ENSURE CHOCOLATEY IS INSTALLED ##
### Ensure Chocolatey is installed from your internal repository
tasks:
- name: Install chocolatey
win_chocolatey:
name: chocolatey
source: {{ nuget_repository_url }}
# source_username: {{ nuget_repository_username }}
# source_password: {{ nuget_repository_password }}
## 4. CONFIGURE CHOCOLATEY BASELINE ##
### a. FIPS Feature ###
#### If you need FIPS compliance - make this the first thing you configure
#### before you do any additional configuration or package installations
# - name: Enable FIPS compliance
# win_chocolatey_feature:
# name: useFipsCompliantChecksums
# state: enabled
### b. Apply Recommended Configuration ###
#### Move cache location so Chocolatey is very deterministic about
#### cleaning up temporary data and the location is secured to admins
- name: Set the cache location
win_chocolatey_config:
name: cacheLocation
state: present
value: C:\ProgramData\chocolatey\cache
#### Increase timeout to at least 4 hours
- name: Set the command execution timeout
win_chocolatey_config:
name: commandExecutionTimeoutSeconds
state: present
value: 14400
#### Turn off download progress when running choco through integrations
- name: Disable showing download progress
win_chocolatey_feature:
name: showDownloadProgress
state: disabled
### c. Sources ###
#### Remove the default community package repository source
- name: Remove Chocolatey Community Repository
win_chocolatey_source:
name: chocolatey
state: absent
#### Add internal default sources
#### You could have multiple sources here, so we will provide an example
#### of one using the remote repo variable here
#### NOTE: This EXAMPLE may require changes
- name: Add Internal Repository
win_chocolatey_source:
name: ChocolateyInternal
state: present
source: {{ nuget_repository_url }}
# source_username: {{ nuget_repository_username }}
# source_password: {{ nuget_repository_password }}
priority: 1
### b. Keep Chocolatey Up To Date ###
#### Keep chocolatey up to date based on your internal source
#### You control the upgrades based on when you push an updated version
#### to your internal repository.
#### Note the source here is to the OData feed, similar to what you see
#### when you browse to https://community.chocolatey.org/api/v2/
- name: Upgrade Chocolatey
win_chocolatey:
name: chocolatey
state: latest
## 5. ENSURE CHOCOLATEY FOR BUSINESS ##
### If you don't have Chocolatey for Business (C4B), you'll want to remove from here down.
### a. Ensure The License File Is Installed ###
#### Create a license package using script from https://docs.chocolatey.org/en-us/how-tos/setup-offline-installation#exercise-4-create-a-package-for-the-license
- name: Install Chocolatey License
win_chocolatey:
name: chocolatey-license
source: ChocolateyInternal
state: latest
### b. Disable The Licensed Source ###
#### The licensed source cannot be removed, so it must be disabled.
#### This must occur after the license has been set by the license package.
- name: Disable Chocolatey Community Repository
win_chocolatey_source:
name: chocolatey.licensed
state: disabled
### c. Ensure Chocolatey Licensed Extension ###
#### You will have downloaded the licensed extension to your internal repository
#### as you have disabled the licensed repository in step 5b.
#### Ensure the chocolatey.extension package (aka Chocolatey Licensed Extension)
- name: Install Chocolatey Extension
win_chocolatey:
name: chocolatey.extension
source: ChocolateyInternal
state: latest
#### The Chocolatey Licensed Extension unlocks all of the following, which also have configuration/feature items available with them. You may want to visit the feature pages to see what you might want to also enable:
#### - Package Builder - https://docs.chocolatey.org/en-us/features/paid/package-builder
#### - Package Internalizer - https://docs.chocolatey.org/en-us/features/paid/package-internalizer
#### - Package Synchronization (3 components) - https://docs.chocolatey.org/en-us/features/paid/package-synchronization
#### - Package Reducer - https://docs.chocolatey.org/en-us/features/paid/package-reducer
#### - Package Audit - https://docs.chocolatey.org/en-us/features/paid/package-audit
#### - Package Throttle - https://docs.chocolatey.org/en-us/features/paid/package-throttle
#### - CDN Cache Access - https://docs.chocolatey.org/en-us/features/paid/private-cdn
#### - Branding - https://docs.chocolatey.org/en-us/features/paid/branding
#### - Self-Service Anywhere (more components will need to be installed and additional configuration will need to be set) - https://docs.chocolatey.org/en-us/features/paid/self-service-anywhere
#### - Chocolatey Central Management (more components will need to be installed and additional configuration will need to be set) - https://docs.chocolatey.org/en-us/features/paid/chocolatey-central-management
#### - Other - https://docs.chocolatey.org/en-us/features/paid/
### d. Ensure Self-Service Anywhere ###
#### If you have desktop clients where users are not administrators, you may
#### to take advantage of deploying and configuring Self-Service anywhere
- name: Hide not-elevated warnings
win_chocolatey_feature:
name: showNonElevatedWarnings
state: disabled
- name: Use background mode for self-service
win_chocolatey_feature:
name: useBackgroundService
state: enabled
- name: Use background service for non-admins
win_chocolatey_feature:
name: useBackgroundServiceWithNonAdministratorsOnly
state: enabled
- name: Allow background uninstallation for user installs
win_chocolatey_feature:
name: allowBackgroundServiceUninstallsFromUserInstallsOnly
state: enabled
- name: Set allowed background service commands
win_chocolatey_config:
name: backgroundServiceAllowedCommands
state: present
value: install,upgrade,uninstall
### e. Ensure Chocolatey Central Management ###
#### If you want to manage and report on endpoints, you can set up and configure
### Central Management. There are multiple portions to manage, so you'll see
### a section on agents here along with notes on how to configure the server
### side components.
- name: Install Chocolatey Agent
when: chocolatey_central_management_url is defined
win_chocolatey:
name: chocolatey-agent
source: ChocolateyInternal
state: latest
- name: Set the Central Management Service URL
when: chocolatey_central_management_url is defined
win_chocolatey_config:
name: CentralManagementServiceUrl
state: present
value: {{ chocolatey_central_management_url }}
- name: Set the Central Management Client Salt
when: chocolatey_central_management_client_salt is defined
win_chocolatey_config:
name: centralManagementClientCommunicationSaltAdditivePassword
state: present
value: {{ chocolatey_central_management_client_salt }}
- name: Set the Central Management Service Salt
when: chocolatey_central_management_service_salt is defined
win_chocolatey_config:
name: centralManagementServiceCommunicationSaltAdditivePassword
state: present
value: {{ chocolatey_central_management_service_salt }}
- name: Use Central Management
when: chocolatey_central_management_url is defined
win_chocolatey_feature:
name: useChocolateyCentralManagement
state: enabled
- name: Use Central Management Deployments
when: chocolatey_central_management_url is defined
win_chocolatey_feature:
name: useChocolateyCentralManagementDeployments
state: enabled
See docs at https://docs.chef.io/resource_chocolatey_package.html.
If Applicable - Chocolatey Configuration/Installation
## 1. REQUIREMENTS ##
### Here are the requirements necessary to ensure this is successful.
### a. Internal/Private Cloud Repository Set Up ###
#### You'll need an internal/private cloud repository you can use. These are
#### generally really quick to set up and there are quite a few options.
#### Chocolatey Software recommends Nexus, Artifactory Pro, or ProGet as they
#### are repository servers and will give you the ability to manage multiple
#### repositories and types from one server installation.
### b. Download Chocolatey Package and Put on Internal Repository ###
#### You need to have downloaded the Chocolatey package as well.
#### Please see https://chocolatey.org/install#organization
### c. Other Requirements ###
#### The Chocolatey resources are available with any recent version of Chef.
#### We utilise the Chocolatey recipe to install the Chocolatey binaries.
include_recipe "chocolatey"
## 2. TOP LEVEL VARIABLES ##
### a. Your internal repository url (the main one). ###
#### Should be similar to what you see when you browse
#### to https://community.chocolatey.org/api/v2/
NugetRepositoryUrl = "INTERNAL REPO URL"
### b. Internal Repository Credential ###
#### If required, add the repository access credential here
# NugetRepositoryUsername = "username"
# NugetRepositoryPassword = "password"
### c. Chocolatey nupkg download url ###
#### This url should result in an immediate download when you navigate to it in
#### a web browser
ChocolateyNupkgUrl = "INTERNAL REPO URL/package/chocolatey.1.1.0.nupkg",
### d. Chocolatey Central Management (CCM) ###
#### If using CCM to manage Chocolatey, add the following:
#### i. Endpoint URL for CCM
# ChocolateyCentralManagementUrl = "https://chocolatey-central-management:24020/ChocolateyManagementService"
#### ii. If using a Client Salt, add it here
# ChocolateyCentralManagementClientSalt = "clientsalt"
#### iii. If using a Service Salt, add it here
# ChocolateyCentralManagementServiceSalt = "servicesalt"
## 3. ENSURE CHOCOLATEY IS INSTALLED ##
### Ensure Chocolatey is installed from your internal repository
node['chocolatey']['install vars'] = {
'chocolateyDownloadUrl' => "#{ChocolateyNupkgUrl}",
}
## 4. CONFIGURE CHOCOLATEY BASELINE ##
### a. FIPS Feature ###
#### If you need FIPS compliance - make this the first thing you configure
#### before you do any additional configuration or package installations
# chocolatey_feature 'useFipsCompliantChecksums' do
# action :enable
# end
### b. Apply Recommended Configuration ###
#### Move cache location so Chocolatey is very deterministic about
#### cleaning up temporary data and the location is secured to admins
chocolatey_config 'cacheLocation' do
value 'C:\ProgramData\chocolatey\cache'
end
#### Increase timeout to at least 4 hours
chocolatey_config 'commandExecutionTimeoutSeconds' do
value '14400'
end
#### Turn off download progress when running choco through integrations
chocolatey_feature 'showDownloadProgress' do
action :disable
end
### c. Sources ###
#### Remove the default community package repository source
chocolatey_source 'chocolatey' do
action :remove
end
#### Add internal default sources
#### You could have multiple sources here, so we will provide an example
#### of one using the remote repo variable here
#### NOTE: This EXAMPLE may require changes
chocolatey_source 'ChocolateyInternal' do
source "#{NugetRepositoryUrl}"
priority 1
action :add
end
execute 'ChocolateyInternal' do
command "choco source add --name ChocolateyInternal -s #{NugetRepositoryUrl} -u=#{NugetRepositoryUsername} -p=#{NugetRepositoryPassword} --priority=1"
only_if { NugetRepositoryUsername != nil || NugetRepositoryPassword != nil }
end
### b. Keep Chocolatey Up To Date ###
#### Keep chocolatey up to date based on your internal source
#### You control the upgrades based on when you push an updated version
#### to your internal repository.
#### Note the source here is to the OData feed, similar to what you see
#### when you browse to https://community.chocolatey.org/api/v2/
chocolatey_package 'chocolatey' do
action :upgrade
source "#{NugetRepositoryUrl}"
end
## 5. ENSURE CHOCOLATEY FOR BUSINESS ##
### If you don't have Chocolatey for Business (C4B), you'll want to remove from here down.
### a. Ensure The License File Is Installed ###
#### Create a license package using script from https://docs.chocolatey.org/en-us/how-tos/setup-offline-installation#exercise-4-create-a-package-for-the-license
chocolatey_package 'chocolatey-license' do
action :install
source "#{NugetRepositoryUrl}"
end
### b. Disable The Licensed Source ###
#### The licensed source cannot be removed, so it must be disabled.
#### This must occur after the license has been set by the license package.
chocolatey_source 'chocolatey.licensed' do
action :disable
end
### c. Ensure Chocolatey Licensed Extension ###
#### You will have downloaded the licensed extension to your internal repository
#### as you have disabled the licensed repository in step 5b.
#### Ensure the chocolatey.extension package (aka Chocolatey Licensed Extension)
chocolatey_package 'chocolatey.extention' do
action install
source "#{NugetRepositoryUrl}"
end
#### The Chocolatey Licensed Extension unlocks all of the following, which also have configuration/feature items available with them. You may want to visit the feature pages to see what you might want to also enable:
#### - Package Builder - https://docs.chocolatey.org/en-us/features/paid/package-builder
#### - Package Internalizer - https://docs.chocolatey.org/en-us/features/paid/package-internalizer
#### - Package Synchronization (3 components) - https://docs.chocolatey.org/en-us/features/paid/package-synchronization
#### - Package Reducer - https://docs.chocolatey.org/en-us/features/paid/package-reducer
#### - Package Audit - https://docs.chocolatey.org/en-us/features/paid/package-audit
#### - Package Throttle - https://docs.chocolatey.org/en-us/features/paid/package-throttle
#### - CDN Cache Access - https://docs.chocolatey.org/en-us/features/paid/private-cdn
#### - Branding - https://docs.chocolatey.org/en-us/features/paid/branding
#### - Self-Service Anywhere (more components will need to be installed and additional configuration will need to be set) - https://docs.chocolatey.org/en-us/features/paid/self-service-anywhere
#### - Chocolatey Central Management (more components will need to be installed and additional configuration will need to be set) - https://docs.chocolatey.org/en-us/features/paid/chocolatey-central-management
#### - Other - https://docs.chocolatey.org/en-us/features/paid/
### d. Ensure Self-Service Anywhere ###
#### If you have desktop clients where users are not administrators, you may
#### to take advantage of deploying and configuring Self-Service anywhere
chocolatey_feature 'showNonElevatedWarnings' do
action :disable
end
chocolatey_feature 'useBackgroundService' do
action :enable
end
chocolatey_feature 'useBackgroundServiceWithNonAdministratorsOnly' do
action :enable
end
chocolatey_feature 'allowBackgroundServiceUninstallsFromUserInstallsOnly' do
action :enable
end
chocolatey_config 'backgroundServiceAllowedCommands' do
value 'install,upgrade,uninstall'
end
### e. Ensure Chocolatey Central Management ###
#### If you want to manage and report on endpoints, you can set up and configure
### Central Management. There are multiple portions to manage, so you'll see
### a section on agents here along with notes on how to configure the server
### side components.
chocolatey_package 'chocolatey-agent' do
action install
source "#{NugetRepositoryUrl}"
# user "#{NugetRepositoryUsername}"
# password "#{NugetRepositoryPassword}"
only_if { ChocolateyCentralManagementUrl != nil }
end
chocolatey_config 'CentralManagementServiceUrl' do
value "#{ChocolateyCentralManagementUrl}"
only_if { ChocolateyCentralManagementUrl != nil }
end
chocolatey_config 'centralManagementClientCommunicationSaltAdditivePassword' do
value "#{ChocolateyCentralManagementClientSalt}"
only_if { ChocolateyCentralManagementClientSalt != nil }
end
chocolatey_config 'centralManagementServiceCommunicationSaltAdditivePassword' do
value "#{ChocolateyCentralManagementServiceSalt}"
only_if { ChocolateyCentralManagementServiceSalt != nil }
end
chocolatey_feature 'useChocolateyCentralManagement' do
action :enable
only_if { ChocolateyCentralManagementUrl != nil }
end
chocolatey_feature 'useChocolateyCentralManagementDeployments' do
action :enable
only_if { ChocolateyCentralManagementUrl != nil }
end
Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.
If Applicable - Chocolatey Configuration/Installation
#requires -Modules cChoco
## 1. REQUIREMENTS ##
### Here are the requirements necessary to ensure this is successful.
### a. Internal/Private Cloud Repository Set Up ###
#### You'll need an internal/private cloud repository you can use. These are
#### generally really quick to set up and there are quite a few options.
#### Chocolatey Software recommends Nexus, Artifactory Pro, or ProGet as they
#### are repository servers and will give you the ability to manage multiple
#### repositories and types from one server installation.
### b. Download Chocolatey Package and Put on Internal Repository ###
#### You need to have downloaded the Chocolatey package as well.
#### Please see https://chocolatey.org/install#organization
### c. Other Requirements ###
#### i. Requires chocolatey\cChoco DSC module to be installed on the machine compiling the DSC manifest
#### NOTE: This will need to be installed before running the DSC portion of this script
if (-not (Get-Module cChoco -ListAvailable)) {
$null = Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
if (($PSGallery = Get-PSRepository -Name PSGallery).InstallationPolicy -ne "Trusted") {
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
}
Install-Module -Name cChoco
if ($PSGallery.InstallationPolicy -ne "Trusted") {
Set-PSRepository -Name PSGallery -InstallationPolicy $PSGallery.InstallationPolicy
}
}
#### ii. Requires a hosted copy of the install.ps1 script
##### This should be available to download without authentication.
##### The original script can be found here: https://community.chocolatey.org/install.ps1
Configuration ChocolateyConfig {
## 2. TOP LEVEL VARIABLES ##
param(
### a. Your internal repository url (the main one). ###
#### Should be similar to what you see when you browse
#### to https://community.chocolatey.org/api/v2/
$NugetRepositoryUrl = "INTERNAL REPO URL",
### b. Chocolatey nupkg download url ###
#### This url should result in an immediate download when you navigate to it in
#### a web browser
$ChocolateyNupkgUrl = "INTERNAL REPO URL/package/chocolatey.1.1.0.nupkg",
### c. Internal Repository Credential ###
#### If required, add the repository access credential here
# $NugetRepositoryCredential = [PSCredential]::new(
# "username",
# ("password" | ConvertTo-SecureString -AsPlainText -Force)
# ),
### d. Install.ps1 URL
#### The path to the hosted install script:
$ChocolateyInstallPs1Url = "https://community.chocolatey.org/install.ps1"
### e. Chocolatey Central Management (CCM) ###
#### If using CCM to manage Chocolatey, add the following:
#### i. Endpoint URL for CCM
# $ChocolateyCentralManagementUrl = "https://chocolatey-central-management:24020/ChocolateyManagementService",
#### ii. If using a Client Salt, add it here
# $ChocolateyCentralManagementClientSalt = "clientsalt",
#### iii. If using a Service Salt, add it here
# $ChocolateyCentralManagementServiceSalt = "servicesalt"
)
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName cChoco
Node 'localhost' {
## 3. ENSURE CHOCOLATEY IS INSTALLED ##
### Ensure Chocolatey is installed from your internal repository
Environment chocoDownloadUrl {
Name = "chocolateyDownloadUrl"
Value = $ChocolateyNupkgUrl
}
cChocoInstaller installChocolatey {
DependsOn = "[Environment]chocoDownloadUrl"
InstallDir = Join-Path $env:ProgramData "chocolatey"
ChocoInstallScriptUrl = $ChocolateyInstallPs1Url
}
## 4. CONFIGURE CHOCOLATEY BASELINE ##
### a. FIPS Feature ###
#### If you need FIPS compliance - make this the first thing you configure
#### before you do any additional configuration or package installations
# cChocoFeature featureFipsCompliance {
# FeatureName = "useFipsCompliantChecksums"
# }
### b. Apply Recommended Configuration ###
#### Move cache location so Chocolatey is very deterministic about
#### cleaning up temporary data and the location is secured to admins
cChocoConfig cacheLocation {
DependsOn = "[cChocoInstaller]installChocolatey"
ConfigName = "cacheLocation"
Value = "C:\ProgramData\chocolatey\cache"
}
#### Increase timeout to at least 4 hours
cChocoConfig commandExecutionTimeoutSeconds {
DependsOn = "[cChocoInstaller]installChocolatey"
ConfigName = "commandExecutionTimeoutSeconds"
Value = 14400
}
#### Turn off download progress when running choco through integrations
cChocoFeature showDownloadProgress {
DependsOn = "[cChocoInstaller]installChocolatey"
FeatureName = "showDownloadProgress"
Ensure = "Absent"
}
### c. Sources ###
#### Remove the default community package repository source
cChocoSource removeCommunityRepository {
DependsOn = "[cChocoInstaller]installChocolatey"
Name = "chocolatey"
Ensure = "Absent"
}
#### Add internal default sources
#### You could have multiple sources here, so we will provide an example
#### of one using the remote repo variable here.
#### NOTE: This EXAMPLE may require changes
cChocoSource addInternalSource {
DependsOn = "[cChocoInstaller]installChocolatey"
Name = "ChocolateyInternal"
Source = $NugetRepositoryUrl
Credentials = $NugetRepositoryCredential
Priority = 1
}
### b. Keep Chocolatey Up To Date ###
#### Keep chocolatey up to date based on your internal source
#### You control the upgrades based on when you push an updated version
#### to your internal repository.
#### Note the source here is to the OData feed, similar to what you see
#### when you browse to https://community.chocolatey.org/api/v2/
cChocoPackageInstaller updateChocolatey {
DependsOn = "[cChocoSource]addInternalSource", "[cChocoSource]removeCommunityRepository"
Name = "chocolatey"
AutoUpgrade = $true
}
## 5. ENSURE CHOCOLATEY FOR BUSINESS ##
### If you don't have Chocolatey for Business (C4B), you'll want to remove from here down.
### a. Ensure The License File Is Installed ###
#### Create a license package using script from https://docs.chocolatey.org/en-us/how-tos/setup-offline-installation#exercise-4-create-a-package-for-the-license
cChocoPackageInstaller chocolateyLicense {
DependsOn = "[cChocoPackageInstaller]updateChocolatey"
Name = "chocolatey-license"
}
### b. Disable The Licensed Source ###
#### The licensed source cannot be removed, so it must be disabled.
#### This must occur after the license has been set by the license package.
Script disableLicensedSource {
DependsOn = "[cChocoPackageInstaller]chocolateyLicense"
GetScript = {
$Source = choco source list --limitoutput | `
ConvertFrom-Csv -Delimiter '|' -Header Name, Source, Disabled | `
Where-Object Name -eq "chocolatey.licensed"
return @{
Result = if ($Source) {
[bool]::Parse($Source.Disabled)
} else {
Write-Warning "Source 'chocolatey.licensed' was not present."
$true # Source does not need disabling
}
}
}
SetScript = {
$null = choco source disable --name "chocolatey.licensed"
}
TestScript = {
$State = [ScriptBlock]::Create($GetScript).Invoke()
return $State.Result
}
}
### c. Ensure Chocolatey Licensed Extension ###
#### You will have downloaded the licensed extension to your internal repository
#### as you have disabled the licensed repository in step 5b.
#### Ensure the chocolatey.extension package (aka Chocolatey Licensed Extension)
cChocoPackageInstaller chocolateyLicensedExtension {
DependsOn = "[Script]disableLicensedSource"
Name = "chocolatey.extension"
}
#### The Chocolatey Licensed Extension unlocks all of the following, which also have configuration/feature items available with them. You may want to visit the feature pages to see what you might want to also enable:
#### - Package Builder - https://docs.chocolatey.org/en-us/features/paid/package-builder
#### - Package Internalizer - https://docs.chocolatey.org/en-us/features/paid/package-internalizer
#### - Package Synchronization (3 components) - https://docs.chocolatey.org/en-us/features/paid/package-synchronization
#### - Package Reducer - https://docs.chocolatey.org/en-us/features/paid/package-reducer
#### - Package Audit - https://docs.chocolatey.org/en-us/features/paid/package-audit
#### - Package Throttle - https://docs.chocolatey.org/en-us/features/paid/package-throttle
#### - CDN Cache Access - https://docs.chocolatey.org/en-us/features/paid/private-cdn
#### - Branding - https://docs.chocolatey.org/en-us/features/paid/branding
#### - Self-Service Anywhere (more components will need to be installed and additional configuration will need to be set) - https://docs.chocolatey.org/en-us/features/paid/self-service-anywhere
#### - Chocolatey Central Management (more components will need to be installed and additional configuration will need to be set) - https://docs.chocolatey.org/en-us/features/paid/chocolatey-central-management
#### - Other - https://docs.chocolatey.org/en-us/features/paid/
### d. Ensure Self-Service Anywhere ###
#### If you have desktop clients where users are not administrators, you may
#### to take advantage of deploying and configuring Self-Service anywhere
cChocoFeature hideElevatedWarnings {
DependsOn = "[cChocoPackageInstaller]chocolateyLicensedExtension"
FeatureName = "showNonElevatedWarnings"
Ensure = "Absent"
}
cChocoFeature useBackgroundService {
DependsOn = "[cChocoPackageInstaller]chocolateyLicensedExtension"
FeatureName = "useBackgroundService"
Ensure = "Present"
}
cChocoFeature useBackgroundServiceWithNonAdmins {
DependsOn = "[cChocoPackageInstaller]chocolateyLicensedExtension"
FeatureName = "useBackgroundServiceWithNonAdministratorsOnly"
Ensure = "Present"
}
cChocoFeature useBackgroundServiceUninstallsForUserInstalls {
DependsOn = "[cChocoPackageInstaller]chocolateyLicensedExtension"
FeatureName = "allowBackgroundServiceUninstallsFromUserInstallsOnly"
Ensure = "Present"
}
cChocoConfig allowedBackgroundServiceCommands {
DependsOn = "[cChocoFeature]useBackgroundService"
ConfigName = "backgroundServiceAllowedCommands"
Value = "install,upgrade,uninstall"
}
### e. Ensure Chocolatey Central Management ###
#### If you want to manage and report on endpoints, you can set up and configure
### Central Management. There are multiple portions to manage, so you'll see
### a section on agents here along with notes on how to configure the server
### side components.
if ($ChocolateyCentralManagementUrl) {
cChocoPackageInstaller chocolateyAgent {
DependsOn = "[cChocoPackageInstaller]chocolateyLicensedExtension"
Name = "chocolatey-agent"
}
cChocoConfig centralManagementServiceUrl {
DependsOn = "[cChocoPackageInstaller]chocolateyAgent"
ConfigName = "CentralManagementServiceUrl"
Value = $ChocolateyCentralManagementUrl
}
if ($ChocolateyCentralManagementClientSalt) {
cChocoConfig centralManagementClientSalt {
DependsOn = "[cChocoPackageInstaller]chocolateyAgent"
ConfigName = "centralManagementClientCommunicationSaltAdditivePassword"
Value = $ChocolateyCentralManagementClientSalt
}
}
if ($ChocolateyCentralManagementServiceSalt) {
cChocoConfig centralManagementServiceSalt {
DependsOn = "[cChocoPackageInstaller]chocolateyAgent"
ConfigName = "centralManagementServiceCommunicationSaltAdditivePassword"
Value = $ChocolateyCentralManagementServiceSalt
}
}
cChocoFeature useCentralManagement {
DependsOn = "[cChocoPackageInstaller]chocolateyAgent"
FeatureName = "useChocolateyCentralManagement"
Ensure = "Present"
}
cChocoFeature useCentralManagementDeployments {
DependsOn = "[cChocoPackageInstaller]chocolateyAgent"
FeatureName = "useChocolateyCentralManagementDeployments"
Ensure = "Present"
}
}
}
}
# If working this into an existing configuration with a good method for
$ConfigData = @{
AllNodes = @(
@{
NodeName = "localhost"
PSDscAllowPlainTextPassword = $true
}
)
}
try {
Push-Location $env:Temp
$Config = ChocolateyConfig -ConfigurationData $ConfigData
Start-DscConfiguration -Path $Config.PSParentPath -Wait -Verbose -Force
} finally {
Pop-Location
}
Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.
If Applicable - Chocolatey Configuration/Installation
## 1. REQUIREMENTS ##
### Here are the requirements necessary to ensure this is successful.
### a. Internal/Private Cloud Repository Set Up ###
#### You'll need an internal/private cloud repository you can use. These are
#### generally really quick to set up and there are quite a few options.
#### Chocolatey Software recommends Nexus, Artifactory Pro, or ProGet as they
#### are repository servers and will give you the ability to manage multiple
#### repositories and types from one server installation.
### b. Download Chocolatey Package and Put on Internal Repository ###
#### You need to have downloaded the Chocolatey package as well.
#### Please see https://chocolatey.org/install#organization
### c. Other Requirements ###
#### i. Requires puppetlabs/chocolatey module
#### See https://forge.puppet.com/puppetlabs/chocolatey
## 2. TOP LEVEL VARIABLES ##
### a. Your internal repository url (the main one). ###
#### Should be similar to what you see when you browse
#### to https://community.chocolatey.org/api/v2/
$_repository_url = 'INTERNAL REPO URL'
### b. Chocolatey nupkg download url ###
#### This url should result in an immediate download when you navigate to it in
#### a web browser
$_choco_download_url = 'INTERNAL REPO URL/package/chocolatey.1.1.0.nupkg'
### c. Chocolatey Central Management (CCM) ###
#### If using CCM to manage Chocolatey, add the following:
#### i. Endpoint URL for CCM
# $_chocolatey_central_management_url = 'https://chocolatey-central-management:24020/ChocolateyManagementService'
#### ii. If using a Client Salt, add it here
# $_chocolatey_central_management_client_salt = "clientsalt"
#### iii. If using a Service Salt, add it here
# $_chocolatey_central_management_service_salt = 'servicesalt'
## 3. ENSURE CHOCOLATEY IS INSTALLED ##
### Ensure Chocolatey is installed from your internal repository
### Note: `chocolatey_download_url is completely different than normal
### source locations. This is directly to the bare download url for the
### chocolatey.nupkg, similar to what you see when you browse to
### https://community.chocolatey.org/api/v2/package/chocolatey
class {'chocolatey':
chocolatey_download_url => $_choco_download_url,
use_7zip => false,
}
## 4. CONFIGURE CHOCOLATEY BASELINE ##
### a. FIPS Feature ###
#### If you need FIPS compliance - make this the first thing you configure
#### before you do any additional configuration or package installations
#chocolateyfeature {'useFipsCompliantChecksums':
# ensure => enabled,
#}
### b. Apply Recommended Configuration ###
#### Move cache location so Chocolatey is very deterministic about
#### cleaning up temporary data and the location is secured to admins
chocolateyconfig {'cacheLocation':
value => 'C:\ProgramData\chocolatey\cache',
}
#### Increase timeout to at least 4 hours
chocolateyconfig {'commandExecutionTimeoutSeconds':
value => '14400',
}
#### Turn off download progress when running choco through integrations
chocolateyfeature {'showDownloadProgress':
ensure => disabled,
}
### c. Sources ###
#### Remove the default community package repository source
chocolateysource {'chocolatey':
ensure => absent,
location => 'https://community.chocolatey.org/api/v2/',
}
#### Add internal default sources
#### You could have multiple sources here, so we will provide an example
#### of one using the remote repo variable here
#### NOTE: This EXAMPLE requires changes
chocolateysource {'internal_chocolatey':
ensure => present,
location => $_repository_url,
priority => 1,
username => 'optional',
password => 'optional,not ensured',
bypass_proxy => true,
admin_only => false,
allow_self_service => false,
}
### b. Keep Chocolatey Up To Date ###
#### Keep chocolatey up to date based on your internal source
#### You control the upgrades based on when you push an updated version
#### to your internal repository.
#### Note the source here is to the OData feed, similar to what you see
#### when you browse to https://community.chocolatey.org/api/v2/
package {'chocolatey':
ensure => latest,
provider => chocolatey,
source => $_repository_url,
}
## 5. ENSURE CHOCOLATEY FOR BUSINESS ##
### If you don't have Chocolatey for Business (C4B), you'll want to remove from here down.
### a. Ensure The License File Is Installed ###
#### Create a license package using script from https://docs.chocolatey.org/en-us/guides/organizations/organizational-deployment-guide#exercise-4-create-a-package-for-the-license
# TODO: Add resource for installing/ensuring the chocolatey-license package
package {'chocolatey-license':
ensure => latest,
provider => chocolatey,
source => $_repository_url,
}
### b. Disable The Licensed Source ###
#### The licensed source cannot be removed, so it must be disabled.
#### This must occur after the license has been set by the license package.
## Disabled sources still need all other attributes until
## https://tickets.puppetlabs.com/browse/MODULES-4449 is resolved.
## Password is necessary with user, but not ensurable, so it should not
## matter what it is set to here. If you ever do get into trouble here,
## the password is your license GUID.
chocolateysource {'chocolatey.licensed':
ensure => disabled,
priority => '10',
user => 'customer',
password => '1234',
require => Package['chocolatey-license'],
}
### c. Ensure Chocolatey Licensed Extension ###
#### You will have downloaded the licensed extension to your internal repository
#### as you have disabled the licensed repository in step 5b.
#### Ensure the chocolatey.extension package (aka Chocolatey Licensed Extension)
package {'chocolatey.extension':
ensure => latest,
provider => chocolatey,
source => $_repository_url,
require => Package['chocolatey-license'],
}
#### The Chocolatey Licensed Extension unlocks all of the following, which also have configuration/feature items available with them. You may want to visit the feature pages to see what you might want to also enable:
#### - Package Builder - https://docs.chocolatey.org/en-us/features/paid/package-builder
#### - Package Internalizer - https://docs.chocolatey.org/en-us/features/paid/package-internalizer
#### - Package Synchronization (3 components) - https://docs.chocolatey.org/en-us/features/paid/package-synchronization
#### - Package Reducer - https://docs.chocolatey.org/en-us/features/paid/package-reducer
#### - Package Audit - https://docs.chocolatey.org/en-us/features/paid/package-audit
#### - Package Throttle - https://docs.chocolatey.org/en-us/features/paid/package-throttle
#### - CDN Cache Access - https://docs.chocolatey.org/en-us/features/paid/private-cdn
#### - Branding - https://docs.chocolatey.org/en-us/features/paid/branding
#### - Self-Service Anywhere (more components will need to be installed and additional configuration will need to be set) - https://docs.chocolatey.org/en-us/features/paid/self-service-anywhere
#### - Chocolatey Central Management (more components will need to be installed and additional configuration will need to be set) - https://docs.chocolatey.org/en-us/features/paid/chocolatey-central-management
#### - Other - https://docs.chocolatey.org/en-us/features/paid/
### d. Ensure Self-Service Anywhere ###
#### If you have desktop clients where users are not administrators, you may
#### to take advantage of deploying and configuring Self-Service anywhere
chocolateyfeature {'showNonElevatedWarnings':
ensure => disabled,
}
chocolateyfeature {'useBackgroundService':
ensure => enabled,
}
chocolateyfeature {'useBackgroundServiceWithNonAdministratorsOnly':
ensure => enabled,
}
chocolateyfeature {'allowBackgroundServiceUninstallsFromUserInstallsOnly':
ensure => enabled,
}
chocolateyconfig {'backgroundServiceAllowedCommands':
value => 'install,upgrade,uninstall',
}
### e. Ensure Chocolatey Central Management ###
#### If you want to manage and report on endpoints, you can set up and configure
### Central Management. There are multiple portions to manage, so you'll see
### a section on agents here along with notes on how to configure the server
### side components.
if $_chocolatey_central_management_url {
package {'chocolatey-agent':
ensure => latest,
provider => chocolatey,
source => $_repository_url,
require => Package['chocolatey-license'],
}
chocolateyconfig {'CentralManagementServiceUrl':
value => $_chocolatey_central_management_url,
}
if $_chocolatey_central_management_client_salt {
chocolateyconfig {'centralManagementClientCommunicationSaltAdditivePassword':
value => $_chocolatey_central_management_client_salt,
}
}
if $_chocolatey_central_management_service_salt {
chocolateyconfig {'centralManagementClientCommunicationSaltAdditivePassword':
value => $_chocolatey_central_management_client_salt,
}
}
chocolateyfeature {'useChocolateyCentralManagement':
ensure => enabled,
require => Package['chocolatey-agent'],
}
chocolateyfeature {'useChocolateyCentralManagementDeployments':
ensure => enabled,
require => Package['chocolatey-agent'],
}
}
Need Help? View our docs or file an issue.
There is already a version of this package in your Script Builder
Current Version | New Version |
---|---|
- Passing
- Failing
- Pending
- Unknown / Exempted

Downloads:
24,239
Downloads of v 1.17.0:
707
Last Update:
02 Sep 2020
Package Maintainer(s):
Software Author(s):
- Qt Project
Tags:
qbs qt build
Qbs
This is not the latest version of Qbs available.
- 1
- 2
- 3
1.17.0 | Updated: 02 Sep 2020
Downloads:
24,239
Downloads of v 1.17.0:
707
Software Author(s):
- Qt Project
Edit Package
To edit the metadata for a package, please upload an updated version of the package.
Chocolatey's Community Package Repository currently does not allow updating package metadata on the website. This helps ensure that the package itself (and the source used to build the package) remains the one true source of package metadata.
This does require that you increment the package version.
- 1
- 2
- 3
Qbs
1.17.0
This is not the latest version of Qbs available.
- 1
- 2
- 3
All Checks are Passing
3 Passing Tests
Deployment Method: Individual Install, Upgrade, & Uninstall
To install Qbs, run the following command from the command line or from PowerShell:
To upgrade Qbs, run the following command from the command line or from PowerShell:
To uninstall Qbs, run the following command from the command line or from PowerShell:
Deployment Method:
📝 NOTE: This applies to both open source and commercial editions of Chocolatey.
1. Enter Your Internal Repository Url
(this should look similar to https://community.chocolatey.org/api/v2/)
2. Setup Your Environment
1. Ensure you are set for organizational deployment
Please see the organizational deployment guide
2. Get the package into your environment
Option 1: Cached Package (Unreliable, Requires Internet - Same As Community)-
Open Source or Commercial:
- Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to https://community.chocolatey.org/api/v2/. Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
- You can also just download the package and push it to a repository Download
-
Open Source
-
Download the package:
Download - Follow manual internalization instructions
-
-
Package Internalizer (C4B)
-
Run: (additional options)
choco download qbs --internalize --version=1.17.0 --source=https://community.chocolatey.org/api/v2/
-
For package and dependencies run:
choco push --source="'INTERNAL REPO URL'"
- Automate package internalization
-
Run: (additional options)
3. Copy Your Script
choco upgrade qbs -y --source="'INTERNAL REPO URL'" --version="'1.17.0'" [other options]
See options you can pass to upgrade.
See best practices for scripting.
Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.
If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:
choco upgrade qbs -y --source="'INTERNAL REPO URL'" --version="'1.17.0'"
$exitCode = $LASTEXITCODE
Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
Exit 0
}
Exit $exitCode
- name: Install qbs
win_chocolatey:
name: qbs
version: '1.17.0'
source: INTERNAL REPO URL
state: present
See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.
chocolatey_package 'qbs' do
action :install
source 'INTERNAL REPO URL'
version '1.17.0'
end
See docs at https://docs.chef.io/resource_chocolatey_package.html.
cChocoPackageInstaller qbs
{
Name = "qbs"
Version = "1.17.0"
Source = "INTERNAL REPO URL"
}
Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.
package { 'qbs':
ensure => '1.17.0',
provider => 'chocolatey',
source => 'INTERNAL REPO URL',
}
Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.
4. If applicable - Chocolatey configuration/installation
See infrastructure management matrix for Chocolatey configuration elements and examples.
This package was approved as a trusted package on 03 Sep 2020.
Qbs is a tool that helps simplify the build process for developing projects across multiple platforms.
$qbsVersion = '1.17.0'
$ErrorActionPreference = 'Stop'
$qbsBaseUrl = "https://download.qt.io/official_releases/qbs/$qbsVersion"
$checksumType = 'md5'
$checksums = @{}
ForEach ($line in (New-Object Net.WebClient).DownloadString("$qbsBaseUrl/${checksumType}sums.txt").Split(`
"`n", [System.StringSplitOptions]::RemoveEmptyEntries)) {
$items = $line.Split(" ", [System.StringSplitOptions]::RemoveEmptyEntries)
$checksums.Add($items[1], $items[0])
}
$qbs32 = "qbs-windows-x86-$qbsVersion.zip"
$qbs64 = "qbs-windows-x86_64-$qbsVersion.zip"
Install-ChocolateyZipPackage `
-PackageName 'qbs' `
-Url "$qbsBaseUrl/$qbs32" `
-UnzipLocation "$(Split-Path -parent $MyInvocation.MyCommand.Definition)" `
-Url64bit "$qbsBaseUrl/$qbs64" `
-Checksum $checksums[$qbs32] `
-ChecksumType $checksumType `
-Checksum64 $checksums[$qbs64] `
-ChecksumType64 $checksumType
Log in or click on link to see number of positives.
- qbs.1.17.0.nupkg (a668e1f5798e) - ## / 62
In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).
Chocolatey Pro provides runtime protection from possible malware.
Add to Builder | Version | Downloads | Last Updated | Status |
---|---|---|---|---|
Qbs 1.21.0 | 1653 | Friday, January 7, 2022 | Approved | |
Qbs 1.20.1 | 703 | Thursday, October 7, 2021 | Approved | |
Qbs 1.20.0 | 131 | Friday, September 17, 2021 | Approved | |
Qbs 1.19.2 | 659 | Monday, July 26, 2021 | Approved | |
Qbs 1.19.1 | 100 | Thursday, June 17, 2021 | Approved | |
Qbs 1.19.0 | 160 | Tuesday, May 11, 2021 | Approved | |
Qbs 1.18.2 | 74 | Tuesday, May 4, 2021 | Approved | |
Qbs 1.18.0 | 460 | Wednesday, December 23, 2020 | Approved | |
Qbs 1.17.0 | 707 | Wednesday, September 2, 2020 | Approved | |
Qbs 1.16.0 | 560 | Tuesday, May 5, 2020 | Approved | |
Qbs 1.15.0 | 487 | Wednesday, December 18, 2019 | Approved | |
Qbs 1.14.1 | 240 | Monday, November 11, 2019 | Approved | |
Qbs 1.14.0 | 208 | Friday, October 11, 2019 | Approved | |
Qbs 1.13.1 | 961 | Wednesday, May 29, 2019 | Approved | |
Qbs 1.13.0 | 176 | Thursday, May 2, 2019 | Approved | |
Qbs 1.12.1 | 886 | Friday, September 21, 2018 | Approved | |
Qbs 1.12.0 | 520 | Thursday, July 19, 2018 | Approved | |
Qbs 1.11.1 | 596 | Friday, May 4, 2018 | Approved | |
Qbs 1.11.0 | 2074 | Wednesday, March 28, 2018 | Approved | |
Qbs 1.10.1 | 1031 | Thursday, February 15, 2018 | Approved | |
Qbs 1.10.0 | 375 | Friday, December 8, 2017 | Approved | |
Qbs 1.9.1 | 1326 | Thursday, October 5, 2017 | Approved | |
Qbs 1.9.0 | 435 | Wednesday, September 6, 2017 | Approved | |
Qbs 1.8.1 | 339 | Wednesday, July 5, 2017 | Approved | |
Qbs 1.8.0 | 715 | Tuesday, May 30, 2017 | Approved | |
Qbs 1.7.2 | 3283 | Thursday, April 27, 2017 | Approved | |
Qbs 1.7.1 | 1182 | Thursday, January 26, 2017 | Approved | |
Qbs 1.7.0 | 552 | Thursday, December 15, 2016 | Approved | |
Qbs 1.6.1 | 477 | Wednesday, November 9, 2016 | Approved | |
Qbs 1.6.0 | 415 | Friday, August 26, 2016 | Approved | |
Qbs 1.5.2 | 344 | Thursday, July 7, 2016 | Approved | |
Qbs 1.5.1 | 363 | Monday, June 13, 2016 | Approved | |
Qt build suite 1.5.0 | 377 | Thursday, May 12, 2016 | Approved | |
Qt build suite 1.4.5 | 333 | Thursday, March 17, 2016 | Approved | |
Qt build suite 1.4.4 | 331 | Tuesday, December 15, 2015 | Approved | |
Qt build suite 1.4.3 | 307 | Tuesday, October 27, 2015 | Approved | |
Qt build suite 1.4.2 | 333 | Monday, August 24, 2015 | Approved | |
Qt build suite 1.4.1 | 366 | Friday, July 10, 2015 | Approved |
© 2017 The Qt Company Ltd.
qbs 1.17.0
General
- The lookup order in PathProbe changed to [environmentPaths,
searchPaths, platformEnvironmentPaths, platformSearchPaths]. - The pathPrefix and platformPaths properties have been removed from the
PathProbe item. They were deprecated since Qbs 1.13. - The protocBinary property in the protobuf module has been renamed to
compilerPath. - A new module capnp for Cap'n Proto in C++ applications has been added.
Cap'n Proto is a serialization protocol similar to protobuf. - The qbs-setup-android tool got a --system flag to install profiles
system-wide similar to qbs-setup-qt and qbs-setup-toolchains.
Language
- The product and project variables are now available on the
right-hand-side of moduleProvider expressions and the default scope is
product (QBS-1587).
C/C++ Support
- Lots of improvements have been made on toolchain support for
bare-metal devices in general. Bare-metal targets can be selected by
setting qbs.targetPlatform to 'none'. - KEIL: The ARMCLANG, C166 and C251 toolchains are now supported.
- IAR: National's CR16, Microchip's AVR32, NXP's M68K, Renesas'
M8/16C/M32C/R32C/SuperH targets and RISC-V targets are now supported. - GCC: National's CR16, NXP M68K, Renesas M32C/M32R/SuperH/V850 as well
as RISC-V and Xtensa targets are now supported. - MSVC: Module definition files can now be used to provide the linker
with information about exports and attributes (QBS-571). - MSVC: "/external:I" is now used to set system include paths (QBS-1573).
- MSVC: cpp.generateCompilerListingFiles is now supported to generate
assembler listings. - Xcode: macOS framework paths on the command line are now automatically
deduplicated (QBS-1552). - Xcode: Support for Xcode 12.0 has been added (QBS-1582).
Qt Support
- The Qt for Android modules have been cleaned up. Support for ARMv5, MIPS and
MIPS64 targets has been removed (QBS-1496). - Initial support for Qt6 has been added.
Android Support
- A packageType property has been added to the Android.sdk module which
allows to create Android App bundles (aab) instead of apk packages
only. - A aaptName property has been added to the Android.sdk module which
allows to use aapt2 (QBS-1562) since aapt has been deprecated.
Documentation
- New bare-metal examples have been added and existing examples have
been ported to more toolchains. - A new how-to about cpp.rPaths has been added (QBS-1204).
- Various minor improvements have been made.
Important Bug Fixes
- Building Qt for Android applications as static libraries has been
fixed (QBS-1545). - Trailing slashes are no longer removed from Visual Studio environment
variables (QBS-1551). - The MSVC cpp module did not use the cpp.distributionIncludePaths
property (QBS-1572). - The visual studio generator has been fixed to work with Visual Studio
16.6 (QBS-1569). - Fixed extraction of build information from CONFIG and QT_CONFIG
variables in Qt installations (QBS-1387). - The version number is no longer appended to .so files on Android
(QBS-1578). - Compiler defines are now correctly passed to moc when processing
header files (QBS-1592).
Contributors
- Alberto Mardegan
- Christian Gagneraud
- Christian Kandeler
- Christian Stenger
- Denis Shienkov
- Ivan Komissarov
- Jake Petroules
- Jochen Ulrich
- Mitch Curtis
- Oliver Wolff
- Raphaël Cotty
- Richard Weickelt
- Sergey Zhuravlev
qbs 1.16.0
General
- A new freedesktop module helps UNIX application developers to follow the
freedesktop.org guidelines. - The Android module now allows resourcesDir, sourcesDir and assetsDir to be
specified as relative paths. - A new ConanfileProbe allows better and more flexible integration of Qbs and
the Conan package manager. - A new hostArchitecture property has been added to the qbs module.
Language
- List properties in modules are now merged according to inter-module
dependencies. This is important when flags like cpp.staticLibraries are
contributed by multiple modules with dependencies between each other.
(QBS-1517). - Dependency matching of multiplexed products is now less strict and does not
require all multiplex properties to match. For instance, if product A is
multiplexed over qbs.architecture and qbs.buildVariant while product B is only
multiplexed over one of these axes, then Qbs no longer fails (QBS-1515).
C/C++ Support
- The Renesas RL78 architecture is now supported in GCC and IAR and the
toolchains are auto-detected by qbs-setup-toolchains. - The Renesas RX as well as the RH850, V850, 78K are now supported in IAR and
the toolchains are auto-detected by qbs-setup-toolchains. - The MPLAB X32 GCC-based toolchain is now auto-detected on Windows.
- Multiple occurrences of static libraries on the linker command line are now
pruned and the last instance always wins when using GCC or LLVM-based
toolchains. This avoids problems with excessively long linker command lines
(QBS-1273). - Clang-cl and MSVC toolchains use the compiler frontend instead of the linker
when linking. The old behavior can be restored by setting cpp.linkerMode to
"manual". This allows to use sanitizers with clang-cl by passing
"-fsanitise=xxx" via cpp.driverFlags (QBS-1522). - The clang-cl toolchain now uses "link.exe" as the default linker.
"lld-link.exe" can be explicitly selected by setting cpp.linkerVariant to
"lld" (QBS-1522). - The MSVC, clang-cl and MinGW toolchains are now automatically detected if the
profile does not set an explicit installation location, for instance because
no profile was given. - Installation of separate debug information can now be enabled and configured
by simply setting the installDebugInformation and debugInformationInstallDir
properties in the Application and Library convenience items. This works for
toolchains based upon GCC, MSVC or clang-cl. - Xcode version 11.4 is now supported on macOS.
Qt Support
- Qbs now supports Qt 5.14 for Android which comes as a multi-architecture
package. The qbs-setup-android tool has been updated accordingly (QBS-1497). - JSON metatype files generated by moc (Qt >= 5.15) are supported by setting
Qt.core.generateMetaTypesFile and Qt.core.metaTypesInstallDir (QBS-1531). - Pure debug builds of Qt (>= 5.14) with MinGW are now properly supported. They
don't have the 'd' suffix (QTBUG-80792). - The QML type declaration mechanism introduced in Qt 5.15 is now supported by
the Qt.qml module (QBS-1531). - Generated qmltypes files are now named according to the product's targetName
property (QTBUG-82710).
Documentation
- The how-to chapter has been extended with sections about debugging Qbs files
and about building separate debug information in C++ projects. - The item and module reference documentation has been improved for the
cpp.libraryPaths, cpp.dynamicLibraries (QBS-1516), qbs.toolchainType and
qbs.toolchain properties as well as the Export item and the Library
convenience item. - Documentation for various path probes has been added (QBS-1187).
- The README was extended and a CONTRIBUTING file has been added which provides
useful information for potential contributors. This is important for people
looking at our github mirror.
Infrastructure
- The Debian Docker image has been removed.
- We are now using ccache and clcache in our CI pipelines to shrink the build
time. - Clang-tidy is now used to identify potential problems in the code base and a
lot of action was taken upon a lot of findings. - A Docker image for testing Qbs with Android and Qt has been added.
Important Bug Fixes
- Fix nullpointer access and heap-use-after-free error (QBS-1485).
- Select the right instance when Depends.profiles is used on a dependency with
an aggregator product (QBS-1513). - Fix crash when specifying a non-existing profile in Depends.profiles
(QBS-1514). - Try harder to detect GCC toolchains in qbs-setup-toolchains (QBS-1524).
- Code signing for Core Foundation Bundles on macOS has been fixed.
- Automatic artifact scanning now prefers artifacts from product dependencies if
multiple candidates are found. This improves dependency tracking in complex
projects (QBS-1532). - The grpcIncludePath property in the probufcpp module has been fixed
(QBS-1542). - Qbs does no longer crash when accessing a property of a non-existent module in
"IDE mode".
Contributors
- Alberto Mardegan
- Björn Schäpers
- BogDan Vatra
- Christian Kandeler
- Christian Stenger
- Denis Shienkov
- Ivan Komissarov
- Jochen Ulrich
- Joerg Bornemann
- Leon Buckel
- Marius Sincovici
- Maximilian Goldstein
- Mitch Curtis
- Oliver Wolff
- Orgad Shaneh
- Raphaël Cotty
- Richard Weickelt
qbs 1.15.0
General
- Added a session command which offers a JSON-based API for interaction with
other tools via stdin/ stdout. This allows for proper Qbs support in IDEs that
do not use Qt or even C++.
Language
- Probes are now evaluated before Profile items and can be used to create
profiles on project level. - AutotestRunner got a separate job pool.
- Added a timeout property to Command, JavaScriptCommand and AutotestRunner.
This allows to identify and kill stuck commands.
C/C++ Support
- Ensure proper support of Xcode 11.
- Linker map files can be generated with all toolchains.
- Bare metal toolchains can now generate listing files.
- Improve the command line output filtering of bare metal toolchains.
- Added support for clang in mingw mode on Windows.
- Added msp430 support to GCC and IAR.
- Added STM8 support to IAR and SDCC.
- Added IDE project generators for IAR Embedded Workbench for ARM, AVR, 8051,
MSP430, and STM8 architectures. - Added IDE project generators for KEIL uVision v4 for ARM and 8051
architectures. - Added more bare metal project examples for various target platforms.
- The IAR, KEIL and SDCC toolchains are now found automatically in various.
locations by the setup-toolchains command and by probes if no installPath is
set in the profile.
Infrastructure
- Automated build and testing on Ubuntu, macOS and Windows.
- Added Ubuntu bionic Docker image which replaces Debian stretch.
- Updated Qt in the Ubuntu and Windows Docker images to 5.12.
- When building Qbs, Qt libraries can now be bundled on Linux, macOS and
Windows.
Contributors
- Alberto Mardegan <[email protected]>
- Christian Kandeler <[email protected]>
- Denis Shienkov <[email protected]>
- Ivan Komissarov <[email protected]>
- Jochen Ulrich <[email protected]>
- Joerg Bornemann <[email protected]>
- Richard Weickelt <[email protected]>
qbs 1.14.1
Important bugfixes
- Qt support: Fix static builds on Windows (QBS-1465).
- Qt support: Fix static builds with Qt >= 5.13.1.
- Darwin: Adapt to Xcode 11.
qbs 1.14.0
Language
- The
PathProbe
item was extended to support looking for multiple files and filtering candidate
files.
C/C++ Support
- Added support for Visual Studio 2019.
- Added support for clang-cl.
- Various improvements for bare-metal toolchains, including new example projects and support for
the SDCC toolchain.
Qt Support
- Added the
Qt.android_support.extraLibs
property.
Other modules
- The
pkgconfig
module now has asysroot
property. - Added gRPC support to the
protobuf.cpp
module.
Android Support
- Removed support for NDK < r19.
- Added new
Android.sdk
propertiesversionCode
andversionName
.
Infrastructure
- Added configuration files for Travis CI.
- Various fixes and improvements in the Debian Docker image; updated to to Qt 5.11.3.
Contributors
- BogDan Vatra <[email protected]>
- Christian Kandeler <[email protected]>
- Christian Stenger <[email protected]>
- Davide Pesavento <[email protected]>
- Denis Shienkov <[email protected]>
- hjk <[email protected]>
- Ivan Komissarov <[email protected]>
- Joerg Bornemann <[email protected]>
- Richard Weickelt <[email protected]>
qbs 1.13.1
Important bugfixes
- Qt support: Plugins are no longer linked into static libraries when building against
a static Qt (QBS-1441). - Qt support: Fixed excessively long linker command lines (QBS-1441).
- Qt support: Host libraries are now looked up at the right location (QBS-1445).
- Qt support: Fixed failure to find Qt modules in Qt Creator when re-parsing a project that
hasn't been built yet. - macOS: Properties in bundle.infoPlist are no longer overridden (QBS-1447).
- iOS: Fixed generation of default Info.plist (QBS-1447).
qbs 1.13.0
General
- Added a lot more documentation.
- The
--show-progress
command line option is now supported on Windows.
Language
- Introduced module providers.
- The
Depends
item now falls back topkg-config
to locate dependencies whose names do not
correspond to a qbs module. - Added the concept of job pools for limiting concurrent execution of commands by type.
- Added support for rules without output artifacts.
- Added
atEnd
function to theProcess
service. - Added
canonicalPath
function to theFileInfo
service. - Removed the need to add "import qbs" at the head of project files.
- The
Application
,DynamicLibrary
andStaticLibrary
items now have properties for more
convenient installation of target binaries.
C/C++ Support
- Added recursive dependency scanning of GNU ld linkerscripts.
- Added new
cpp
propertylinkerVariant
to force use ofgold
,bfd
orlld
.
Qt Support
- It is no longer required to call
setup-qt
before building Qt projects. - Introduced the property
Qt.core.enableBigResources
for the creation of "big" Qt resources. - Static builds now pull in the default set of plugins as specified by Qt, and the user can
specify the set of plugins by type. - Files can be explicitly tagged as mocable now.
Other modules
- Added
protobuf
support for C++ and Objective-C. - Introduced the
texttemplate
module, a facility similar to qmake'sSUBSTITUTES
feature.
Android Support
- The
AndroidApk
item was deprecated, a normalApplication
item can be used instead. - Building Qt apps is properly supported now, by making use of the
androiddeployqt
tool.
Autotest support
- Introduced the
autotest
module.
qbs 1.12.2
Important bugfixes
- The Visual Studio 2017 Build Tools are properly supported now.
- Android NDK r18 is properly supported now.
- Removed invalid assertion that prevented deriving from the Properties item.
- Fixed build error on some BSD hosts (QBS-1395).
- setup-qt fixes:
- The QtWebkit module is now properly detected (QBS-1399).
- The case of the qtmain library being called "qt5main" is properly handled now (QBS-767).
- Building against a Qt that was built with sanitizing support
works out of the box now (QBS-1387).
qbs 1.12.1
Important bugfixes
- Lifted the restriction that the -march option cannot appear in cpp.*Flags (QBS-1018).
- All required header files get installed now (QBS-1370).
- Fixed rpaths not ending up on the command line under certain circumstances (QBS-1372).
- Fixed possible crash when scanning qrc files (QBS-1375).
- Fixed spurious re-building of .pc and .qbs module files.
- Fixed possible crash on storing a build graph after re-resolving.
- Fixed possible assertion on input artifacts with alwaysUpdated == false.
qbs 1.12.0
General
- Added new module
Exporter.qbs
for creating qbs modules from products. - Added new module
Exporter.pkgconfig
for creating pkg-config metadata files. - Introduced the concept of system-level qbs settings.
- Added a Makefile generator.
- All command descriptions now contain the product name.
Language
- The
explicitlyDependsOn
property of theRule
item no longer considers
target artifacts of product dependencies. The new propertyexplicitlyDependsOnFromDependencies
can be used for that purpose. - The
excludedAuxiliaryInputs
property of theRule
item has
been renamed toexcludedInputs
. The old name is now deprecated. - Added a new property type
varList
. - Added
FileInfo.suffix
andFileInfo.completeSuffix
. - The deprecated JS extensions
XmlDomDocument
andXmlDomElement
have been removed. UseXml.DomDocument
andXml.DomDocument
instead.
C/C++ Support
- For MSVC static libraries, compiler-generated PDB files are
now tagged asdebuginfo_cl
to make them installable. - The
cxxLanguageVersion
property can now be set to different values in different modules,
and the highest value will be chosen.
Qt Support
- Amalgamation builds work properly now in the presence of "mocable" files.
- Fixed some redundancy on the linker command line.
Other modules
- Added support for
%option outfile
and%output
to thelex_yacc
module. - The
vcs
module now creates the header file even if no repository is present.
Autotest support
- Added an
auxiliaryInputs
property to theAutotestRunner
item for specifying run-time
dependencies of test executables. - The
AutotestRunner
item now has aworkingDirectory
property.
By default, the respective test executable's location is used.
Important bug fixes
- Disabled products no longer cause their exported dependencies to get pulled into
the importing product (QBS-1250).
qbs 1.11.1
Important bugfixes
- Speed up run environment setup (QTCREATORBUG-20175).
- Fix qbs command line generated by the Visual Studio project generator (QBS-1303).
- Install all required header files when building Qbs with qmake.
- Fix undefined behavior in the qbscore library where a reference to a temporary object was stored.
qbs 1.11.0
General
- Added
qbs.targetPlatform
andqbs.hostPlatform
properties which are scalar versions of
qbs.targetOS
andqbs.hostOS
.qbs.targetPlatform
is a "write-only" property that can be used
to set the OS/platform that is being targeted, whileqbs.targetOS
andqbs.hostOS
should
continue to be used to read the OS/platform that is being targeted.
qbs.targetOS
is also now read-only. - The "run" functionality as used by the command-line command of the same name now considers
an executable's library dependencies, that is, it adds the paths they are located in to the
respective environment variable (e.g. PATH on Windows).
Language
- Modules can now declare target artifacts using the new
filesAreTargets
property of the
Group
item. - The Module.setupRunEnvironment script now has a new parameter
config
. Users can set it via the
--setup-run-env-config
option of therun
command. The only value currently supported
isignore-lib-dependencies
, which turns off the abovementioned injection of library
dependencies' paths into the run environment. - Module.setupBuildEnvironment and Module.setupRunEnvironment now have access to the
product
andproject
variables. With regards to accessing module properties, these script now behave
like rules, rather than normal properties. - Added the
BinaryFile
service for reading and writing binary data files. - The
SubProject
item now has a condition property.
C/C++ Support
- Added property
cpp.rpathOrigin
which evaluates to@loader_path
on Darwin and$ORIGIN
on other Unix-like platforms. - Added the
qbs.toolchainType
property, which is a scalar version of theqbs.toolchain
property and is used to set the current toolchain. - Added
cpp.driverLinkerFlags
for flags to be passed to the compiler driver only when linking. - We now properly support
"c++17"
as a possible value ofcpp.cxxLanguageVersion
. - The auto-detection mechanism for GCC-like compilers now considers typical mingw prefixes.
Qt Support
- Added the Qt.scxml.generateStateMethods property to back the --statemethods option.
Command-line interface
- Configuration names are now passed as "config:<name>".
- Options do not have to precede property assignments anymore.
- Referencing a non-existing product in a property override now results in an error.
Documentation
- Major overhaul of the module and item reference for improved readability.
- Added a how-to on the topic of pre-compiled headers.
- Added documentation for the built-in XML support.
- Added documentation for qbs.Utilities.
- Added documentation on how to target specific platforms.
Important bug fixes
- Fixed some inconsistencies related to item ids (QBS-1016, QBS-1262).
- Fixed slow project resolving on macOS (QBS-1277).
- Fixed problems with qtquickcompiler support in Qt 5.11 (QBS-1299).
- Fixed race conditions in multi-configuration builds (QBS-1308).
Other
- The
InnoSetup
,nsis
, andwix
modules' rules now have a dependency on installable artifacts
of dependencies. - Introduced the
ico
module for creating .ico and .cur files.
qbs 1.10.1
Important bugfixes
- Fix assertion on project loading (QBS-1275).
- Fix crash when the "original" value is misused (QBS-1255).
- Fix qtquickcompiler support for qml files in subdirectories (QBS-1261).
- Fix constant rebuilding after moving an external header file (QBS-1285).
- Fix GCC support for "bare metal" systems (QBS-1263, QBS-1265).
- Fix using ids in Depends items (QBS-1264).
- Fix access to module instances in dependency parameters (QBS-1253).
- Fix race condition when creating Inno Setup, NSIS, or WiX installers.
- Fix release builds for Android with NDK r12 and above (QBS-1256).
- Fix parametrized dependencies in Export and Module items (QBS-1287).
qbs 1.10.0
General
- Added the
vcs
module to provide VCS repository information.
Git and Subversion are supported initially. - Added initial support for the Universal Windows Platform.
- Improved a lot of error messages.
Language
- Profiles can now be defined within a project using the
Profile
item. - Groups without a prefix now inherit the one of the parent group.
- Both the
Module
and theFileTagger
item now have apriority
property, allowing them to
override conflicting instances. - It is now possible to add file tags to generated artifacts by setting the new
fileTags
property
in a group that has afileTagsFilter
. - Added new open mode
TextFile.Append
. - Added the
filePath
function to theTextFile
class. Process
andTextFile
objects in rules, commands and configure scripts are now
closed automatically after script execution.
C/C++ Support
- Added the
cpufeatures
module for abstracting compiler flags related to CPU features such as SSE. - Added property
cpp.discardUnusedData
abstracting linker options that strip unneeded symbols
or sections. - Added property
cpp.variantSuffix
for making binary names unique when multiplexing products. - Added property
cpp.compilerDefinesByLanguage
providing the compiler's pre-defined macros.
Android
- The deprecated
apkbuilder
tool is no longer used.
Qt
- Added support for the Qt Quick compiler.
- Added support for
qmlcachegen
.
Command-line interface
- Removed some non-applicable options from a number of tools.
- The
run
command can now deploy and run Android apps on devices, and deploy and run iOS and
tvOS apps on the simulator. - Added new command
list-products
.
Documentation
- Added porting guide for qmake projects.
- Added in-depth descriptions of all command-line tools.
- Added "How-to" for creating modules for third-party libraries.
- Added a man page.
qbs 1.9.1
Important bugfixes
- Lower the response file threshold on Windows to fix build failures with mingw (QBS-1201).
- Fix explicitly specified build variant being ignored for Darwin targets (QBS-1202).
- Fix building for the AVR architecture (QBS-1203).
qbs 1.9.0
General
- Setting module property values from the command line can now
be done per product. - Introduced new properties
qbs.architectures
andqbs.buildVariants
to allow product multiplexing byqbs.architecture
andqbs.buildVariant
,
respectively. - When rebuilding a project, the environment, project file and property
values are taken from the existing build graph.
Language
Depends
items can now be parameterized to set special module parameters
for one particular product dependency. The new item typeParameter
is used to declare such parameters in a module. The new item type
Parameters
is used to allow products to set default values for
such parameters in theirExport
item.- The functions
loadExtension
andloadFile
have been deprecated and
will be removed in a future version. Use therequire
function instead.
Custom Rules and Commands
- Artifacts corresponding to the
explicitlyDependsOn
property
are now available under this name in rules and commands. - A rule's
auxiliaryInputs
andexplicitlyDependsOn
tags
are now also matched against rules of dependencies, if these rules are
creating target artifacts. - Rules now have a property
requiresInputs
. If it isfalse
, the rule will
be run even if no artifacts are present that match its input tags. - Added a new property
relevantEnvironmentVariables
to theCommand
class.
Use it if the command runs an external tool whose behavior can be
influenced by special environment variables.
C/C++ Support
- Added the
cpp.link
parameter to enable library dependencies to be
excluded from linking. - When pulling in static library products, the new
Depends
parameter
cpp.linkWholeArchive
can now be specified to force all the library's
objects into the target binary. - When pulling in library products, the new
Depends
parameter
cpp.symbolLinkMode
can now be specified to control how the library
is linked into the target binary on Apple platforms: specifically,
whether the library is linked as weak, lazy, reexported, and/or
upward (see theld64
man page for more information). - The property
cpp.useCxxPrecompiledHeader
, as well as the variants for the
other languages, now defaults to true. - The property
cpp.cxxLanguageVersion
now gets mapped to MSVC's/std
option,
if applicable.
Apple
- Added support for building macOS disk images.
Android
- Product multiplexing is no longer done via profiles, but via architecture,
employing the newqbs.architectures
property (see above). As a result,
thesetup-android
command now sets up only one profile, rather than
one for each architecture. - Added support for NDK Unified Headers.
Documentation
- Added a "How-to" section.
qbs 1.8.1
Important bug fixes:
* Qbs-specific build errors are now correctly linked
in Qt Creator's issues pane (QBS-1151).
* Fixed automatic base profile assignment for
MSVC Qt installations (QBS-1141)
* Various QNX fixes (QBS-1136, QBS-1137, QBS-1138, QBS-1139, QBS-1143).
Behavior changes:
* Users now get early error messages if they forget
the "modules", "products" or "projects" prefix
in command line property overrides such as
"modules.cpp.enableExceptions:false".
qbs 1.8.0
Features:
* General:
* It is no longer strictly required to provide a profile.
* Sub-second timestamp resolutions are now supported on Unix
systems.
* Added a convenient replacement for
product.moduleProperty("module", "property"), namely
product.module.property.
* The loadFile and loadExtension functions are deprecated in
favor of the new require function, which accepts arguments of either
form accepted by the deprecated functions.
* Added new tool qbs-create-project to set up a new qbs
project from an existing source tree.
* FileTagger items can now have conditions.
* Probe items can now appear directly under a Project item.
* Cpp module:
* Added support for QNX and the QCC toolchain
* Added the cpp.useRPathLink property to control whether
to use the -rpath-link linker option.
* Provided the means to easily combine source files for the C
language family in order to support "amalgamation builds".
* Introduced cpp.treatSystemHeadersAsDependencies.
* Qt modules:
* Introduced property Qt.core.combineMocOutput.
* Introduced Qt.core.enableKeywords for simple disabling of
the "signals", "slots" and "emit" symbols.
Important bug fixes:
* Improved scalability of parallel builds on Linux by starting
Process commands via a dedicated launcher process.
Behavior changes:
* The base directory for source files changed from the product
source directory to the parent directory of the file where the files are
listed.
qbs 1.7.2
Important bug fixes:
* macOS: Fixed App Extension builds on older versions of Xcode/macOS
* Windows: Fixed handling of files on network shares
* Fixed syntax error in Qt module that occurred with static Qt builds
* Several fixes for the Visual Studio generator (QBS-1077, QBS-1100)
qbs 1.7.1
Important bug fixes:
* Fixed race condition in qmake build (QBS-1091)
* Qt Creator no longer leaves empty build directories
behind after cancelled project loading (QTCREATORBUG-17543)
* Fixed an exception crossing the API boundary
qbs 1.7.0
Features:
* Added a generator for Visual Studio projects.
* The Group item is now nestable.
* Stricter type checking for properties.
* Added support for generating qrc files.
* Added full support for the QtScxml module.
* Introduced cpp.soVersion.
* Added support for building Inno Setup packages.
* Tentative support for Visual Studio 2017.
* We now assume UTF-8 encoding for project files.
* In Scanner items, input.fileName now contains
a filename rather than the full path.
* Warnings encountered during project resolving are now stored
and re-displayed when the project is loaded.
* Documentation was improved in several places, most
notably for the Rule item.
* Support for the deprecated Transformer item was removed.
Important bug fixes:
* Long paths on Windows are handled (QBS-1068).
* Cyclic module dependencies are detected (QBS-1044).
* The libqbscore soname now includes the minor version,
so that it will not stay the same across ABI changes
(QBS-1002).
qbs 1.6.1
Features:
* Added cpp.linkerWrapper property.
Important bug fixes:
* Fixed a number of bugs evaluating module properties (QBS-845, QBS-1005).
* Fixed x86_64 > x86 cross compiling (QBS-1028).
* Fixed dynamic rules with generated inputs (QBS-1029).
qbs 1.6.0
- Added lex_yacc module.
- Introduced property cpp.systemRunPaths.
- Introduced the ability to check a module's version in a Depends item.
- Introduced cpp.driverFlags, which allows specifying flags to be
passed to the compiler driver (in any mode), but never the system linker. - Introduced cpp.linkerMode property to allow selection of the
correct linker (C driver, C++ driver, or system linker) based on the
objects being linked. - Added automatic escaping of arguments passed to the
cpp.linkerFlags and cpp.platformLinkerFlags properties using the -Wl
or -Xlinker syntaxes. To revert to the old behavior,
Project.minimumQbsVersion can be set to a version lower than 1.6. - Each build configuration now requires a unique name, which
is specified on the command line in the same place that qbs.buildVariant
used to be specified. This allows building for multiple configurations
with the same variant.
This package has no dependencies.
Ground Rules:
- This discussion is only about Qbs and the Qbs package. If you have feedback for Chocolatey, please contact the Google Group.
- This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
- The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
- Tell us what you love about the package or Qbs, or tell us what needs improvement.
- Share your experiences with the package, or extra configuration or gotchas that you've found.
- If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.