Indietro

Libreria di installazione delle app

Scopri le migliori app per potenziare i tuoi dispositivi con la nostra guida completa alla libreria di installazione.

Esplora gli script completi di installazione e disinstallazione per software essenziali quali Notion, Google Drive, Microsoft Teams e Microsoft Office 365, progettati per automatizzare i processi in modo efficiente ed efficace.


 

Windows

Notion

Politica

SELECT name FROM programs WHERE name LIKE 'Notion%'

Script di installazione

# Some installers require a flag to run silently.# Each installer might use a different argument (usually it's "/S" or "/s")$installArgs = "/S"$exeFilePath = "${env:INSTALLER_PATH}"$exitCode = 0try {# Copy the installer to a public folder so that all can access it# users$exeFilename = Split-Path $exeFilePath -leafCopy-Item -Path $exeFilePath -Destination "${env:PUBLIC}" -Force$exeFilePath = "${env:PUBLIC}\$exeFilename"# Task properties. The task will be started by the logged in user$action = New-ScheduledTaskAction -Execute "$exeFilePath" `    -Argument "$installArgs"$trigger = New-ScheduledTaskTrigger -AtLogOn$userName = Get-CimInstance -ClassName Win32_ComputerSystem |        Select-Object -expand UserName$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries# Create a task object with the properties defined above$task = New-ScheduledTask -Action $action -Trigger $trigger `    -Settings $settings# Register the task$taskName = "fleet-install-$exeFilename"Register-ScheduledTask "$taskName" -InputObject $task -User "$userName"# keep track of the start time to cancel if taking too long to start$startDate = Get-Date# Start the task now that it is readyStart-ScheduledTask -TaskName "$taskName" -TaskPath "\"# Wait for the task to be running$state = (Get-ScheduledTask -TaskName "$taskName").StateWrite-Host "ScheduledTask is '$state'"while ($state  -ne "Running") {    Write-Host "ScheduledTask is '$state'. Waiting to run .exe..."    $endDate = Get-Date    $elapsedTime = New-Timespan -Start $startDate -End $endDate    if ($elapsedTime.TotalSeconds -gt 120) {        Throw "Timed-out waiting for scheduled task state."    }    Start-Sleep -Seconds 1    $state = (Get-ScheduledTask -TaskName "$taskName").State}# Wait for the task to be done$state = (Get-ScheduledTask -TaskName "$taskName").Statewhile ($state  -eq "Running") {    Write-Host "ScheduledTask is '$state'. Waiting for .exe to complete..."    $endDate = Get-Date    $elapsedTime = New-Timespan -Start $startDate -End $endDate    if ($elapsedTime.TotalSeconds -gt 120) {        Throw "Timed-out waiting for scheduled task state."    }    Start-Sleep -Seconds 10    $state = (Get-ScheduledTask -TaskName "$taskName").State}# Remove taskWrite-Host "Removing ScheduledTask: $taskName."Unregister-ScheduledTask -TaskName "$taskName" -Confirm:$false} catch {    Write-Host "Error: $_"    $exitCode = 1} finally {    # Remove installer    Remove-Item -Path $exeFilePath -Force}Exit $exitCode

Script di disinstallazione

