57 lines
4.0 KiB
Markdown
57 lines
4.0 KiB
Markdown
# Optionale Desktop-Verknüpfung für alle Benutzer
|
|
|
|
## Befund
|
|
|
|
Bis Version 2.2.3 war die Option **Desktop-Verknüpfung für alle Benutzer erstellen** standardmäßig aktiviert. Der Installer verwaltet den Link über Windows Script Host im von `Environment.SpecialFolder.CommonDesktopDirectory` gelieferten gemeinsamen Desktop-Verzeichnis, üblicherweise `%PUBLIC%\Desktop`.
|
|
|
|
Obwohl der Link fachlich optional war, lagen alle Zugriffe innerhalb der transaktionskritischen Windows-Integrationsphase. Eine `UnauthorizedAccessException`, COM-/WSH-Exception oder Zustandsabweichung konnte daher nach bereits erfolgreicher Payload-Aktivierung einen `SETUP-WINDOWS-INTEGRATION`-Fehler und den vollständigen Rollback auslösen. Betroffen waren nicht nur das Erstellen, sondern fünf Pfade:
|
|
|
|
1. Lesen des vorhandenen Links für den Rollback-Snapshot.
|
|
2. Erstellen oder Entfernen entsprechend der Setup-Auswahl.
|
|
3. Rücklesende Validierung des gewünschten Zustands.
|
|
4. Wiederherstellung des vorherigen Links während eines Rollbacks.
|
|
5. Entfernen und Prüfen bei der Deinstallation.
|
|
|
|
Der konkrete Berechtigungsgeber kann erst anhand des vollständigen `setup-*.log`, der effektiven ACL und gegebenenfalls EDR-Ereignisse bestimmt werden. Unabhängig davon war die bisherige Kritikalität für eine reine Komfortfunktion zu hoch.
|
|
|
|
## Fix in Version 2.2.4
|
|
|
|
- Die Desktop-Option ist standardmäßig abgewählt und muss bewusst aktiviert werden.
|
|
- Alle fünf Desktop-Pfade laufen über eine gemeinsame optionale Exception-Grenze.
|
|
- Jeder Fehler wird mit Exceptiontyp, HRESULT, Stacktrace, Rolle und Pfad als `optional_windows_integration_warning` protokolliert.
|
|
- Die Setup-Oberfläche zeigt eine Warnung und erklärt ausdrücklich, dass die Kerninstallation fortgesetzt wird.
|
|
- Auch eine Exception der Warnungsweiterleitung wird isoliert und als `optional_windows_integration_report_failed` protokolliert.
|
|
- Ein Desktop-Snapshot, der wegen fehlender Rechte nicht gelesen werden konnte, wird beim späteren Rollback nicht erfunden oder überschrieben.
|
|
- Ein fehlgeschlagener Desktop-Zugriff bei der Deinstallation kann einen alten Link zurücklassen, verhindert aber nicht die Entfernung der Anwendung.
|
|
|
|
Der Installer ändert keine ACLs, übernimmt keinen Besitz und umgeht keine Sicherheitsrichtlinie. Die Sicherheitsentscheidung des Systems bleibt bestehen; lediglich die optionale Verknüpfung wird aus der Kerntransaktion entfernt.
|
|
|
|
## Weiterhin verpflichtende Integration
|
|
|
|
Diese Bestandteile bleiben transaktionskritisch:
|
|
|
|
- Startmenü-Verknüpfung für alle Benutzer,
|
|
- Uninstaller unter `%ProgramData%\BizTalkPlatformManagementTool\Setup`,
|
|
- Uninstall-Eintrag unter `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall`.
|
|
|
|
Ein Fehler dieser Elemente verhindert weiterhin einen inkonsistenten Erfolg und löst bei Installation oder Update den Rollback aus.
|
|
|
|
## Diagnose und Abnahme
|
|
|
|
Bei nicht angeforderter oder erfolgreicher Desktop-Operation enthält das Log `event=optional_windows_integration_completed`. Bei einem tolerierten Fehler enthält es:
|
|
|
|
```text
|
|
event=optional_windows_integration_warning role=desktop_shortcut_... path="..." exception_type=... hresult=...
|
|
event=setup_completed result=success_with_optional_desktop_shortcut_warning optional_desktop_shortcut_warning=True
|
|
```
|
|
|
|
Für die Windows-Abnahme:
|
|
|
|
1. Setup 2.2.4 zunächst mit abgewählter Desktop-Option installieren oder aktualisieren.
|
|
2. `setup_version=2.2.4.0`, erfolgreichen Kernabschluss, Startmenü-Link, Uninstaller und Registry prüfen.
|
|
3. Die Option in einem weiteren Update gezielt aktivieren. Wird der gemeinsame Desktop blockiert, muss das Setup mit Warnung erfolgreich bleiben und die Anwendung startbar sein.
|
|
4. Danach **Diagnose** und einen Dry-run ausführen.
|
|
5. Deinstallation separat prüfen; ein nicht löschbarer optionaler Desktop-Link darf höchstens als Warnung verbleiben.
|
|
|
|
Die portable Regressionstestsuite injiziert einen ACL-Fehler, eine Validierungsabweichung und einen fehlerhaften Warnungs-Sink. Reale `%PUBLIC%\Desktop`-ACLs, WSH/COM, Endpoint-Schutz und Gruppenrichtlinien bleiben auf Windows zu validieren.
|