Unpacking Software Livestream

Join our monthly Unpacking Software livestream to hear about the latest news, chat and opinion on packaging, software deployment and lifecycle management!

Learn More

Chocolatey Product Spotlight

Join the Chocolatey Team on our regular monthly stream where we put a spotlight on the most recent Chocolatey product releases. You'll have a chance to have your questions answered in a live Ask Me Anything format.

Learn More

Chocolatey Coding Livestream

Join us for the Chocolatey Coding Livestream, where members of our team dive into the heart of open source development by coding live on various Chocolatey projects. Tune in to witness real-time coding, ask questions, and gain insights into the world of package management. Don't miss this opportunity to engage with our team and contribute to the future of Chocolatey!

Learn More

Calling All Chocolatiers! Whipping Up Windows Automation with Chocolatey Central Management

Webinar from
Wednesday, 17 January 2024

We are delighted to announce the release of Chocolatey Central Management v0.12.0, featuring seamless Deployment Plan creation, time-saving duplications, insightful Group Details, an upgraded Dashboard, bug fixes, user interface polishing, and refined documentation. As an added bonus we'll have members of our Solutions Engineering team on-hand to dive into some interesting ways you can leverage the new features available!

Watch On-Demand
Chocolatey Community Coffee Break

Join the Chocolatey Team as we discuss all things Community, what we do, how you can get involved and answer your Chocolatey questions.

Watch The Replays
Chocolatey and Intune Overview

Webinar Replay from
Wednesday, 30 March 2022

At Chocolatey Software we strive for simple, and teaching others. Let us teach you just how simple it could be to keep your 3rd party applications updated across your devices, all with Intune!

Watch On-Demand
Chocolatey For Business. In Azure. In One Click.

Livestream from
Thursday, 9 June 2022

Join James and Josh to show you how you can get the Chocolatey For Business recommended infrastructure and workflow, created, in Azure, in around 20 minutes.

Watch On-Demand
The Future of Chocolatey CLI

Livestream from
Thursday, 04 August 2022

Join Paul and Gary to hear more about the plans for the Chocolatey CLI in the not so distant future. We'll talk about some cool new features, long term asks from Customers and Community and how you can get involved!

Watch On-Demand
Hacktoberfest Tuesdays 2022

Livestreams from
October 2022

For Hacktoberfest, Chocolatey ran a livestream every Tuesday! Re-watch Cory, James, Gary, and Rain as they share knowledge on how to contribute to open-source projects such as Chocolatey CLI.

Watch On-Demand

Downloads:

594,774

Downloads of v 0.0.2:

28,973

Last Update:

01 Sep 2018

Package Maintainer(s):

Software Author(s):

  • Bill Curran

Tags:

bcurran3 unofficial choco misc helpers extension

Chocolatey Misc Helpers Extension

This is not the latest version of Chocolatey Misc Helpers Extension available.

  • 1
  • 2
  • 3

0.0.2 | Updated: 01 Sep 2018

Downloads:

594,774

Downloads of v 0.0.2:

28,973

Maintainer(s):

Software Author(s):

  • Bill Curran

Chocolatey Misc Helpers Extension 0.0.2

This is not the latest version of Chocolatey Misc Helpers Extension available.

  • 1
  • 2
  • 3

All Checks are Passing

3 Passing Tests


Validation Testing Passed


Verification Testing Passed

Details

Scan Testing Successful:

No detections found in any package files

Details
Learn More

Deployment Method: Individual Install, Upgrade, & Uninstall

To install Chocolatey Misc Helpers Extension, run the following command from the command line or from PowerShell:

>

To upgrade Chocolatey Misc Helpers Extension, run the following command from the command line or from PowerShell:

>

To uninstall Chocolatey Misc Helpers Extension, 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

  • 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

3. Copy Your Script

choco upgrade chocolatey-misc-helpers.extension -y --source="'INTERNAL REPO URL'" --version="'0.0.2'" [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 chocolatey-misc-helpers.extension -y --source="'INTERNAL REPO URL'" --version="'0.0.2'" 
$exitCode = $LASTEXITCODE

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0
}

Exit $exitCode

- name: Install chocolatey-misc-helpers.extension
  win_chocolatey:
    name: chocolatey-misc-helpers.extension
    version: '0.0.2'
    source: INTERNAL REPO URL
    state: present

See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.


chocolatey_package 'chocolatey-misc-helpers.extension' do
  action    :install
  source   'INTERNAL REPO URL'
  version  '0.0.2'
end

See docs at https://docs.chef.io/resource_chocolatey_package.html.


cChocoPackageInstaller chocolatey-misc-helpers.extension
{
    Name     = "chocolatey-misc-helpers.extension"
    Version  = "0.0.2"
    Source   = "INTERNAL REPO URL"
}

Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.


package { 'chocolatey-misc-helpers.extension':
  ensure   => '0.0.2',
  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.

Package Approved

This package was approved by moderator gep13 on 03 Sep 2018.

Description

chocolatey-misc-helpers.extension provides helper functions to be used in Chocolatey install/uninstall scripts by package creators/maintainers.

These didn't fit into the concept scope of my other extensions so I started this miscellaneous collection and will add to it as "needed."

HELPERS:

  • Start-CheckandStop - Checks for and stops a process if running. Creates variables to easily restart the process after a package upgrade. Useful for installers that fail if the program is running, i.e. KeePass, uTorrent, etc. or for stopping programs that automatically run after install, i.e. Skype, SuMo, Ellp, etc. as well as for programs that will stop running during an upgrade and then not return to a running state post upgrade, i.e. Plex Media Server, etc.
  • Start-WaitandStop - starts a background process to stop a (foreground) process - quits after 5 minutes or after the process gets stopped. Useful to stop additional pop-up programs during installation.
  • Start-WaitandStopActual - (do not directly use) called by Start-WaitandStop to make Start-WaitandStop simple to use.
  • Read comments in the scripts for help implementing.

USAGE:

  • Start-CheckandStop "ProcessName"
  • Start-WaitandStop "ProcessName"

PACKAGE NOTES


Click here to Patreon-ize the package maintainer.



extensions\chocolatey-misc-helpers.psm1
# chocolatey-misc-helpers.extension v0.0.2 (07-19-2018) by Bill Curran - public domain

$scriptRoot = Split-Path -Path $MyInvocation.MyCommand.Definition

$publicFunctions = @(
    'Show-ToastMessage',
    'Show-Patreon',
	'Show-PayPal',
    'Start-CheckandStop',
	'Start-WaitandStop',
	'Start-WaitandStopActual'
)
 
Get-ChildItem -Path "$scriptRoot\*.ps1" | ForEach-Object { . $_ }
Export-ModuleMember -Function $publicFunctions
extensions\Show-Patreon.ps1
# chocolatey-misc-helpers.extension v0.0.2 (07-19-2018) by Bill Curran - public domain
# Show-Patreon.ps1 - Displays a message and link to your Patreon account.
# If you define $global:packageMaintainer in your chocolateyinstall.ps1, 
# i.e. $global:packageMaintainer = 'BCURRAN3' it will use that too.
# Recommended to run this right before Install-ChocolateyPackage - that's when you MIGHT have a moment of the user's attention.
# Oh yeah! You can Patreon-ize me at https://www.patreon.com/bcurran3 :)

function Show-Patreon($PatreonURL){
# 08-24-2018
# This function has been disallowed by the Chocolatey team. Donation requests can be on package pages but not in packages. :( Hey fellow maintainers, I tried!
# Its existence is for backward compatibility, actual function NULLIFIED.
return

Write-Host "-- While you're waiting for your package to install, consider becoming a patron of" -foreground cyan
if ($packageMaintainer) {
    Write-Host "-- $packageMaintainer, the maintainer of this $env:packageName package, at $PatreonURL" -foreground cyan
   } else {
    Write-Host "-- the maintainer of this $env:packageName package at $PatreonURL" -foreground cyan
   }
}
extensions\Show-PayPal.ps1
# chocolatey-misc-helpers.extension v0.0.2 (07-19-2018) by Bill Curran - public domain
# Show-PayPal.ps1 - Displays a message and link to your PayPal account, i.e. www.paypal.me/account
# If you define $global:packageMaintainer in your chocolateyinstall.ps1, 
# i.e. $global:packageMaintainer = 'BCURRAN3' it will use that too.
# Recommended to run this right before Install-ChocolateyPackage - that's when you MIGHT have a moment of the user's attention.
# Oh yeah! You can donate to me at https://www.paypal.me/bcurran3donations :)

function Show-PayPal($PayPalURL){
# 08-24-2018
# This function has been disallowed by the Chocolatey team. Donation requests can be on package pages but not in packages. :( Hey fellow maintainers, I tried!
# Its existence is for backward compatibility, actual function NULLIFIED.
return

Write-Host "-- While you're waiting for your package to install, consider donating to" -foreground cyan
if ($packageMaintainer) {
    Write-Host "-- $packageMaintainer, the maintainer of this $env:packageName package, at $PayPalURL" -foreground cyan
   } else {
    Write-Host "-- the maintainer of this $env:packageName package at $PayPalURL" -foreground cyan
   }
}
extensions\Show-ToastMessage.ps1
# chocolatey-misc-helpers.extension v0.0.2 (07-19-2018) by Bill Curran - public domain
# Show-ToastMessage.ps1 - Sends a Windows toast message.
# Uses BurntToast (https://github.com/Windos/BurntToast) if installed. NOTE: v0.5.0+ no longer works on Windows 8.
# Otherwise uses the code I blatantly stole from https://gist.github.com/Windos/9aa6a684ac583e0d38a8fa68196bc2dc
# Example of use: Show-ToastMessage "$packageName installed." "Version $env:packageVersion."
# Not guaranteed to work on Windows versions other than Windows 10 and Server 2016. 
# Should do nothing on other versions; i.e. tested on Windows Server 2012 R2 - no messages, no errors.

function Show-ToastMessage($MessageLine1, $MessageLine2){
# 08-31-2018
# This function has been disallowed by the Chocolatey team as "pop ups" need to be 100% opt-in.
# Its existence is for backward compatibility, actual function NULLIFIED.
# I argued that by having BurntToast installed, users WANT the toast messages. The Chocolatey Team still disagreed. :(
# This might return in a different form in the future.
return

if (!(Test-Path "$ChocolateyInstall\extensions\chocolatey-misc-helpers\choco.ico")){
     [System.Reflection.Assembly]::LoadWithPartialName('System.Drawing')  | Out-Null
     [System.Drawing.Icon]::ExtractAssociatedIcon("$env:ChocolateyInstall\choco.exe").ToBitmap().Save("$env:ChocolateyInstall\extensions\chocolatey-misc-helpers\choco.ico")
}

if (Get-Module -ListAvailable -Name BurntToast -ErrorAction SilentlyContinue){
     New-BurntToastNotification -Text "Chocolatey ($env:packageName)", "$MessageLine1", "$MessageLine2" -AppLogo "$env:ChocolateyInstall\extensions\chocolatey-misc-helpers\choco.ico" -ErrorAction SilentlyContinue
   } else {
     $app = '{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\WindowsPowerShell\v1.0\powershell.exe'
     [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | Out-Null
     $Template = [Windows.UI.Notifications.ToastTemplateType]::ToastImageAndText01
     #Gets the Template XML so we can manipulate the values
     [xml]$ToastTemplate = ([Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent($Template).GetXml())
     [xml]$ToastTemplate = @"
<toast launch="app-defined-string">
  <visual>
    <binding template="ToastGeneric">
      <text>Chocolatey ($env:packageName)</text>	
      <text>$MessageLine1</text>
      <text>$MessageLine2</text>
	  <branding>logo</branding>
	  <image placement="appLogoOverride" src="$env:ChocolateyInstall\extensions\chocolatey-misc-helpers\choco.ico"/>
    </binding>
  </visual>
</toast>
"@
     $ToastXml = New-Object -TypeName Windows.Data.Xml.Dom.XmlDocument
     $ToastXml.LoadXml($ToastTemplate.OuterXml)
     $notify = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($app) 
     $notify.Show($ToastXml)
    }
}
extensions\Start-CheckandStop.ps1
# chocolatey-misc-helpers.extension v0.0.2 (07-19-2018) by Bill Curran - public domain
# Start-WaitandStop.ps1 - Checks for and stops $ProcessName if running.
# $ProcessWasRunning can be checked later in scripts to re-run $ProcessName if it was running before stopped.
# $ProcessFullPath is the full path and executable of the stopped process.
# i.e. to re-run the process after an upgrade use: if ($ProcessWasRunning -eq "True") {&"$ProcessFullPath"}

function Start-CheckandStop($ProcessName){
$global:ProcessWasRunning="False"

if((Get-Process "$ProcessName" -ea SilentlyContinue) -eq $Null){ 
    Write-Host "$ProcessName currently NOT running." -foreground green
  }else{ 
    Write-Host "Stopping $ProcessName process..." -foreground yellow
	$global:ProcessWasRunning = "True"
	$global:ProcessFullPath = (Get-Process "$ProcessName").path
    Stop-Process -ProcessName "$ProcessName" -Force	
  }
}
extensions\Start-WaitandStop.ps1
# chocolatey-misc-helpers.extension v0.0.2 (07-19-2018) by Bill Curran - public domain
# Runs a background job to kill $ProcessName within 5 minutes
# You would typically run this before Install-ChocolateyPackage

function Start-WaitandStop($ProcessName){
$env:ProcessName = $ProcessName

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Start-Job -InitializationScript {Import-Module -Name "$env:ChocolateyInstall\extensions\chocolatey-misc-helpers\Start-WaitandStopActual.ps1"} -ScriptBlock {Start-WaitandStopActual} | Out-Null
Start-Sleep 10
Remove-Item Env:\ProcessName
}
extensions\Start-WaitandStopActual.ps1
# chocolatey-misc-helpers.extension v0.0.2 (07-19-2018) by Bill Curran - public domain
# Start-WaitandStopActual.ps1 - Stops process $ProcessName anywhere up to 5 minutes after being called.
# This function is called by Start-WaitandStop.ps1 and should not be used directly.

function Start-WaitandStopActual{
$ProcessName = $env:ProcessName

$LoopMePlease=1
Do {
    Start-Sleep 5
    if((Get-Process "$ProcessName" -ea SilentlyContinue) -eq $Null){ 
      } else { 
        Stop-Process -ProcessName "$ProcessName" -Force
		break
       }	
    $LoopMePlease++
   }
Until ($LoopMePlease -gt 60)
}


  
  

Log in or click on link to see number of positives.

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
Chocolatey Misc Helpers Extension 0.0.3.1 138027 Saturday, January 12, 2019 Approved
Chocolatey Misc Helpers Extension 0.0.3 12148 Tuesday, December 4, 2018 Approved
Chocolatey Misc Helpers Extension 0.0.2 28973 Saturday, September 1, 2018 Approved
Chocolatey Misc Helpers Extension 0.0.1 9886 Thursday, June 21, 2018 Approved

CHANGE LOG:

  • 0.0.2 - Show-Patreon, Show-PayPal, and Show-ToastMessage added but later disapproved by the Chocolatey team and thus nullified. :(
  • 0.0.1 - initial release

DO NOT USE:

The functions below were added to v0.0.2 but were later nullified; included for backward compatibility with pre-release versions in the wild. Any questions, look at the comments in the files.



This package has no dependencies.

Discussion for the Chocolatey Misc Helpers Extension Package

Ground Rules:

  • This discussion is only about Chocolatey Misc Helpers Extension and the Chocolatey Misc Helpers Extension 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 Misc Helpers Extension, 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