As promised in Application of the Week – LastPass (Part 1) here’s the PowerShell script to create a Smart Icon for LastPass.
Two comments:
– Compared to the PowerShell scripts I’ve used so far, this script also uses Set-LiquitEntityFilter. Two filters are set for the first two actions. The AND operator is needed because both have to be valid for the action to run.
– Two filtersets use ‘processexsist’ which was undocumented. So this has been added to supported filters in the documentation.
Import-Module "C:Program Files (x86)Liquit WorkspacePowerShell3.0Liquit.Server.PowerShell.dll" -Prefix "Liquit"
$liquitZoneUsername = "localadmin"
$liquitZonePassword = Read-Host "Enter Password" -AsSecureString
$liquitCredentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $liquitZoneUsername, $liquitZonePassword
$liquitZone = "https://yourliquitzone.liquit.com"
$lastpassIconURL = "https://www.setupcommander.com/ico/lastpass.ico"
$lastpassIconPath = "c:templastpass.ico"
$webClient = New-Object System.Net.WebClient
$webClient.DownloadFile($lastpassIconURL,$lastpassIconPath)
$iconContent = New-LiquitContent -Path $lastpassIconPath
$packageName = "LastPass"
$packageDisplayName = "LastPass"
$packageDescription = "LastPass"
$liquitContext = Connect-LiquitWorkspace -URI $liquitZone -Credential $liquitCredentials
$package = New-LiquitPackage -Name $packageName `
-Type "Launch" `
-DisplayName $packageDisplayName `
-Description $packageDescription `
-Priority 100 `
-Enabled $true `
-Offline $True `
-Web $false `
-Icon $iconContent
#create the snapshot for this package
$snapshot = New-LiquitPackageSnapshot -Package $package
#define launch action set
$actionset = New-LiquitActionSet -snapshot $snapshot `
-Type Launch `
-name 'Launch' `
-Enabled $true `
-Frequency Always `
-Process StopAtFirstEffectiveAction
#
#define the first launch action
#
$actionset_action1 = New-LiquitAction -ActionSet $actionset `
-Name 'Start LastApp for Applications' `
-Type 'processstart' `
-Enabled $true `
-IgnoreErrors $false `
-Settings @{name = '${ProgramFiles}LastPasslastapp.exe'; parameters = "";} `
-Context User
#define the filter set for the first action
$filterset1 = New-LiquitFilterSet -Action $actionset_action1
#add a filter to the first action
$filter1_1 = new-LiquitFilter -FilterSet $filterset1 -type fileexists -Settings @{path = '${ProgramFiles}LastPasslastapp.exe';} -Value "true"
#add a filter to the first action
$filter1_2 = new-LiquitFilter -FilterSet $filterset1 -type processexists -Settings @{name = 'lastapp';} -Value "true"
#set the operator for the entity filter to AND
Set-LiquitEntityFilter -Action $actionset_action1 -Operator Or
#
#define the second launch action
#
$actionset_action2 = New-LiquitAction -ActionSet $actionset `
-Name 'Start LastPass for Windows Desktop' `
-Type 'processstart' `
-Enabled $true `
-IgnoreErrors $false `
-Settings @{name = '${ProgramFiles32}LastPassLastPassBroker.exe'; parameters = "";} `
-Context User
#define the filter set for the second action
$filterset2 = New-LiquitFilterSet -Action $actionset_action2
#add a process exist filter to the second action
$filter2_1 = new-LiquitFilter -FilterSet $filterset2 -type processexists -Settings @{name = 'LastPassBroker';} -Value "true"
#add a fileexist filter to the second action
$filter2_2 = new-LiquitFilter -FilterSet $filterset2 -type fileexists -Settings @{path = '${ProgramFiles32}LastPassLastPassBroker.exe';} -Value "true"
#set the operator for the entity filter to AND
Set-LiquitEntityFilter -Action $actionset_action2 -Operator Or
#
#define the third launch action
#
$actionset_action3 = New-LiquitAction -ActionSet $actionset `
-Name 'Start LastPass Microsoft Store App' `
-Type 'processstart' `
-Enabled $true `
-IgnoreErrors $false `
-Settings @{name = '${SystemRoot}explorer.exe'; parameters = "Shell:AppsFolderLastPass.LastPass_qq0fmhteeht3j!App";} `
-Context User
#define the filter set for the third action
$filterset3 = New-LiquitFilterSet -Action $actionset_action3
#add a filter to the first action
$filter3 = new-LiquitFilter -FilterSet $filterset3 -type fileexists -Settings @{path = '${ProgramFiles}WindowsAppsLastPass.LastPass_4.3.0.0_x64__sbg7naapqq8fjAppxManifest.xml';} -Value "true"
#
#define the fourth launch action
#
$actionset_action4 = New-LiquitAction -ActionSet $actionset `
-Name 'Open LastPass Website' `
-Type 'openurl' `
-Enabled $true `
-IgnoreErrors $false `
-Settings @{ url = 'https://lastpass.com'; browser = 0;} `
-Context User
#publish the package
Publish-LiquitPackageSnapshot -Snapshot $snapshot -stage Production
#set the entitlement
$identity = Get-LiquitIdentity -id "LOCALeveryone"
New-LiquitPackageEntitlement -Package $package -Identity $identity -Publish Workspace