# Fleet extracts the name from the installer (EXE) and saves it to PACKAGE_ID# variable$softwareName = "Notion"# Script to uninstall software as the current logged-in user.$userScript = @'$softwareName = "Notion"# Using the exact software name here is recommended to avoid# uninstalling unintended software.$softwareNameLike = "*$softwareName*"# Some uninstallers require additional flags to run silently.# Each uninstaller might use a different argument (usually it's "/S" or "/s")$uninstallArgs = "/S"$uninstallCommand = ""$exitCode = 0try {$userKey = ` 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'[array]$uninstallKeys = Get-ChildItem `    -Path @($userKey) `    -ErrorAction SilentlyContinue |        ForEach-Object { Get-ItemProperty $_.PSPath }$foundUninstaller = $falseforeach ($key in $uninstallKeys) {    # If needed, add -notlike to the comparison to exclude certain similar    # software    if ($key.DisplayName -like $softwareNameLike) {        $foundUninstaller = $true        # Get the uninstall command. Some uninstallers do not include        # 'QuietUninstallString' and require a flag to run silently.        $uninstallCommand = if ($key.QuietUninstallString) {            $key.QuietUninstallString        } else {            $key.UninstallString        }        # The uninstall command may contain command and args, like:        # "C:\Program Files\Software\uninstall.exe" --uninstall --silent        # Split the command and args        $splitArgs = $uninstallCommand.Split('"')        if ($splitArgs.Length -gt 1) {            if ($splitArgs.Length -eq 3) {                $uninstallArgs = "$( $splitArgs[2] ) $uninstallArgs".Trim()            } elseif ($splitArgs.Length -gt 3) {                Throw `                    "Uninstall command contains multiple quoted strings. " +                        "Please update the uninstall script.`n" +                        "Uninstall command: $uninstallCommand"            }            $uninstallCommand = $splitArgs[1]        }        Write-Host "Uninstall command: $uninstallCommand"        Write-Host "Uninstall args: $uninstallArgs"        $processOptions = @{            FilePath = $uninstallCommand            PassThru = $true            Wait = $true        }        if ($uninstallArgs -ne '') {            $processOptions.ArgumentList = "$uninstallArgs"        }        # Start the process and track the exit code        $process = Start-Process @processOptions        $exitCode = $process.ExitCode        # Prints the exit code        Write-Host "Uninstall exit code: $exitCode"        # Exit the loop once the software is found and uninstalled.        break    }}if (-not $foundUninstaller) {    Write-Host "Uninstaller for '$softwareName' not found."    $exitCode = 1}} catch {    Write-Host "Error: $_"    $exitCode = 1}Exit $exitCode'@$exitCode = 0# Create a script in a public folder so that it can be accessed by all users.$uninstallScriptPath = "${env:PUBLIC}/uninstall-$softwareName.ps1"$taskName = "fleet-uninstall-$softwareName"try {    Set-Content -Path $uninstallScriptPath -Value $userScript -Force    # Task properties. The task will be started by the logged in user    $action = New-ScheduledTaskAction -Execute "PowerShell.exe" `        -Argument "$uninstallScriptPath"    $trigger = New-ScheduledTaskTrigger -AtLogOn    $userName = Get-CimInstance -ClassName Win32_ComputerSystem |            Select-Object -expand UserName    $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries    # Create a task object with the properties defined above    $task = New-ScheduledTask -Action $action -Trigger $trigger `        -Settings $settings    # Register the task    Register-ScheduledTask "$taskName" -InputObject $task -User "$userName"    # keep track of the start time to cancel if taking too long to start    $startDate = Get-Date    # Start the task now that it is ready    Start-ScheduledTask -TaskName "$taskName" -TaskPath "\"    # Wait for the task to be running    $state = (Get-ScheduledTask -TaskName "$taskName").State    Write-Host "ScheduledTask is '$state'"    while ($state  -ne "Running") {        Write-Host "ScheduledTask is '$state'. Waiting to uninstall..."        $endDate = Get-Date        $elapsedTime = New-Timespan -Start $startDate -End $endDate        if ($elapsedTime.TotalSeconds -gt 120) {            Throw "Timed-out waiting for scheduled task state."        }        Start-Sleep -Seconds 1        $state = (Get-ScheduledTask -TaskName "$taskName").State    }    # Wait for the task to be done    $state = (Get-ScheduledTask -TaskName "$taskName").State    while ($state  -eq "Running") {        Write-Host "ScheduledTask is '$state'. Waiting for .exe to complete..."        $endDate = Get-Date        $elapsedTime = New-Timespan -Start $startDate -End $endDate        if ($elapsedTime.TotalSeconds -gt 120) {            Throw "Timed-out waiting for scheduled task state."        }        Start-Sleep -Seconds 10        $state = (Get-ScheduledTask -TaskName "$taskName").State    }} catch {    Write-Host "Error: $_"    $exitCode = 1} finally {    # Remove task    Write-Host "Removing ScheduledTask: $taskName."    Unregister-ScheduledTask -TaskName "$taskName" -Confirm:$false    # Remove user script    Remove-Item -Path $uninstallScriptPath -Force}Exit $exitCode
 
 

