Downloads:
632,371
Downloads of v 0.0.4:
443,017
Last Update:
25 Aug 2020
Package Maintainer(s):
Software Author(s):
- Bill Curran
Tags:
bcurran3 unofficial choco misc helpers extensionChocolatey Misc Helpers Extension
- 1
- 2
- 3
0.0.4 | Updated: 25 Aug 2020
Downloads:
632,371
Downloads of v 0.0.4:
443,017
Maintainer(s):
Software Author(s):
- Bill Curran
Chocolatey Misc Helpers Extension 0.0.4
Legal Disclaimer: Neither this package nor Chocolatey Software, Inc. are affiliated with or endorsed by Bill Curran. The inclusion of Bill Curran trademark(s), if any, upon this webpage is solely to identify Bill Curran goods or services and not for commercial purposes.
- 1
- 2
- 3
All Checks are Passing
3 Passing Tests
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:
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 chocolatey-misc-helpers.extension --internalize --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 chocolatey-misc-helpers.extension -y --source="'INTERNAL REPO URL'" [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'"
$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.4'
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.4'
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.4"
Source = "INTERNAL REPO URL"
}
Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.
package { 'chocolatey-misc-helpers.extension':
ensure => '0.0.4',
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 by moderator mkevenaar on 30 Aug 2020.
choco://chocolatey-misc-helpers.extension
To use choco:// protocol URLs, install (unofficial) choco:// Protocol support
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. Screenshot
- Start-CheckandThrow - Checks if a process is running and aborts installation/upgrade if so. Screenshot
- 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. Screenshot
- Start-WaitandStopActual - (do not directly use) Called by Start-WaitandStop to make Start-WaitandStop simple to use.
- Test-Dependency - Provides a way to verify a dependency is installed. Does NOT check version. Returns True/False.
Screenshot - Test-URL - Checks if a (download) URL is valid. Returns True/False. Provides a way to verify a download link and switch to an alternate if the primary is bad. Reasoning: Some software developers move program_version.exe to an archival download directory once the version has been superceded. Instead of a package failing when the download link changes to the archived location, you can now define that new archival download link as an alternative/secondary download link.
- Read comments in the scripts for help implementing.
USAGE:
- Start-CheckandStop "ProcessName"
- Start-CheckandThrow "ProcessName"
- Start-WaitandStop "ProcessName"
- Test-Dependency "DependencyPackageName"
- Test-URL "DownloadURL"
Click here to Patreon-ize the package maintainer.
# chocolatey-misc-helpers.extension v0.0.4 (08-24-2020) by Bill Curran - public domain
$scriptRoot = Split-Path -Path $MyInvocation.MyCommand.Definition
$publicFunctions = @(
'Enable-AutoPin',
'Show-ToastMessage',
'Show-Patreon',
'Show-PayPal',
'Start-CheckandStop',
'Start-CheckandThrow',
'Start-WaitandStop',
'Start-WaitandStopActual',
'Test-Dependency',
'Test-URL'
)
Get-ChildItem -Path "$scriptRoot\*.ps1" | ForEach-Object { . $_ }
Export-ModuleMember -Function $publicFunctions
$ErrorActionPreference = 'Stop'
# chocolatey-misc-helpers.extension v0.0.4 (08-24-2020) by Bill Curran - public domain
# Creates a .pin file in \programdata\chocolatey\.chocolatey\packagename.packageversion folder to AutoPin a package
# Implementation should be via a user opt-in installation package parameter; i.e. AUTOPIN:YES
# REF: https://github.com/chocolatey/choco/issues/1607
# DISCLAIMER: Enable-AutoPin is implemented via an undocumented/non-public/unofficial "API." Tested with Chocolatey v0.10.11, should work with Chocolatey v0.9.9-v0.10.11. This will be deprecated when a future version of Chocolatey switches to using a database to store package options and thus this method will stop working.
function Enable-AutoPin{
# 01-12-2019
# This function has been retired. Real world testing has shown that even though the function works perfectly, it's a negated as choco.exe
# deletes the .pin file after chocolateyinstall.ps1 finishes when the .pin file didn't exist previously. Even when the .pin file is set
# to read only, choco.exe errors out trying to delete the .pin file and fails the package install.
# -----> THWARTED! <-----
# Its existence is for backward compatibility, actual function NULLIFIED.
Write-Host " ** The AutoPin function has been retired. It does not work. Please inform the package maintainer!" -ForeGround Red
return
if (Test-Path -Path $ENV:ChocolateyInstall\.chocolatey\$ENV:ChocolateyPackageName.$ENV:ChocolateyPackageVersion){
New-Item -Path "$ENV:ChocolateyInstall\.chocolatey\$ENV:ChocolateyPackageName.$ENV:ChocolateyPackageVersion\" -ItemType "file" -Name ".pin" -Value "This package has been AutoPinned." -Force
Out-File -FilePath "$ENV:ChocolateyInstall\.chocolatey\$ENV:ChocolateyPackageName.$ENV:ChocolateyPackageVersion\.pin" -InputObject "This package has been AutoPinned." -Force
Set-ItemProperty -Path "$ENV:ChocolateyInstall\.chocolatey\$ENV:ChocolateyPackageName.$ENV:ChocolateyPackageVersion\.pin" -Name IsReadOnly -Value $true
}
if (Test-Path -Path $ENV:ChocolateyInstall\.chocolatey\$ENV:ChocolateyPackageName.$ENV:ChocolateyPackageVersion\.pin){
Write-Host " ** $ENV:ChocolateyPackageName v$ENV:ChocolateyPackageVersion AutoPinned." -ForeGround Green
} else {
Write-Host " ** Error creating AutoPin. Package NOT pinned." -ForeGround Red
}
}
$ErrorActionPreference = 'Stop'
# chocolatey-misc-helpers.extension v0.0.4 (08-24-2020) 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.
Write-Host " ** The Show-Patreon function has been retired. Please inform the package maintainer!" -ForeGround Red
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
}
}
$ErrorActionPreference = 'Stop'
# chocolatey-misc-helpers.extension v0.0.4 (08-24-2020) 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.
Write-Host " ** The Show-PayPal function has been retired. Please inform the package maintainer!" -ForeGround Red
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
}
}
$ErrorActionPreference = 'Stop'
# chocolatey-misc-helpers.extension v0.0.4 (08-24-2020) 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-Warning " ** Stopping $ProcessName process..."
$GLOBAL:ProcessWasRunning = $True
$GLOBAL:ProcessFullPath = (Get-Process "$ProcessName").path
Stop-Process -ProcessName "$ProcessName" -Force
}
}
$ErrorActionPreference = 'Stop'
# chocolatey-misc-helpers.extension v0.0.4 (08-24-2020) by Bill Curran - public domain
# Checks for and throws install if $ProcessName is running
# Good for aborting installation of portable programs if they are running. Otherwise Chocolatey might think the package installed but you're still running the old version. This is an alternative to just stopping the process.
function Start-CheckandThrow($ProcessName){
if ((Get-Process "$ProcessName" -ea SilentlyContinue) -eq $Null){
return
} else {
Write-Warning " ** Aborting install as $ProcessName is already running..."
Write-Warning " ** Please quit the program and try the upgrade again."
throw
}
}
$ErrorActionPreference = 'Stop'
# chocolatey-misc-helpers.extension v0.0.4 (08-24-2020) 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
}
$ErrorActionPreference = 'Stop'
# chocolatey-misc-helpers.extension v0.0.4 (08-24-2020) 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 {
Write-Verbose " ** Stopping $ProcessName process..."
Stop-Process -ProcessName "$ProcessName" -Force
break
}
$LoopMePlease++
}
Until ($LoopMePlease -gt 60)
}
$ErrorActionPreference = 'Stop'
# chocolatey-misc-helpers.extension v0.0.4 (08-24-2020) by Bill Curran - public domain
# Tests to verify a dependency is installed and returns true/false. Does NOT check version.
# Designed for use with my OS dependency packages but can be used for anything to verify that SOME VERISION
# of the dependency is installed; i.e. Chocolatey v0.10.11 will continue trying to install a package even
# if the dependency fails installation. Using Test-Dependency you can verify the dependency package DID get
# installed and abort if not. Example: Test-Dependency "dependency-windows10"
# You would typically run this sometime before Install-ChocolateyPackage
function Test-Dependency($dependency){
if (Test-Path -Path $env:ChocolateyInstall\lib\$dependency){
return $True
Write-Host " ** Dependency $dependency found." -ForeGround Green
} else {
return $False
Write-Host " ** Dependency $dependency NOT found." -ForeGround Red
}
}
$ErrorActionPreference = 'Stop'
# chocolatey-misc-helpers.extension v0.0.4 (08-24-2020) by Bill Curran - public domain
# Test a download URL and return true if it's valid or false if it's not.
# Use before Install-ChocolateyPackage so that you can switch to an alternative URL.
# Recommended implementation: define $urlalt and $url64alt in your nuspec similar to $url and $url64.
# Add the following 2 lines to your chocolateyInstall script to check and use the alternate URL when the primary is bad:
# if (Test-URL "$url") {} else {if (Test-URL "$urlalt"){$url=$urlalt}}
# if (Test-URL "$url64") {} else {if (Test-URL "$url64alt"){$url64=$url64alt}}
# Thanks to https://stackoverflow.com/questions/23760070/the-remote-server-returned-an-error-401-unauthorized
function Test-URL([string]$url){
if (($url -match "http://") -or ($url -match "https://")){
$HTTP_Response = $null
$HTTP_Request = [System.Net.WebRequest]::Create($url)
try{
$HTTP_Response = $HTTP_Request.GetResponse()
$HTTP_Status = [int]$HTTP_Response.StatusCode
if ($HTTP_Status -eq 200) {
return $true
} else {
return $true
}
$HTTP_Response.Close()
} catch {
$HTTP_Status = [regex]::matches($_.exception.message, "(?<=\()[\d]{3}").Value
return $false
}
}
}
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.4 | 443017 | Tuesday, August 25, 2020 | Approved | |
Chocolatey Misc Helpers Extension 0.0.3.1 | 138074 | Saturday, January 12, 2019 | Approved | |
Chocolatey Misc Helpers Extension 0.0.3 | 12195 | Tuesday, December 4, 2018 | Approved | |
Chocolatey Misc Helpers Extension 0.0.2 | 29015 | Saturday, September 1, 2018 | Approved | |
Chocolatey Misc Helpers Extension 0.0.1 | 9929 | Thursday, June 21, 2018 | Approved |
public domain
CHANGE LOG:
0.0.4 - Added Test-URL.
0.0.3.1 - Removed Enable-AutoPin. Real world testing has shown that even though the function works perfectly, it's a negated as choco.exe deletes the .pin file after chocolateyinstall.ps1 finishes when the .pin file didn't exist previously. Even when the .pin file is set to read only, choco.exe errors out trying to delete the .pin file and fails the package install.
0.0.3 - Added Enable-AutoPin, Start-CheckandThrow, and Test-Dependency. Minor cosmetic changes.
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
This package has no dependencies.
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.