Vista-Ready machen

Hallo,

ich weiß, ich bin ein bisschen spät dran, aber ich will meine 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

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 :smile:

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

Hi Martin,

Lösung:

  • Entweder UAC abschalten (geht u.a. über die
    Benutzerkontenverwaltung in der Systemsteuerung), dann läuft’s
    ähnlich wie bei XP.

Das kann ja nicht mein Programm machen…

  • 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.

Jetzt bin ich aber erleichtert, Danke! Und wie sieht ein solches Manifest aus bzw. was ist das?

Viele Grüße
Alex

Hallo nochmal!

Einfach mal googlen, da findest Du Unmengen an Infos.
Zum Einbetten des Manifests in die Anwendung kann ich Dir diesen Artikel ans Herz legen: http://www.codeproject.com/dotnet/ManifestInjection.asp

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]