Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <#
- .SYNOPSIS
- This script performs the installation or uninstallation of an application(s).
- .DESCRIPTION
- The script is provided as a template to perform an install or uninstall of an application(s).
- The script either performs an "Install" deployment type or an "Uninstall" deployment type.
- The install deployment type is broken down into 3 main sections/phases: Pre-Install, Install, and Post-Install.
- The script dot-sources the AppDeployToolkitMain.ps1 script which contains the logic and functions required to install or uninstall an application.
- .PARAMETER DeploymentType
- The type of deployment to perform. Default is: Install.
- .PARAMETER DeployMode
- Specifies whether the installation should be run in Interactive, Silent, or NonInteractive mode. Default is: Interactive. Options: Interactive = Shows dialogs, Silent = No dialogs, NonInteractive = Very silent, i.e. no blocking apps. NonInteractive mode is automatically set if it is detected that the process is not user interactive.
- .PARAMETER AllowRebootPassThru
- Allows the 3010 return code (requires restart) to be passed back to the parent process (e.g. SCCM) if detected from an installation. If 3010 is passed back to SCCM, a reboot prompt will be triggered.
- .PARAMETER TerminalServerMode
- Changes to "user install mode" and back to "user execute mode" for installing/uninstalling applications for Remote Destkop Session Hosts/Citrix servers.
- .PARAMETER DisableLogging
- Disables logging to file for the script. Default is: $false.
- .EXAMPLE
- Deploy-Application.ps1
- .EXAMPLE
- Deploy-Application.ps1 -DeployMode 'Silent'
- .EXAMPLE
- Deploy-Application.ps1 -AllowRebootPassThru -AllowDefer
- .EXAMPLE
- Deploy-Application.ps1 -DeploymentType Uninstall
- .NOTES
- Toolkit Exit Code Ranges:
- 60000 - 68999: Reserved for built-in exit codes in Deploy-Application.ps1, Deploy-Application.exe, and AppDeployToolkitMain.ps1
- 69000 - 69999: Recommended for user customized exit codes in Deploy-Application.ps1
- 70000 - 79999: Recommended for user customized exit codes in AppDeployToolkitExtensions.ps1
- .LINK
- http://psappdeploytoolkit.codeplex.com
- #>
- [CmdletBinding()]
- Param (
- [Parameter(Mandatory=$false)]
- [ValidateSet('Install','Uninstall')]
- [string]$DeploymentType = 'Install',
- [Parameter(Mandatory=$false)]
- [ValidateSet('Interactive','Silent','NonInteractive')]
- [string]$DeployMode = 'Interactive',
- [Parameter(Mandatory=$false)]
- [switch]$AllowRebootPassThru = $false,
- [Parameter(Mandatory=$false)]
- [switch]$TerminalServerMode = $false,
- [Parameter(Mandatory=$false)]
- [switch]$DisableLogging = $false
- )
- Try {
- ## Set the script execution policy for this process
- Try { Set-ExecutionPolicy -ExecutionPolicy 'ByPass' -Scope 'Process' -Force -ErrorAction 'Stop' } Catch {}
- ##*===============================================
- ##* VARIABLE DECLARATION
- ##*===============================================
- ## Variables: Application
- [string]$appVendor = 'LEGO'
- [string]$appName = 'Mindstorms EV3'
- [string]$appVersion = '1.1.1'
- [string]$appArch = 'x86'
- [string]$appLang = 'EN'
- [string]$appRevision = '01'
- [string]$appScriptVersion = '1.0.0'
- [string]$appScriptDate = '06/18/2015'
- [string]$appScriptAuthor = 'Chris Thomas'
- ##*===============================================
- ##* Do not modify section below
- #region DoNotModify
- ## Variables: Exit Code
- [int32]$mainExitCode = 0
- ## Variables: Script
- [string]$deployAppScriptFriendlyName = 'Deploy Application'
- [version]$deployAppScriptVersion = [version]'3.6.1'
- [string]$deployAppScriptDate = '03/26/2015'
- [hashtable]$deployAppScriptParameters = $psBoundParameters
- ## Variables: Environment
- [string]$scriptDirectory = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
- ## Dot source the required App Deploy Toolkit Functions
- Try {
- [string]$moduleAppDeployToolkitMain = "$scriptDirectory\AppDeployToolkit\AppDeployToolkitMain.ps1"
- If (-not (Test-Path -Path $moduleAppDeployToolkitMain -PathType Leaf)) { Throw "Module does not exist at the specified location [$moduleAppDeployToolkitMain]." }
- If ($DisableLogging) { . $moduleAppDeployToolkitMain -DisableLogging } Else { . $moduleAppDeployToolkitMain }
- }
- Catch {
- [int32]$mainExitCode = 60008
- Write-Error -Message "Module [$moduleAppDeployToolkitMain] failed to load: `n$($_.Exception.Message)`n `n$($_.InvocationInfo.PositionMessage)" -ErrorAction 'Continue'
- Exit $mainExitCode
- }
- #endregion
- ##* Do not modify section above
- ##*===============================================
- ##* END VARIABLE DECLARATION
- ##*===============================================
- If ($deploymentType -ine 'Uninstall') {
- ##*===============================================
- ##* PRE-INSTALLATION
- ##*===============================================
- [string]$installPhase = 'Pre-Installation'
- ## Show Welcome Message, close Internet Explorer if required, allow up to 3 deferrals, verify there is enough disk space to complete the install, and persist the prompt
- Show-InstallationWelcome -CloseApps 'mindstormsev3' -AllowDefer -DeferTimes 3 -CheckDiskSpace -PersistPrompt
- ## Show Progress Message (with the default message)
- Show-InstallationProgress
- ## <Perform Pre-Installation tasks here>
- ##*===============================================
- ##* INSTALLATION
- ##*===============================================
- [string]$installPhase = 'Installation'
- ## Handle Zero-Config MSI Installations
- If ($useDefaultMsi) { Execute-MSI -Action 'Install' -Path $defaultMsiFile }
- ## <Perform Installation tasks here>
- Execute-Process -Path "$dirFiles\setup.exe" -Parameters "/r:n /qn /AcceptLicenses yes"
- ##*===============================================
- ##* POST-INSTALLATION
- ##*===============================================
- [string]$installPhase = 'Post-Installation'
- ## <Perform Post-Installation tasks here>
- Remove-File -Path "$envPublic\desktop\LEGO MINDSTORMS EV3 Home Edition.lnk"
- ## Display a message at the end of the install
- If (-not $useDefaultMsi) {
- If ($DeployMode -ne "Silent") {
- # Inform the user that the installation has completed
- Show-InstallationPrompt -Message "$installTitle has completed installation. `n `n If you encounter any issues with this software please enter a ticket or call Help Desk at x4357." -Icon "Information" -ButtonMiddleText "OK" -NoWait
- }
- }
- }
- ElseIf ($deploymentType -ieq 'Uninstall')
- {
- ##*===============================================
- ##* PRE-UNINSTALLATION
- ##*===============================================
- [string]$installPhase = 'Pre-Uninstallation'
- ## Show Welcome Message, close Internet Explorer with a 60 second countdown before automatically closing
- Show-InstallationWelcome -CloseApps 'mindstormsev3' -CloseAppsCountdown 60
- ## Show Progress Message (with the default message)
- Show-InstallationProgress
- ## <Perform Pre-Uninstallation tasks here>
- ## Uninstall LEGO MINDSTORMS NXT x64 Driver
- Execute-MSI -Action Uninstall -Path "{A0831C28-A6FA-49A3-86AE-B5AE3C9EE19C}"
- ## Uninstall LEGO MINDSTORMS EV3
- #Execute-MSI -Action Uninstall -Path "LEGO_SW.{5B0CB826-E499-4E6B-94F0-75B6327ED934}"
- ## Uninstall LEGO MINDSTORMS EV3 Home Edition
- Execute-MSI -Action Uninstall -Path "{01D821CA-B361-45E2-8748-904AFEDC1DBD}"
- ## Uninstall LEGO MINDSTORMS EV3 Uninstaller
- Execute-MSI -Action Uninstall -Path "{5F3092B9-4240-4037-A287-BF6F9A2996BC}"
- ## Uninstall LEGO MINDSTORMS EV3 Home Content
- Execute-MSI -Action Uninstall -Path "{6AAF31BC-3005-429B-90D8-1C4A18DEE73A}"
- ## Uninstall LEGO MINDSTORMS EV3 Home English Support
- Execute-MSI -Action Uninstall -Path "{C4CF0D3D-8724-4B20-ABB0-4C73BDEA0F63}"
- ## Uninstall VI VC2008MSMs x64
- Execute-MSI -Action Uninstall -Path "{07E00E94-7A78-40FA-9BEF-71C190E98041}"
- ## Uninstall NI EulaDepot
- Execute-MSI -Action Uninstall -Path "{87F60C46-07E2-46B4-B872-680DE4184C0A}"
- ## Uninstall NI .NET Framework 4
- Execute-MSI -Action Uninstall -Path "{A3A11F6C-E573-4D1C-A9D4-701D7551544B}"
- ## Uninstall NI Uninstaller
- Execute-MSI -Action Uninstall -Path "{C7743231-5899-418D-8CA5-22B0F654D894}"
- ## Uninstall NI VC2008MSMs x86
- Execute-MSI -Action Uninstall -Path "{E84997A1-4D6F-4C0B-B60D-F85B360D2666}"
- ## Uninstall NI MDF Support
- Execute-MSI -Action Uninstall -Path "{FA35D849-889D-4454-9532-6BE2008D2CDF}"
- ##*===============================================
- ##* UNINSTALLATION
- ##*===============================================
- [string]$installPhase = 'Uninstallation'
- ## Handle Zero-Config MSI Uninstallations
- If ($useDefaultMsi) { Execute-MSI -Action 'Uninstall' -Path $defaultMsiFile }
- # <Perform Uninstallation tasks here>
- ##*===============================================
- ##* POST-UNINSTALLATION
- ##*===============================================
- [string]$installPhase = 'Post-Uninstallation'
- ## <Perform Post-Uninstallation tasks here>
- }
- ##*===============================================
- ##* END SCRIPT BODY
- ##*===============================================
- ## Call the Exit-Script function to perform final cleanup operations
- Exit-Script -ExitCode $mainExitCode
- }
- Catch {
- [int32]$mainExitCode = 60001
- [string]$mainErrorMessage = "$(Resolve-Error)"
- Write-Log -Message $mainErrorMessage -Severity 3 -Source $deployAppScriptFriendlyName
- Show-DialogBox -Text $mainErrorMessage -Icon 'Stop'
- Exit-Script -ExitCode $mainExitCode
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement