Doppelte Symbole im Menü Infobereichsymbole nach Auto Update mit Clickonce unter Windows 7. Was kann ich dagegen tun?

Beantwortet Doppelte Symbole im Menü Infobereichsymbole nach Auto Update mit Clickonce unter Windows 7. Was kann ich dagegen tun?

  • Montag, 16. April 2012 14:17
     
     
    Ich habe eine alte Clickonce Anwendung in c# erweitert.  Bei meinen Test ist mir aufgefallen, dass Sobald ich ein Update auf einem Windows 7 Rechner
    fahre ich im Menü Infobereichsymbole 2 Symbole besitze. Bei jeden weiteren Update kommt noch mal 1 hinzu. Diese Symbole werden auch bei der deinstallation
    der Aplication nicht entfernt . 1 der Symbole ist im Status Symbol und Benachrichtigungen anzeigen, alle anderen im Status Nur Benachrichtigungen anzeigen.
    Wie kann ich es vermeiden, dass Infobereichsmbole Menü des Anwenders zu zu müllen?

Alle Antworten

  • Montag, 16. April 2012 15:06
    Moderator
     
     

    Hallo manualjon,

    Sind die zwei Symbole auch tatsächlich existent, oder ist das nur ein Fehler beim Aktualisieren/Rendern des Infobereichs? - Das findes Du am besten heraus, indem Du mit der Maus über die zwei Symbole fährst: Verschwindet dabei irgendeins?

    Außerdem: Versuch doch bitte beim Schließen der Form, die das NotifyIcon enthält, [NotifyIcon].Visible = false und [NotifyIcon].Dispose() aufzurufen.

    Edit: Tatsächlich. Das von dir gemeldete Verhalten, scheinen auch andere gemeldet zu haben.

    siehe: Windows 7 notification area behavior:
    http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/c33ab558-7fd5-4330-a985-9702358472d0/

    Update 977074 behebt einige bekannte Probleme in Zusammenhang mit dem Infobereich:

    A program icon in the notification area may be lost after the corresponding program is updated in Windows 7 http://support.microsoft.com/default.aspx?scid=kb;en-us;976883&sd=rss&spid=14498

    Gruß
    Marcel


  • Dienstag, 17. April 2012 08:18
     
     

    Danke für die schnelle Antwort,

     die Symbole existieren tatsächlich.  Wenn ich aber denn Status auf anzeigen stelle bekomme ich die Meldung dass das Benachrichtigungssymbol ist derzeit nicht Aktiv ist.

     

    manualjon

  • Dienstag, 17. April 2012 15:52
    Moderator
     
     Beantwortet

    Hallo manualjon,

    Nach weiteren Tests habe ich nun meine Meinung etwas revidiert: Das Problem, das Du schilderst, scheint nur indirekt mit dem ClickOnce-Deployment zu tun zu haben. Eher mit der Art und Weise, wie die Infobereich-Symbole von Windows 7 intern verwaltet werden und damit dass Windows sich wenig um die Eigenarten von ClickOnce schert.

    Wenn man eine Anwendung startet, die über ein NotifyIcon ein Symbol im Infobereich anzeigt, cacht Windows 7 dieses Icon sofort (aus Performanzgründen). Solange die Shell nicht neu gestartet wird, bleiben neu hinzugefügte Symbole im Cache und werden nicht entfernt. Im Fall einer Nicht-ClickOnce-Awendung hat das kaum Folgen, denn - auch wenn das Symbol aus Systemsteuerung\Alle Systemsteuerungselemente\Infobereichsymbole nicht entfernt werden sollte - so wird dies im Normalfall nach Deinstallation der Software und Neustart des Systems (und hiermit von explorer.exe) geschehen. Auch im Fall von mißlungenen Deinstallationen etc., wo das Symbol im Cache verbleibt, ist das nicht ganz so problematisch, da das Symbol in der Liste meist ein einziges Mal auftaucht.

    Bei aktualisierbaren ClickOnce-Anwendungen jedoch ist es möglich, dass während einer einzigen Windows-Sitzung mehrere Aktualisierungsvorgänge stattfinden. Da jede heruntergeladene Anwendungs-Version für Windows eine separate Anwendung ist (jede wird ja auch in einen separaten Ordner unter %localappdata%\Apps\2.0\[Hash] gespeichert), wird für jede Version ein Symbol gecacht. So endet man mit doppelten und dreifachen Einträgen in der Liste "Infobereichsymbole". Das ist natürlich ungünstig für den Benutzer, der über Klicken in der Taskleiste (ausgeblendete Symbole einblenden > Anpassen...) die Anzeige der Infobereichsymbole definieren möchte, da er - schlicht und ergreifend - nicht weiß, welches der vielen gleich aussehenden Symbole nun zur letzten Version seiner ClickOnce-Anwendung gehört.

    NotifyIcon.Icon mehrfach vorhanden


    Wenn man Vollzugriff auf das System hat, könnte man best. Caching-Keys in der Registrierung löschen (HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify | IconStreams und PastIconsStream) und anschließend explorer.exe beenden & neu starten. Aber diesen "Luxus" haben wohl die wenigsten Benutzer. Falls diese Rechte existieren, könnte man freilich beim Beenden der Anwendung dafür sorgen, dass zumindest der Cache gelöscht wird (besser noch die Shell neu starten), ansonsten könnte ich mir auch einen Dienst vorstellen, der in einem privilegierten Konto läuft und diese Bereinigungsaufgabe übernimmt. Schön ist das nicht.

    Ich überlege mir, einen Bericht diesbezüglich auf Microsoft Connect zu schreiben.

    Marcel


  • Mittwoch, 18. April 2012 06:14
    Moderator
     
     Beantwortet
  • Mittwoch, 18. April 2012 08:46
     
     

    Hallo,

    Das Problem ist das, auch wenn ich höchstens 1 Update pro Windowssitzung mache,  die alten Symbole nicht verschwinden. Dadurch würden sich in den nächsten paar Jahren für diese Applikation 20~30 Symbole in diesem Menü ansammeln.  Gibt es eine Möglichkeit das wenigstens bei Neustart die Überzählige Symbole verschwinden.

    manualjon

  • Mittwoch, 18. April 2012 09:06
    Moderator
     
     Beantwortet

    Hallo manualjon,

    Ich würde jetzt erst einmal die Reaktion der Spezialisten auf Microsoft Connect abwarten. Das dauert für gewöhnlich einige Tage. Als Zwischenlösung könntest Du - falls deine Anwendung Zugriff auf die Registry hat - die o.g. Schlüssel-Werte löschen. Nach Neustart des Systems sind dann alle Symbole deiner ClickOnce-Anwendung weg. Beim nächtsen Start der Anwendung wird das Symbol wieder gecacht.

    Gruß
    Marcel

  • Samstag, 21. April 2012 08:25
    Moderator
     
     

    Hallo manualjon,

    Das Windows Forms Team hat die oben erwähnte Connect-Fehlermeldung als "nicht lösbar" eingestuft.
    Der angebotene Workaround:

    How do I clear past items from the Customize Notifications dialog box in Windows XP?
    http://support.microsoft.com/default.aspx?scid=kb;en-us;283084

    Microsoft Fix-it
    http://go.microsoft.com/?linkid=9643521

    Ich bin der Meinung, dass dieses Workaround (das im Wesentlichen das ist, was ich als Lösung bereits angeboten habe) in einem Enterprise-Umfeld nicht zumutbar ist. Dadurch werden zum einen *alle* gecachten Icons entfernt, nicht nur jene, die beim ClickOnce update zusätzlich und überflüssigerweise hinzugekommen sind. Zum anderen ist der Neustart von explorer.exe - wie bereits beschrieben - mit weiteren Problemen behaftet.  Hoffen wir, dass irgendwann doch die Zeit für eine echte Lösung da ist.

    Gruß
    Marcel



  • Montag, 23. April 2012 08:34
     
     

    Erst mal  vielen Dank für Ihre Hilfe,

    was ich mich noch Frage da es  Windows 7 ja jetzt schon eine Weile gibt ist " Gibt es eine neuere Methode als Click Once um eine Software auf vielen Kundenrechner zu Installieren und Updates zu installieren, Bzw. wird Click Once noch Verwendet? "

    manualjon

  • Montag, 23. April 2012 09:13
    Moderator
     
     Beantwortet

    ClickOnce wird natürlich noch verwendet (auch intern bei Microsoft) und ist für die Verteilung von .NET-Anwendungen im Intranet schon optimal. Das Produkt wurde und wird in konstanten Abständen aktualisiert (.NET 3.5, .NET 4.0). Nur weil man darüber nicht so oft was liest, heißt das noch lange nicht, dass die Technologie abgeschrieben wurde. Deployment-Tools gibt es wie Sand am Meer: jedes nennenswerte Setup-Produkt verfügt über unterstützende Verteilungstechnik. Aber auch aus dem Haus Microsoft stammen einige Produkte: Windows Intune, Microsoft System Management Server etc.

    Edit: Für weniger anspruchsvolle Szenarien, sei hier auf ein freies, aber effektives Deployment-Tool hingewiesen:

    Updatesystem.NET von Maximilian Krauß:
    http://www.updatesystem.net/Features/

    Gruß
    Marcel