Google drive

Politica

SELECT name FROM programs WHERE name='Google Drive'

Script di installazione

# Learn more about .exe install scripts:# http://fleetdm.com/learn-more-about/exe-install-scripts$exeFilePath = "${env:INSTALLER_PATH}"try {# Add argument to install silently# Argument to make install silent depends on installer,# each installer might use different argument (usually it's "/S" or "/s")$processOptions = @{  FilePath = "$exeFilePath"  ArgumentList = "--silent --skip_launch_new --gsuite_shortcuts=false"  PassThru = $true  Wait = $true}    # Start process and track exit code$process = Start-Process @processOptions$exitCode = $process.ExitCode# Prints the exit codeWrite-Host "Install exit code: $exitCode"Exit $exitCode} catch {  Write-Host "Error: $_"  Exit 1}

Script di disinstallazione

# Fleet extracts name from installer (EXE) and saves it to PACKAGE_ID# variable$softwareName = "Google Drive"# It is recommended to use exact software name here if possible to avoid# uninstalling unintended software.$softwareNameLike = "*$softwareName*"# Some uninstallers require a flag to run silently.# Each uninstaller might use different argument (usually it's "/S" or "/s")$uninstallArgs = "/S"$machineKey = ` 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*'$machineKey32on64 = ` 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'$exitCode = 0try {[array]$uninstallKeys = Get-ChildItem `    -Path @($machineKey, $machineKey32on64) `    -ErrorAction SilentlyContinue |        ForEach-Object { Get-ItemProperty $_.PSPath }$foundUninstaller = $falseforeach ($key in $uninstallKeys) {    # If needed, add -notlike to the comparison to exclude certain similar    # software    if ($key.DisplayName -like $softwareNameLike) {        $foundUninstaller = $true        # Get the uninstall command. Some uninstallers do not include        # 'QuietUninstallString' and require a flag to run silently.        $uninstallCommand = if ($key.QuietUninstallString) {            $key.QuietUninstallString        } else {            $key.UninstallString        }        # The uninstall command may contain command and args, like:        # "C:\Program Files\Software\uninstall.exe" --uninstall --silent        # Split the command and args        $splitArgs = $uninstallCommand.Split('"')        if ($splitArgs.Length -gt 1) {            if ($splitArgs.Length -eq 3) {                $uninstallArgs = "$( $splitArgs[2] ) $uninstallArgs".Trim()            } elseif ($splitArgs.Length -gt 3) {                Throw `                    "Uninstall command contains multiple quoted strings. " +                        "Please update the uninstall script.`n" +                        "Uninstall command: $uninstallCommand"            }            $uninstallCommand = $splitArgs[1]        }        Write-Host "Uninstall command: $uninstallCommand"        Write-Host "Uninstall args: $uninstallArgs"        $processOptions = @{            FilePath = $uninstallCommand            PassThru = $true            Wait = $true        }        if ($uninstallArgs -ne '') {            $processOptions.ArgumentList = "$uninstallArgs"        }        # Start process and track exit code        $process = Start-Process @processOptions        $exitCode = $process.ExitCode        # Prints the exit code        Write-Host "Uninstall exit code: $exitCode"        # Exit the loop once the software is found and uninstalled.        break    }}if (-not $foundUninstaller) {    Write-Host "Uninstaller for '$softwareName' not found."    # Change exit code to 0 if you don't want to fail if uninstaller is not    # found. This could happen if program was already uninstalled.    $exitCode = 1}} catch {    Write-Host "Error: $_"    $exitCode = 1}Exit $exitCode
 
 

Microsoft Teams

Script di installazione

