Chocolatey Fest - Chocolatey's inaugural conference on Windows Automation (WinOps) is coming - Learn more!

Chocolatey Default Template

1.0.0

Package test results are passing.

This package was approved by moderator gep13 on 1/28/2016.

Chocolatey Default Template

This replaces the default Chocolatey template with the current fixes for the template.

To install Chocolatey Default Template, run the following command from the command line or from PowerShell:

C:\> choco install default.template

To upgrade Chocolatey Default Template, run the following command from the command line or from PowerShell:

C:\> choco upgrade default.template

Files

Hide
  • templates\default.nuspec.template Show
    <?xml version="1.0" encoding="utf-8"?>
    <!-- Read this before creating packages: https://github.com/chocolatey/chocolatey/wiki/CreatePackages -->
    <!-- It is especially important to read the above link to understand additional requirements when publishing packages to the community feed aka dot org (https://chocolatey.org/packages). -->
    
    <!-- Test your packages in a test environment: https://github.com/chocolatey/chocolatey-test-environment -->
    
    <!--
    This is a nuspec. It mostly adheres to https://docs.nuget.org/create/Nuspec-Reference. Chocolatey uses a special version of NuGet.Core that allows us to do more than was initially possible. As such there are certain things to be aware of:
    
    * the package xmlns schema url may cause issues with nuget.exe
    * Any of the following elements can ONLY be used by choco tools - projectSourceUrl, docsUrl, mailingListUrl, bugTrackerUrl, packageSourceUrl, provides, conflicts, replaces 
    * nuget.exe can still install packages with those elements but they are ignored. Any authoring tools or commands will error on those elements 
    -->
    
    <!-- You can embed software files directly into packages, as long as you are not bound by distribution rights. -->
    <!-- * If you are an organization making private packages, you probably have no issues here -->
    <!-- * If you are releasing to the community feed, you need to consider distribution rights. -->
    <!-- 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>
        <!-- == PACKAGE SPECIFIC SECTION == -->
        <!-- This section is about this package, although id and version have ties back to the software -->
        <!-- id is lowercase and if you want a good separator for words, use '-', not '.'. Dots are only acceptable as suffixes for certain types of packages, e.g. .install, .portable, .extension, .template -->
        <!-- If the software is cross-platform, attempt to use the same id as the debian/rpm package(s) if possible. -->
        <id>[[PackageNameLower]]</id>
        <!-- version should MATCH as closely as possible with the underlying software -->
        <!-- Is the version a prerelease of a version? https://docs.nuget.org/create/versioning#creating-prerelease-packages -->
        <!-- Note that unstable versions like 0.0.1 can be considered a released version, but it's possible that one can release a 0.0.1-beta before you release a 0.0.1 version. If the version number is final, that is considered a released version and not a prerelease. -->
        <version>[[PackageVersion]]</version>
        <!-- <packageSourceUrl>Where is this Chocolatey package located (think GitHub)? packageSourceUrl is highly recommended for the community feed</packageSourceUrl>-->
        <!-- owners is a poor name for maintainers of the package. It sticks around by this name for compatibility reasons. It basically means you. -->
        <!--<owners>[[MaintainerName]]</owners>-->
        <!-- ============================== -->
    
        <!-- == SOFTWARE SPECIFIC SECTION == -->
        <!-- This section is about the software itself -->
        <title>[[PackageName]] (Install)</title>
        <authors>__REPLACE_AUTHORS_OF_SOFTWARE_COMMA_SEPARATED__</authors>
        <!-- projectUrl is required for the community feed -->
        <projectUrl>https://_Software_Location_REMOVE_OR_FILL_OUT_</projectUrl>
        <!--<iconUrl>http://cdn.rawgit.com/[[MaintainerRepo]]/master/icons/[[PackageNameLower]].png</iconUrl>-->
        <!-- <copyright>Year Software Vendor</copyright> -->
        <!-- If there is a license Url available, it is is required for the community feed -->
        <!-- <licenseUrl>Software License Location __REMOVE_OR_FILL_OUT__</licenseUrl>
        <requireLicenseAcceptance>true</requireLicenseAcceptance>-->
        <!--<projectSourceUrl>Software Source Location - is the software FOSS somewhere? Link to it with this</projectSourceUrl>-->
        <!--<docsUrl>At what url are the software docs located?</docsUrl>-->
        <!--<mailingListUrl></mailingListUrl>-->
        <!--<bugTrackerUrl></bugTrackerUrl>-->
        <summary>__REPLACE__</summary>
        <tags>[[PackageNameLower]] admin SPACE_SEPARATED</tags>
        <description>__REPLACE__MarkDown_Okay [[AutomaticPackageNotesNuspec]]</description>
        <!-- <releaseNotes>__REPLACE_OR_REMOVE__MarkDown_Okay</releaseNotes> -->
        <!-- =============================== -->      
    
        <!-- Specifying dependencies and version ranges? https://docs.nuget.org/create/versioning#specifying-version-ranges-in-.nuspec-files -->
        <!--<dependencies>
          <dependency id="" version="__MINIMUM_VERSION__" />
          <dependency id="" version="[__EXACT_VERSION__]" />
          <dependency id="" version="[_MIN_VERSION_INCLUSIVE, MAX_VERSION_INCLUSIVE]" />
          <dependency id="" version="[_MIN_VERSION_INCLUSIVE, MAX_VERSION_EXCLUSIVE)" />
          <dependency id="" />
        </dependencies>-->
    
        <!--<provides>NOT YET IMPLEMENTED</provides>-->
        <!--<conflicts>NOT YET IMPLEMENTED</conflicts>-->
        <!--<replaces>NOT YET IMPLEMENTED</replaces>-->
      </metadata>
      <files>
        <!-- this section controls what actually gets packaged into the Chocolatey package -->
        <file src="tools\**" target="tools" />
        <!--Building from Linux? You may need this instead: <file src="tools/**" target="tools" />-->
      </files>
    </package>
    
  • templates\ReadMe.md Show
    ## Summary
    How do I create packages? See https://github.com/chocolatey/choco/wiki/CreatePackages
    
    If you are submitting packages to the community feed (https://chocolatey.org)
    always try to ensure you have read, understood and adhere to the create
    packages wiki link above.
    
    ## Automatic Packages?
    Consider making this package an automatic package, for the best 
    maintainability over time. Read up at https://github.com/chocolatey/choco/wiki/AutomaticPackages
    
    ## Shim Generation
    Any executables you include in the package or download (but don't call 
    install against using the built-in functions) will be automatically shimmed.
    
    This means those executables will automatically be included on the path.
    Shim generation runs whether the package is self-contained or uses automation 
    scripts. 
    
    By default, these are considered console applications. 
    
    If the application is a GUI, you should create an empty file next to the exe 
    named 'name.exe.gui' e.g. 'bob.exe' would need a file named 'bob.exe.gui'.
    See https://github.com/chocolatey/choco/wiki/CreatePackages#how-do-i-set-up-batch-redirects-for-applications-that-have-a-gui
    
    If you want to ignore the executable, create an empty file next to the exe 
    named 'name.exe.ignore' e.g. 'bob.exe' would need a file named 
    'bob.exe.ignore'. 
    See https://github.com/chocolatey/choco/wiki/CreatePackages#how-do-i-exclude-executables-from-getting-batch-redirects
    
    ## Self-Contained? 
    If you have a self-contained package, you can remove the automation scripts 
    entirely and just include the executables, they will automatically get shimmed, 
    which puts them on the path. Ensure you have the legal right to distribute 
    the application though. See https://github.com/chocolatey/choco/wiki/Legal. 
    
    You should read up on the Shim Generation section to familiarize yourself 
    on what to do with GUI applications and/or ignoring shims.
    
    ## Automation Scripts
    You have a powerful use of Chocolatey, as you are using PowerShell. So you
    can do just about anything you need. Choco has some very handy built-in 
    functions that you can use, these are sometimes called the helpers.
    
    ### Built-In Functions
    https://github.com/chocolatey/choco/wiki/HelpersReference
    
    A note about a couple:
    * Get-BinRoot - this is a horribly named function that doesn't do what new folks think it does. It gets you the 'tools' root, which by default is set to 'c:\tools', not the chocolateyInstall bin folder. 
    * Install-BinFile - used for non-exe files - executables are automatically shimmed...
    * Uninstall-BinFile - used for non-exe files - executables are automatically shimmed
    
    ### Getting package specific information
    Use the package parameters pattern - see https://github.com/chocolatey/choco/wiki/How-To-Parse-PackageParameters-Argument
    
    ### Need to mount an ISO?
    https://github.com/chocolatey/choco/wiki/How-To-Mount-An-Iso-In-Chocolatey-Package
    
    
    ### Environment Variables
    Chocolatey makes a number of environment variables available (You can access any of these with $env:TheVariableNameBelow):
    
     * TEMP = Overridden to the CacheLocation, but may be the same as the original TEMP folder
     * ChocolateyInstall = Top level folder where Chocolatey is installed
     * chocolateyPackageName = The name of the package, equivalent to the id in the nuspec (0.9.9+)
     * chocolateyPackageVersion = The version of the package, equivalent to the version in the nuspec (0.9.9+)
     * chocolateyPackageFolder = The top level location of the package folder
    
    #### Advanced Environment Variables
    The following are more advanced settings:
    
     * chocolateyPackageParameters = (0.9.8.22+)
     * CHOCOLATEY_VERSION = The version of Choco you normally see. Use if you are 'lighting' things up based on choco version. (0.9.9+)
        - Otherwise take a dependency on the specific version you need. 
     * chocolateyForceX86 = If available and set to 'true', then user has requested 32bit version. (0.9.9+)
        - Automatically handled in built in Choco functions. 
     * OS_PLATFORM = Like Windows, OSX, Linux. (0.9.9+)
     * OS_VERSION = The version of OS, like 6.1 something something for Windows. (0.9.9+)
     * OS_NAME = The reported name of the OS. (0.9.9+)
     * IS_PROCESSELEVATED = Is the process elevated? (0.9.9+)
     
    #### Experimental Environment Variables
    The following are experimental or use not recommended:
    
     * OS_IS64BIT = This may not return correctly - it may depend on the process the app is running under (0.9.9+)
     * CHOCOLATEY_VERSION_PRODUCT = the version of Choco that may match CHOCOLATEY_VERSION but may be different (0.9.9+)
        - it's based on git describe
     * IS_ADMIN = Is the user an administrator? But doesn't tell you if the process is elevated. (0.9.9+)
     * chocolateyInstallOverride = Not for use in package automation scripts. (0.9.9+)
     * chocolateyInstallArguments = the installer arguments meant for the native installer. You should use chocolateyPackageParameters intead. (0.9.9+)
    
    
  • templates\tools\chocolateyinstall.ps1 Show
    # IMPORTANT: Before releasing this package, copy/paste the next 2 lines into PowerShell to remove all comments from this file:
    #   $f='c:\path\to\thisFile.ps1'
    #   gc $f | ? {$_ -notmatch "^\s*#"} | % {$_ -replace '(^.*?)\s*?[^``]#.*','$1'} | Out-File $f+".~" -en utf8; mv -fo $f+".~" $f
    
    $ErrorActionPreference = 'Stop'; # stop on all errors
    
    [[AutomaticPackageNotesInstaller]]
    $packageName= '[[PackageName]]' # arbitrary name for the package, used in messages
    $toolsDir   = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
    $url        = '[[Url]]' # download url
    $url64      = '[[Url64]]' # 64bit URL here or remove - if installer is both, use $url
    #$fileLocation = Join-Path $toolsDir 'NAME_OF_EMBEDDED_INSTALLER_FILE'
    #$fileLocation = Join-Path $toolsDir 'SHARE_LOCATION_OF_INSTALLER_FILE'
    
    $packageArgs = @{
      packageName   = $packageName
      unzipLocation = $toolsDir
      fileType      = '[[InstallerType]]' #only one of these: exe, msi, msu
      url           = $url
      url64bit      = $url64
      #file         = $fileLocation
    
      #MSI
      silentArgs    = "[[SilentArgs]]" # ALLUSERS=1 DISABLEDESKTOPSHORTCUT=1 ADDDESKTOPICON=0 ADDSTARTMENU=0
      validExitCodes= @(0, 3010, 1641)
      #OTHERS
      # Uncomment matching EXE type (sorted by most to least common)
      #silentArgs   = '/S'           # NSIS
      #silentArgs   = '/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-' # Inno Setup
      #silentArgs   = '/s'           # InstallShield
      #silentArgs   = '/s /v"/qn"' # InstallShield with MSI
      #silentArgs   = '/s'           # Wise InstallMaster
      #silentArgs   = '-s'           # Squirrel
      #silentArgs   = '-q'           # Install4j
      #silentArgs   = '-s -u'        # Ghost
      # Note that some installers, in addition to the silentArgs above, may also need assistance of AHK to achieve silence.
      #silentArgs   = ''             # none; make silent with input macro script like AutoHotKey (AHK)
                                     #       https://chocolatey.org/packages/autohotkey.portable
      #validExitCodes= @(0) #please insert other valid exit codes here
    
      # optional, highly recommended
      softwareName  = '[[PackageName]]*' #part or all of the Display Name as you see it in Programs and Features. It should be enough to be unique
      checksum      = '[[Checksum]]'
      checksumType  = '[[ChecksumType]]' #default is md5, can also be sha1
      checksum64    = '[[Checksum64]]'
      checksumType64= '[[ChecksumType64]]' #default is checksumType
    }
    
    Install-ChocolateyPackage @packageArgs
    #Install-ChocolateyZipPackage @packageArgs
    # if you are making your own internal packages (organizations), you can embed the installer or 
    # put on internal file share and use the following instead (you'll need to add $file to the above)
    #Install-ChocolateyInstallPackage @packageArgs 
    
    ## Main helper functions - these have error handling tucked into them already
    ## see https://github.com/chocolatey/choco/wiki/HelpersReference
    
    ## Install an application, will assert administrative rights
    ## add additional optional arguments as necessary
    ##Install-ChocolateyPackage $packageName $fileType $silentArgs $url [$url64 -validExitCodes $validExitCodes -checksum $checksum -checksumType $checksumType -checksum64 $checksum64 -checksumType64 $checksumType64]
    
    ## Download and unpack a zip file
    ##Install-ChocolateyZipPackage $packageName $url $toolsDir [$url64 -checksum $checksum -checksumType $checksumType -checksum64 $checksum64 -checksumType64 $checksumType64]
    
    ## Install Visual Studio Package
    #Install-ChocolateyVsixPackage $packageName $url [$vsVersion] [-checksum $checksum -checksumType $checksumType]
    #Install-ChocolateyVsixPackage @packageArgs
    
    # see the full list at https://github.com/chocolatey/choco/wiki/HelpersReference
    
    # downloader that the main helpers use to download items
    # if removing $url64, please remove from here
    #Get-ChocolateyWebFile $packageName 'DOWNLOAD_TO_FILE_FULL_PATH' $url $url64
    
    # installer, will assert administrative rights - used by Install-ChocolateyPackage
    # use this for embedding installers in the package when not going to community feed or when you have distribution rights
    #Install-ChocolateyInstallPackage $packageName $fileType $silentArgs '_FULLFILEPATH_' -validExitCodes $validExitCodes
    
    # unzips a file to the specified location - auto overwrites existing content
    #Get-ChocolateyUnzip "FULL_LOCATION_TO_ZIP.zip" $toolsDir
    
    # Runs processes asserting UAC, will assert administrative rights - used by Install-ChocolateyInstallPackage
    #Start-ChocolateyProcessAsAdmin 'STATEMENTS_TO_RUN' 'Optional_Application_If_Not_PowerShell' -validExitCodes $validExitCodes
    
    # add specific folders to the path - any executables found in the chocolatey package folder will already be on the path. This is used in addition to that or for cases when a native installer doesn't add things to the path.
    #Install-ChocolateyPath 'LOCATION_TO_ADD_TO_PATH' 'User_OR_Machine' # Machine will assert administrative rights
    
    # add specific files as shortcuts to the desktop
    #$target = Join-Path $toolsDir "$($packageName).exe"
    # Install-ChocolateyShortcut -shortcutFilePath "<path>" -targetPath "<path>" [-workDirectory "C:\" -arguments "C:\test.txt" -iconLocation "C:\test.ico" -description "This is the description"]
    
    # outputs the bitness of the OS (either "32" or "64")
    #$osBitness = Get-ProcessorBits
    
    #Install-ChocolateyEnvironmentVariable -variableName "SOMEVAR" -variableValue "value" [-variableType = 'Machine' #Defaults to 'User']
    
    #Install-ChocolateyFileAssociation 
    #Install-BinFile ## only use this for non-exe files - chocolatey will automatically pick up the exe files and shim them automatically
    ## https://github.com/chocolatey/choco/wiki/CreatePackages#how-do-i-exclude-executables-from-getting-batch-redirects
    
    ##PORTABLE EXAMPLE
    #$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
    # despite the name "Install-ChocolateyZipPackage" this also works with 7z archives
    #Install-ChocolateyZipPackage $packageName $url $toolsDir $url64
    ## END PORTABLE EXAMPLE
    
    ## [DEPRECATING] PORTABLE EXAMPLE
    #$binRoot = Get-BinRoot
    #$installDir = Join-Path $binRoot "$packageName"
    #Write-Host "Adding `'$installDir`' to the path and the current shell path"
    #Install-ChocolateyPath "$installDir"
    #$env:Path = "$($env:Path);$installDir"
    
    # if removing $url64, please remove from here
    # despite the name "Install-ChocolateyZipPackage" this also works with 7z archives
    #Install-ChocolateyZipPackage "$packageName" "$url" "$installDir" "$url64"
    ## END PORTABLE EXAMPLE
    
  • templates\tools\chocolateyuninstall.ps1 Show
    # IMPORTANT: Before releasing this package, copy/paste the next 2 lines into PowerShell to remove all comments from this file:
    #   $f='c:\path\to\thisFile.ps1'
    #   gc $f | ? {$_ -notmatch "^\s*#"} | % {$_ -replace '(^.*?)\s*?[^``]#.*','$1'} | Out-File $f+".~" -en utf8; mv -fo $f+".~" $f
    
    # If this is an MSI, cleaning up comments is all you need.
    # If this is an exe, change installerType and silentArgs
    # Auto Uninstaller should be able to detect and handle registry uninstalls (if it is turned on, it is in preview for 0.9.9).
    
    $ErrorActionPreference = 'Stop'; # stop on all errors
    
    $packageName = '[[PackageName]]'
    $softwareName = '[[PackageName]]*' #part or all of the Display Name as you see it in Programs and Features. It should be enough to be unique
    $installerType = 'MSI' 
    #$installerType = 'EXE' 
    
    $silentArgs = '/qn /norestart'
    # https://msdn.microsoft.com/en-us/library/aa376931(v=vs.85).aspx
    $validExitCodes = @(0, 3010, 1605, 1614, 1641)
    if ($installerType -ne 'MSI') {
      # The below is somewhat naive and built for EXE installers
      # Uncomment matching EXE type (sorted by most to least common)
      #$silentArgs = '/S'           # NSIS
      #$silentArgs = '/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-' # Inno Setup
      #$silentArgs = '/s'           # InstallShield
      #$silentArgs = '/s /v"/qn"' # InstallShield with MSI
      #$silentArgs = '/s'           # Wise InstallMaster
      #$silentArgs = '-s'           # Squirrel
      #$silentArgs = '-q'           # Install4j
      #$silentArgs = '-s -u'        # Ghost
      # Note that some installers, in addition to the silentArgs above, may also need assistance of AHK to achieve silence.
      #$silentArgs = ''             # none; make silent with input macro script like AutoHotKey (AHK)
                                    #       https://chocolatey.org/packages/autohotkey.portable
      $validExitCodes = @(0)
    }
    
    $uninstalled = $false
    $local_key     = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
    $machine_key   = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*'
    $machine_key6432 = 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
    
    $key = Get-ItemProperty -Path @($machine_key6432,$machine_key, $local_key) `
                            -ErrorAction SilentlyContinue `
             | ? { $_.DisplayName -like "$softwareName" }
    
    if ($key.Count -eq 1) {
      $key | % { 
        $file = "$($_.UninstallString)"
    
        if ($installerType -eq 'MSI') {
          # The Product Code GUID is all that should be passed for MSI, and very 
          # FIRST, because it comes directly after /x, which is already set in the 
          # Uninstall-ChocolateyPackage msiargs (facepalm).
          $silentArgs = "$($_.PSChildName) $silentArgs"
    
          # Don't pass anything for file, it is ignored for msi (facepalm number 2) 
          # Alternatively if you need to pass a path to an msi, determine that and 
          # use it instead of the above in silentArgs, still very first
          $file = ''
        }
    
        Uninstall-ChocolateyPackage -PackageName $packageName `
                                    -FileType $installerType `
                                    -SilentArgs "$silentArgs" `
                                    -ValidExitCodes $validExitCodes `
                                    -File "$file"
      }
    } elseif ($key.Count -eq 0) {
      Write-Warning "$packageName has already been uninstalled by other means."
    } elseif ($key.Count -gt 1) {
      Write-Warning "$key.Count matches found!"
      Write-Warning "To prevent accidental data loss, no programs will be uninstalled."
      Write-Warning "Please alert package maintainer the following keys were matched:"
      $key | % {Write-Warning "- $_.DisplayName"}
    }
    
    
    ## OTHER HELPERS
    ## https://github.com/chocolatey/choco/wiki/HelpersReference
    #Uninstall-ChocolateyZipPackage $packageName
    #Uninstall-BinFile # Only needed if you added one in the installer script, choco will remove the ones it added automatically.
    #remove any shortcuts you added
    
    

Virus Scan Results

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.

Dependencies

This package has no dependencies.

Package Maintainer(s)

Software Author(s)

  • Rob Reynolds
  • The Chocolatey Team

Copyright

RealDimensions Software, LLC - 2016-Present

Tags

Version History

Version Downloads Last updated Status

Discussion for the Chocolatey Default Template Package

Ground rules:

  • This discussion is only about Chocolatey Default Template and the Chocolatey Default Template 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 Chocolatey Default Template, 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.

comments powered by Disqus
Chocolatey.org uses cookies to enhance the user experience of the site.
Ok