Show-InstallationWelcome doesn't work for required deployments through SCCM

When I deploy the application as available or the user hits Retry the show-installationwelcome works. When I deploy the software as required it through SCCM the welcome message doesn’t show and it force closes applications without warning.

Show-InstallationWelcome -CloseApps ‘pwc,Bentley.Licensing.Service,Bentley.Connection.Client,OpenBridgeDesigner,OpenBridgeModeler,OpenRoadsDesigner,LumenRT,microstation’ -PersistPrompt -BlockExecution -AllowDefer -DeferTimes 3

Please help because this is biting me in the butt really bad.

You appear to be detecting multiple applications that could possibly be running when the application deployment commences - I use this detection quite often with different applications without issue (I’m using PSADT v 3.9.3 for all my deployments - albeit deployed via Intune)

What is not clear from your snippet of code is:

  • What command line you use to install this from SCCM?
  • What version of PSADT are you using?

I vaguely remember there may have been a similar issue with an earlier version of PSADT which was resolved at some stage, so updating your PSADT might solve this.

  • Is this within the PRE-INSTALLATION section of your Deploy-Application.ps1?
  • Do you have any other commands after the [String]$installPhase = 'Pre-Installation' line and before this line?

N.B. To make it more obvious to our user base, when the Close Apps prompt is displayed, I tend to include human readable names for each application which needs to be closed - so, using your code as an example; these are the names after the “=” and before the “,

Show-InstallationWelcome -CloseApps 'pwc=ProjectWise V8i,Bentley.Licensing.Service=Connect License Client,Bentley.Connection.Client=Connection Client,OpenBridgeDesigner=OpenBridge Designer,OpenBridgeModeler=OpenBridge Modeler,OpenRoadsDesigner=OpenRoads Designer,LumenRT=LumenRT,microstation=MicroStation' -PersistPrompt -BlockExecution -AllowDefer -DeferTimes 3

Hopefully the above will get you nearer to a solution.

1 Like

deploy-application.exe install interactive
PSADT v3.9.3

Yes, this is part of the pre-installation. Thanks for the human readable suggestion. I haven’t seen that anywhere in any of the documentation I have read thus far.

When deployed as available these deployments work 100% as expected.

If ($deploymentType -ine ‘Uninstall’ -and $deploymentType -ine ‘Repair’) {
##===============================================
##
PRE-INSTALLATION
##*===============================================
[String]$installPhase = ‘Pre-Installation’

    ## Show Welcome Message
    Show-InstallationWelcome -CloseApps 'pwc,OpenBridgeDesigner,OpenBridgeModeler,OpenRoadsDesigner,LumenRT,microstation' -AllowDefer -DeferTimes 3 -PersistPrompt

    ## Show Progress Message (with the default message)
    Show-InstallationProgress

    ## <Perform Pre-Installation tasks here>
    
    #Uninstalling previous version
	Execute-Process -Path "$dirFiles\Setup_CONNECTIONClientx64_23.00.00.10.exe" -Parameters '/uninstall /quiet' -WindowStyle 'Hidden'

    ##*===============================================
    ##* INSTALLATION
    ##*===============================================
    [String]$installPhase = 'Installation'

    ## Handle Zero-Config MSI Installations
    If ($useDefaultMsi) {
        [Hashtable]$ExecuteDefaultMSISplat = @{ Action = 'Install'; Path = $defaultMsiFile }; If ($defaultMstFile) {
            $ExecuteDefaultMSISplat.Add('Transform', $defaultMstFile)
        }
        Execute-MSI @ExecuteDefaultMSISplat; If ($defaultMspFiles) {
            $defaultMspFiles | ForEach-Object { Execute-MSI -Action 'Patch' -Path $_ }
        }
    }

    ## <Perform Installation tasks here>
    Execute-Process -Path "$dirFiles\Setup_CONNECTIONClientx64_23.00.00.10.exe" -Parameters 'BeCheckUpdateOption=3 BeCheckUpdateIsEnabled=0 /q /s NoStartPostInstall=1 InstallDesktopShortcut=0' -WindowStyle 'Hidden' -WaitForMsiExec

    ##*===============================================
    ##* POST-INSTALLATION
    ##*===============================================
    [String]$installPhase = 'Post-Installation'

    ## <Perform Post-Installation tasks here>

    # Check if a user is currently logged in
    if ($env:USERNAME) {
    #Execute the process as the current user
    Execute-ProcessAsUser -Path "C:\Program Files\Common Files\Bentley Shared\CONNECTION Client\Bentley.Connect.Client.exe"
    }
    ## Display a message at the end of the install
    If (-not $useDefaultMsi) {
        Show-InstallationPrompt -Message 'Connection Client x64 has been installed' -ButtonRightText 'OK' -Icon Information -NoWait
    }
}

I wonder…
Are you deploying this application as System or as a user?
If System… What if you use ServiceUi.exe and remove the interactive seting in your command line?

So your command line would be:

ServiceUI.exe -Process:explorer.exe Deploy-Application.exe -DeploymentType "Install"

As this would bring any dialogs that would be displayed in the System context into the Users Context.

Just a thought…

N.B. ServiceUI.exe is part of the Microsoft Deployment Toolkit (MDT), available to download here:
https://www.microsoft.com/en-us/download/details.aspx?id=54259

1 Like

Hi,

In SCCM have you enabled the configuration option “Allow users to view and interact with the program installation” under the “User Experience” Tab on the deployment type you are using for your required deployment?

Can you provide a log file of an installation that doesn’t show any warnings?

BR

1 Like

I did that to no effect. Which log file?

The PSADT install log file for the application. Default location is C:\Windows\Logs\Software
Naming is like: $appVendor_$appName_$appVersion_$appLang_$appRevision_PSAppDeployToolkit_Install.log

1 Like

Hi,

This is the same issue I ran into and why we use PSEXEC.

Might be of help.