C# Programm inkompatibel mit XP
-
Ich habe in Visual 2010 ein C# Programm mit Aero geschrieben, welches unter Windows 7 tadellos funktioniert. Allerdings musste ich feststellen, dass es unter Vista visuelle Probleme gibt und unter XP sogar kaum verwendbar ist.
Probleme unter Vista:
Statt Aero erscheinen bestimmte Bereiche schwarz. (sonst geht alles)
Probleme unter XP:
.NET Fehlermeldungen beim Start und bei jeder Aktion
Beim Start wird kein Code ausgeführt (Form1 Load wird ignoriert)
(Aero geht natürlich sowieso nicht)Ich will aber unter Windows 7 nicht auf Aero verzichten. Deshalb sehe ich derzeit zwei Möglichkeiten:
1. Für XP und Vista programmiere ich eine Fehlermeldung mit "operating system not supported"
2. Für XP und Vista erscheint eine Kopie von Form 1, die auf Aero verzichtet, allerdings wahrscheinlich weniger Funktionen haben wird. (vielleicht noch mit einer Startmeldung, dass einige Funktionen fehlen)Was denkt ihr? Was soll ich machen?
PS: Das Programm werde ich übrigens auf meiner Website zum Download anbieten, deshalb frage ich mich, ob ich XP und Vista Nutzer ignorieren kann oder doch nicht.
-
Girly schrieb:
...
Was erwartest du? Da kannst du ja gleich ein Framework nehmen, damit programmieren und kompilieren und dann ältere Versionen des Frameworks zulassen, die eventuell neuere Sachen nicht draufhat. Windows ist (eigentlich) abwärts-, aber kaum aufwärtkompatibel.
Da fällt mir ein: welche Version von .NET verwendest du beim Build, welche sind auf den Zielplattformen?
-
Girly schrieb:
Ich habe in Visual 2010 ein C# Programm mit Aero geschrieben, welches unter Windows 7 tadellos funktioniert. Allerdings musste ich feststellen, dass es unter Vista visuelle Probleme gibt und unter XP sogar kaum verwendbar ist.
Ich weiß zwar nichts was an Aero-Features für die Bedienung wirklich wichtig wäre, aber Aero ist überhaupt erst mit Vista eingeführt wurden. Dem zufolge macht wundert es auch nicht, das wenn man Features einbaut die Aero erzwingen, dies unter XP Probleme bereitet.
Wobei mich fragt was du von Aero spezielles nutzt, das es unter XP und Vista Probleme macht (unter XP müsste es einfach keine Aero-Effekte geben).
Girly schrieb:
Was denkt ihr? Was soll ich machen?
Was an speziellen Aerobehandlungen benötigst du den? Ich habe bislang noch kein Programm erlebt was hier auf spezielle Umsetzungen (die ich persönlich auch Unsinn halte) eingeht.
-
Glühbirne schrieb:
Windows ist (eigentlich) abwärts-, aber kaum aufwärtkompatibel.
Windows ist gut abwärtskompatibel, d.h. die meisten Programme für Windows X laufen auch auf Windows X+1 etc. noch.
Da Windows das OS ist, und damit den Standard festlegt, macht die Formulierung "aufwärtkompatibel" auf Windows bezogen IMO keinen Sinn.
Wenn, dann kann damit nur gemeint sein, ob ältere Windows Versionen auch auf neuerer Hardware laufen werden. Aber darum geht's hier ja nicht.----
Da Windows sehr gut "abwärtskompatibel" ist, sind die meisten Windows-Programme auch gut "aufwärtkompatibel", d.h. laufen auch auf neueren Windows-Versionen noch.
Und Windows Programme sind grundsätzlich immer so "abwärtskompatibel" wie man sie schreibt. Soll heissen: wenn man ein Programm schreibt, dass Funktionen verwendet, die es erst ab Windows Vista gibt, ...
dann gehts halt auf XP nicht.
-
Ich habe nun doch eine bessere Lösung gefunden. Der Aero Code wird je nach OS einfach weggelassen, indem mein Programm den Build prüft.
-
Windows ist gut abwärtskompatibel, d.h. die meisten Programme für Windows X laufen auch auf Windows X+1 etc. noch.
Da Windows das OS ist, und damit den Standard festlegt, macht die Formulierung "aufwärtkompatibel" auf Windows bezogen IMO keinen Sinn.
Wenn, dann kann damit nur gemeint sein, ob ältere Windows Versionen auch auf neuerer Hardware laufen werden. Aber darum geht's hier ja nicht.----
Da Windows sehr gut "abwärtskompatibel" ist, sind die meisten Windows-Programme auch gut "aufwärtkompatibel", d.h. laufen auch auf neueren Windows-Versionen noch.
Und Windows Programme sind grundsätzlich immer so "abwärtskompatibel" wie man sie schreibt. Soll heissen: wenn man ein Programm schreibt, dass Funktionen verwendet, die es erst ab Windows Vista gibt, ... dann gehts halt auf XP nicht.
hustbaer
Ich habe nun doch eine bessere Lösung gefunden. Der Aero Code wird je nach OS einfach weggelassen, indem mein Programm den Build prüft.
Hab noch nie Aero - Code gesehen glaub ich
-
WindowGlassBehavior
WindowGlassActivatorMein Behavior prüft ob Aero möglich ist (Windows Version > 5) und Aero auch ein geschaltet ist (DwmIsCompositionEnabled).
Wenn nicht wird es nicht ausgeführt und der normale Hintergrund wird angezeigt.D.h. Ein Passenden Hintergrund als fallback einstellen und Aero ein knipsen. Schon ist es kompatibel mit XP sowie Vista/7.
Bei Windows 7 kommt ja noch die neuen features der Startleiste dazu (Habe ich noch nicht verwendet). Die Applikation sollte immer so gestaltet werden das wenn er es nicht nutzen kann es entweder fehlt oder Automatisch eine alternative erscheint. Eine information an den Benutzer ist irrelevant und evtl störend.
-
Eine Windows Presentation Foundation-Applikation hätte da deutlich weniger Probleme ...
Die sieht unter Windows XP, Windows Vista, Windows 7 und Windows Server 2003, 2008/R2 gleich aus.
-
Was hat das mit Aero zu tun?
Beachte das wir von Aero effekten Sprechen die unter XP nicht funktionieren. Nicht von den normalen Aero styles.
Aero effekte muss man unter WPF explizit aktivieren (Siehe mein Beispiel) und für XP braucht man ein fallback.
D.h. die WPF Applikationen können bei Windows Vista/7 mit benutzten Aero effekten anders aussehen als unter XP ohne Aero.Nur wenn du auf Aero Effekte verzichtest und alle Controls selber Styles, nur dann ist es auf allen Systemen identisch. Am sonsten greift bei den normalen Controls das Theming und er lädt die Luna styled Controls bei XP und die Aero styled Controls unter Vista/7. (Und die Classic styles wenn Windows auf Classic gestellt wurde) System nativ halt.