-
Notifications
You must be signed in to change notification settings - Fork 910
Commit
- Make the install template more readable - Enhance the uninstall template to require almost no intervention for the maintainers.
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20,59 +20,60 @@ public class ChocolateyUninstallTemplate | |
public static string Template = | ||
@"#NOTE: Please remove any commented lines to tidy up prior to releasing the package, including this one | ||
# REMOVE ANYTHING BELOW THAT IS NOT NEEDED | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong. |
||
# 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]]' | ||
# registry uninstaller key name is the key that is found at HKLM:\Software\Windows\CurrentVersion\Uninstall\ THE NAME | ||
$registryUninstallerKeyName = '[[PackageName]]' #ensure this is the value in the registry | ||
$msiProductCodeGuid = '{insert it here}' | ||
$shouldUninstall = $true | ||
$local_key = ""HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\$registryUninstallerKeyName"" | ||
# local key 6432 probably never exists | ||
$local_key6432 = ""HKCU:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\$registryUninstallerKeyName"" | ||
$machine_key = ""HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$registryUninstallerKeyName"" | ||
$machine_key6432 = ""HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\$registryUninstallerKeyName"" | ||
$file = @($local_key, $local_key6432, $machine_key, $machine_key6432) ` | ||
| ?{ Test-Path $_ } ` | ||
| Get-ItemProperty ` | ||
| Select-Object -ExpandProperty UninstallString | ||
$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' | ||
if ($file -eq $null -or $file -eq '') { | ||
Write-Host ""$packageName has already been uninstalled by other means."" | ||
$shouldUninstall = $false | ||
$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 | ||
$silentArgs = '/S' # /s /S /q /Q /quiet /silent /SILENT /VERYSILENT -s - try any of these to get the silent installer | ||
This comment has been minimized.
Sorry, something went wrong.
dtgm
Contributor
|
||
$validExitCodes = @(0) | ||
} | ||
# The below is somewhat naive and built for EXE installers | ||
#$installerType = 'EXE' | ||
#$silentArgs = '/S' | ||
#$validExitCodes = @(0) | ||
$uninstalled = $false | ||
#if (!(Test-Path $file)) { | ||
# Write-Host ""$packageName has already been uninstalled by other means."" | ||
# $shouldUninstall = $false | ||
#} | ||
Get-ItemProperty -Path @($machine_key6432,$machine_key, $local_key) ` | ||
-ErrorAction SilentlyContinue ` | ||
| ? { $_.DisplayName -like ""$softwareName"" } ` | ||
| Select -First 1 ` | ||
This comment has been minimized.
Sorry, something went wrong.
dtgm
Contributor
|
||
| % { | ||
This comment has been minimized.
Sorry, something went wrong.
dtgm
Contributor
|
||
$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 = '' | ||
} | ||
# The below is somewhat naive and built for MSI installers | ||
$installerType = '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 = ""$msiProductCodeGuid /qn /norestart"" | ||
# https://msdn.microsoft.com/en-us/library/aa376931(v=vs.85).aspx | ||
$validExitCodes = @(0, 3010, 1605, 1614, 1641) | ||
# 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 $msiProductCodeGuid in silentArgs, still very first | ||
$file = '' | ||
Uninstall-ChocolateyPackage -PackageName $packageName ` | ||
-FileType $installerType ` | ||
-SilentArgs ""$silentArgs"" ` | ||
-ValidExitCodes $validExitCodes ` | ||
-File ""$file"" | ||
$uninstalled = $true | ||
} | ||
if ($shouldUninstall) { | ||
Uninstall-ChocolateyPackage -PackageName $packageName -FileType $installerType -SilentArgs $silentArgs -validExitCodes $validExitCodes -File $file | ||
if (!($uninstalled)) { | ||
Write-Warning ""$packageName has already been uninstalled by other means."" | ||
} | ||
## OTHER HELPERS | ||
## https://github.com/chocolatey/choco/wiki/HelpersReference | ||
#Uninstall-ChocolateyZipPackage | ||
|
Make it easier to quickly remove all comments:
Also should be able to remove
# REMOVE ANYTHING BELOW THAT IS NOT NEEDED
because all commented lines are removed.