Hallo,
Hi!
ich weiß, ich bin ein bisschen spät dran, aber ich will meine
Du bist nicht spät dran - Vista SP1 ist eh’ noch nicht draußen
Anwendung unter Vista zum laufen kriegen. Leider besitze ich
dieses System noch nicht selber (und kann damit auch gerne
warten…), aber meine Kunden würde sich sicher doch darüber
freuen.
Frage 1: Welche Punkte muss ich beachten?
Einen Punkt habe ich schon selbst (schmerzlich) gefunden, und
zwar, dass ich nicht mehr in den Anwendungsordner schreiben
kann. Bei Benutzerdaten ist das nicht so tragisch, die
transferiere ich nun in den Anwendungsdaten-Ordner. Und für
die temporären Daten mache ich ab jetzt von
Path.GetTempFileName Gebrauch, wie es sich gehört *schäm*.
Aber ich habe ja auch eine so schöne Update-Funktion
eingebaut, die ich jetzt wohl erst mal verwerfen kann, wenn
ich keine andere Möglichkeit finde. Und zwar wird dabei
einfach die Anwendungs-Exe durch eine neue, heruntergeladene,
ersetzt. Leider kann ich da ja jetzt nicht mehr ran.
Frage 2: Oder?
Vielen Dank im Voraus und viele Grüße
Alex
Ein ähnliches Problem hatte ich auch, aber es ist lösbar.
Eigentlich stimmt es ja nicht, dass man „nicht mehr in den Anwendungsordner schreiben kann“.
Mit (standardmäßig) aktivierter UAC werden nur die Zugriffe auf u.a. das Programme-Verzeichnis virtualisiert.
D.h. Deine Anwendung kann sehr wohl etwas nach C:\Programme\MeineApp schreiben und wenn sie anschließend nachschaut, wird sie auch feststellen, dass die neue/geänderte Datei da ist.
Nur ist das in Wahrheit nicht so.
Vista speichert in diesem Fall die neuen/geänderten Dateien in ein Verzeichnis im User-Profile (irgendwas mit VirtualStore, den genauen Pfad hab’ ich gerade nicht im Kopf).
Bei Lesezugriffen mischt Vista den tatsächlichen Inhalt des Programme-Verzeichnisses mit dem (benutzerspezifischen) VirtualStore auf.
Problem dabei: Benutzer 1 aktualisiert Deine Anwendung, aber Benutzer 2 sieht noch die alte Version (weil die VirtualStores eben im Benutzerprofil liegen).
Lösung:
- Entweder UAC abschalten (geht u.a. über die Benutzerkontenverwaltung in der Systemsteuerung), dann läuft’s ähnlich wie bei XP.
- Oder die Anwendung, die den Update durchführt, mit einem Manifest versehen, in dem steht, dass sie unbedingt mit erweiterten Rechten ausgeführt werden soll. Dann wird nämlich auch die Virtualisierung nicht angewendet.
In diesem Fall kommt halt dann immer beim Start Deines Updater-Programms die Abfrage, ob die Anwendung denn auch wirklich mit erweiterten Rechten laufen darf. Aber auf einmal mehr oder weniger kommt’s bei den ganzen Abfragen unter Vista auch nicht mehr an.
Gruß,
Martin