$logFile = "${env:TEMP}/fleet-install-software.log"try {$installProcess = Start-Process msiexec.exe `  -ArgumentList "/quiet /norestart ALLUSERS=1 /lv ${logFile} /i `"${env:INSTALLER_PATH}`"" `  -PassThru -Verb RunAs -WaitGet-Content $logFile -Tail 500Exit $installProcess.ExitCode} catch {  Write-Host "Error: $_"  Exit 1}

Script di disinstallazione

$product_code = "{731F6BAA-A986-45A4-8936-7C3AAAAA760B}"# Fleet uninstalls app using product code that's extracted on uploadmsiexec /quiet /x $product_codeExit $LASTEXITCODE
 
 

Microsoft Office 365

Politica

SELECT name FROM programs WHERE name LIKE 'Microsoft 365 Apps for business%'

Script di installazione

# Learn more about .exe install scripts:# http://fleetdm.com/learn-more-about/exe-install-scripts$exeFilePath = "${env:INSTALLER_PATH}"try {# Add argument to install silently# Argument to make install silent depends on installer,# each installer might use different argument (usually it's "/S" or "/s")$processOptions = @{  FilePath = "$exeFilePath"  ArgumentList = "/S"  PassThru = $true  Wait = $true}    # Start process and track exit code$process = Start-Process @processOptions$exitCode = $process.ExitCode# Prints the exit codeWrite-Host "Install exit code: $exitCode"Exit $exitCode} catch {  Write-Host "Error: $_"  Exit 1}

Script di disinstallazione

# Fleet extracts name from installer (EXE) and saves it to PACKAGE_ID# variable$softwareName = "Microsoft Office"# It is recommended to use exact software name here if possible to avoid# uninstalling unintended software.$softwareNameLike = "*$softwareName*"# Some uninstallers require a flag to run silently.# Each uninstaller might use different argument (usually it's "/S" or "/s")$uninstallArgs = "/S"$machineKey = ` 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*'$machineKey32on64 = ` 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'$exitCode = 0try {[array]$uninstallKeys = Get-ChildItem `    -Path @($machineKey, $machineKey32on64) `    -ErrorAction SilentlyContinue |        ForEach-Object { Get-ItemProperty $_.PSPath }$foundUninstaller = $falseforeach ($key in $uninstallKeys) {    # If needed, add -notlike to the comparison to exclude certain similar    # software    if ($key.DisplayName -like $softwareNameLike) {        $foundUninstaller = $true        # Get the uninstall command. Some uninstallers do not include        # 'QuietUninstallString' and require a flag to run silently.        $uninstallCommand = if ($key.QuietUninstallString) {            $key.QuietUninstallString        } else {            $key.UninstallString        }        # The uninstall command may contain command and args, like:        # "C:\Program Files\Software\uninstall.exe" --uninstall --silent        # Split the command and args        $splitArgs = $uninstallCommand.Split('"')        if ($splitArgs.Length -gt 1) {            if ($splitArgs.Length -eq 3) {                $uninstallArgs = "$( $splitArgs[2] ) $uninstallArgs".Trim()            } elseif ($splitArgs.Length -gt 3) {                Throw `                    "Uninstall command contains multiple quoted strings. " +                        "Please update the uninstall script.`n" +                        "Uninstall command: $uninstallCommand"            }            $uninstallCommand = $splitArgs[1]        }        Write-Host "Uninstall command: $uninstallCommand"        Write-Host "Uninstall args: $uninstallArgs"        $processOptions = @{            FilePath = $uninstallCommand            PassThru = $true            Wait = $true        }        if ($uninstallArgs -ne '') {            $processOptions.ArgumentList = "$uninstallArgs"        }        # Start process and track exit code        $process = Start-Process @processOptions        $exitCode = $process.ExitCode        # Prints the exit code        Write-Host "Uninstall exit code: $exitCode"        # Exit the loop once the software is found and uninstalled.        break    }}if (-not $foundUninstaller) {    Write-Host "Uninstaller for '$softwareName' not found."    # Change exit code to 0 if you don't want to fail if uninstaller is not    # found. This could happen if program was already uninstalled.    $exitCode = 1}} catch {    Write-Host "Error: $_"    $exitCode = 1}Exit $exitCode
 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

Questo articolo è stato utile?

Give feedback about this article

Non trovi quello che stai cercando?

Il nostro team di assistenza clienti è qui per te.

Contattaci

Knowledge Base Software powered by Helpjuice