Global Secure Access Client / .exe im Uninstall wiederverwenden

Hallo,
wir wollen den Microsoft Global Secure Access Client paketieren. Hier wird eine .exe genutzt, die den Client als solches installiert. (mit /install /quiet /norestart)
Nach der Installation mit dem Package Recorder, erkennt er korrekterweise den msiexec. /X-Eintrag in den Uninstall Strings. Allerdings wird hier noch eine weitere Software, Last Mile Telemetry, mit installiert.

Der offizielle Uninstall wird von Microsoft so beschrieben, dass man die .exe für die Installation nimmt, und mit „/uninstall /quiet /norestart“ startet. Der /uninstall-Befehl mit der .exe entfernt den Client gänzlich - wenn nur der msiexec /X Befehl ausgeführt wird, kommt es bei einer erneuten Installation über das Paket zum Fehler „PSADT:Die DisplayName-Eigenschaft kann nicht gefunden werden“. Nach ein wenig Forschen fand ich heraus, dass hier noch die zusätzliche Software, „LastMile Telemetry“ installiert wird, die auch deinstalliert sein muss, damit der erneute Install mit der .exe korrekt läuft. (Ansonsten kommt der .exe Installer mit einer Aufforderung zum Repair / Uninstall hoch, was beim Paket allerdings übergangen wird)

Nun meine Frage: Wie kann ich zum einen (das wäre die bevorzugte Variante, wenn das geht), beim Uninstall nicht das vom Package Recorder erkannte „Msiexec. /X{…}“ nutzen, sondern wieder den .exe Installer, aber dann mit dem „/uninstall …“ Argument?
Oder: Wie kann ich neben dem „Msiexec /X{…}“ für den Global Secure Access Client, auch die Detection und den uninstall per „Msiexec /X{…}“ für den LastMile Telemetry-Client über den Package Recorder abbilden?

Wir nutzen zur Verteilung Empirum.

Grüße🙋‍♂️

Hallo janmalte,

überschreibe doch einfach den „Msiexec /X{…}“ in der Deinstallation mit dem .exe Installer und in die zweite Zeile dann die uninstall Parameter. Dann sollte die Deinstallation wie gewünscht laufen.

Alternativ könnte man auch den „Msiexec /X{…}“ für den LastMile Telemetry-Client als Befehl im Bereich nach der Deinstallation eintragen.

Gruß
C.Kreksch

Hallo CKreksch,

ich habs nun mal anders probiert und die .exe auch nochmal als Support-Datei hinzugefügt, und dann wie Du geschrieben hast, einen Befehl für nach der Installation hinzugefügt, der die .exe aus den SupportFiles dann ausführt - klappt soweit👍 Wird sich dann bei automatischen Versionsupdates des Clients noch zeigen wie es sich dann verhält - evtl. muss man sonst ein Skript bauen, welches dann die jeweils richtige GUID findet und deinstalliert.

Danke & Gruß

1 „Gefällt mir“

Hallo,

habe mich hier eigentlich nur angemeldet, um auf diesen Beitrag zu antworten :wink:
In meinem Fall deinstalliert /uninstall /silent /noreboot eben nicht diesen LastMile-Client.
Initiale Installation und Deinstallation des Pakets funktioniert, erneute Installation nach Deinstallation nicht.

Komme in meiner Umgebung nicht drumherum, im PSADT Uninstall den msiexec /x des LastMile Installers auszulesen und proaktiv zu deinstallieren.

Dies nur zur Info :wink:

Bspw. so:

## <Perform Uninstallation tasks here>
Start-ADTProcess -FilePath 'GlobalSecureAccessClient.exe' -ArgumentList '/uninstall /quiet /norestart' -IgnoreExitCodes 1,2


Write-ADTLogEntry -Message "Looking for LastMile Telemetry Client" -Source 'Custom-Uninstall'

$uninstallPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
$found = $false

Get-ChildItem -Path $uninstallPath | ForEach-Object {
    $displayName = (Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue).DisplayName
    if ($displayName -like "*LastMile Telemetry*") {
        $uninstallString = (Get-ItemProperty $_.PSPath).UninstallString
        Write-Output $uninstallString
        $found = $true
    }
}

if (-not $found) {
    Write-ADTLogEntry -Message "LastMile Telemetry Client not found. Proceeding." -Source 'Custom-Uninstall'
} else {
    # Extract GUID from the uninstall string if present
    if ($uninstallString -match '{([A-F0-9\-]+)}') {
        $guid = $matches[1]
        Write-ADTLogEntry -Message "LastMile Telemetry Client found with GUID $guid, starting uninstall process." -Source 'Custom-Uninstall'
        Start-ADTMsiProcess -Action 'Uninstall' -ProductCode "{$guid}"


    } else {
        Write-ADTLogEntry -Message "No valid  GUID found for uninstall. Uninstall may failed." -Source 'Custom-Uninstall'
    }
}
1 „Gefällt mir“