Seite 1 von 1

[gelöst] Auto Updater Vista UAC Problem

Verfasst: 13. Mai 2008 17:26
von WeeZer
Hallo,
habe ein einfaches Programm welches sich selbst aktualisiert in dem es eine neue Version als Datei "update" in den Programm Ordner lädt und dann mit QProcess ein Updater Programm startet, welches nichts weiter macht als mit QFile die alte ausführbare Datei zu löschen und die "update" Datei umzubenennen.

Unter Vista passiert jedoch gar nichts. Die "update" Datei kann nicht in dem Programm Ordner erstellt werden und die Ausführbare Datei der alten Version kann von meinem Updater nicht gelöscht werden.

Leider habe ich kein Vista und weiß nicht wie ich dem Problem weiter nach gehen soll. Scheinbar ist es unter Vista nicht ohne weiteres möglich Dateien im Programm Verzeichnis zu verändern.
Mit Visual Studio ist es möglich mithilfe einer manifest Datei festzulegen das ein Programm Administrator Rechte benötigt.
Wie mache ich das mit qmake und MinGW?

Felix

Verfasst: 13. Mai 2008 17:39
von Christian81
Eine manifest-Datei hat nichts mit irgendwelchen Rechten zu tun.
Vista -> UAC deaktivieren :D - ich mein wer patch.exe als bösartig einstuft und deshalb die Ausführung verhindert (aber ptch.exe geht...) der hat nichts anderes verdient...

Verfasst: 13. Mai 2008 17:47
von WeeZer
Ich kenne mich mit manifest Dateien nicht aus. Habe das nur bei meiner Google Suche aufgeschnappt. Hier der link How To: Tell Vista's UAC What Privelege Level Your App Requires

Die UAC abzuschalten würde das Problem lösen. Allerdings kann und möchte ich nicht von allen Anwendern verlangen das machen zu müssen.

Habe keine Erfahrung mit Vista. Aber die UAC wird (hoffentlich) ihre Daseinsberechtigung haben. Grade weil es sich bei den Benutzern des Programms um eher unerfahrene Anwender handelt.

Verfasst: 13. Mai 2008 18:17
von Christian81
Wow - was die da alles zusammenwürfeln ... *grml*
Ich glaube aber nicht dass es einfach reicht dem Program das da mitzuteilen - was hätte das für einen Sinn? Naja egal. Schau mal auf sf.net/projects/mingw nach - imho war in der Mailingliste eine Diskussion darüber, bin mir aber nicht mehr ganz sicher.

Verfasst: 13. Mai 2008 20:12
von WeeZer
Ich möchte mich mit meinem Halbwissen über Vista nicht zu weit aus dem Fenster lehnen, aber Programme werden mit eingeschränkten Rechten ausgeführt. Es ist nicht mal einfach so möglich Dateien in dem eigenen Programm Ordner abzulegen. Selbst wenn es nur eine harmlose Log Datei ist. Um das zu tun muss das Programm bei aktivierter UAC mit Administrator Rechten gestartet werden.

Genau darin läge dann der Sinn. Wenn mein Updater mit Admin Rechten gestartet wird erscheint eine Warnung der UAC und ich darf in meinem Programmverzeichnis beliebig Dateien runterladen und austauschen.

Verfasst: 13. Mai 2008 20:15
von Christian81
Das kann ja sein - aber was nützt irgend ein Flag wenn es jeder setzen kann? :)

Mal auf mingw-users nachgeschaut?

Verfasst: 13. Mai 2008 21:10
von WeeZer
Naja, setzt jemand dieses Flag in seinem Programm kommt natürlich gleich eine weitere Meldung der UAC das ein Programm mit Administrator Rechten starten will.

Über was genau war in der Mailingliste eine Diskussion? Habe nichts dazu gefunden wie ich eine manifest Datei verwenden kann.
Hab gehofft das Problem könnte ich einfach mit ein paar Einträgen in meinem qmake Profile lösen. Naja, schade :?

Verfasst: 13. Mai 2008 21:20
von Christian81
Als ob die Meldung jemanden stört :D

Das ist das einzigste was ich gefunden habe: http://lists-archives.org/mingw-users/0 ... -file.html

Re: Auto Updater Vista UAC Problem

Verfasst: 16. Mai 2008 09:59
von pfid
WeeZer hat geschrieben:Hallo,
habe ein einfaches Programm welches sich selbst aktualisiert in dem es eine neue Version als Datei "update" in den Programm Ordner lädt und dann mit QProcess ein Updater Programm startet, welches nichts weiter macht als mit QFile die alte ausführbare Datei zu löschen und die "update" Datei umzubenennen.

Unter Vista passiert jedoch gar nichts. Die "update" Datei kann nicht in dem Programm Ordner erstellt werden und die Ausführbare Datei der alten Version kann von meinem Updater nicht gelöscht werden.

Leider habe ich kein Vista und weiß nicht wie ich dem Problem weiter nach gehen soll. Scheinbar ist es unter Vista nicht ohne weiteres möglich Dateien im Programm Verzeichnis zu verändern.
Mit Visual Studio ist es möglich mithilfe einer manifest Datei festzulegen das ein Programm Administrator Rechte benötigt.
Wie mache ich das mit qmake und MinGW?

Felix
Ich weiß nicht ob das hilft, aber versuch mal nicht das Wort "update" zu verwenden. Unter Vista werden Programme blockiert bzw. mit einer Admin-Abfrage versehen, welche "update", "installer" o. ä. im Dateinamen haben. Lässt sich recht leicht prüfen indem du dein normales Programm in "updater.exe" umbenennst. (Das Problem hat übrigens auch das Spiel 'City of Heroes': der Launcher bei denen heißt cohupdater.exe, und wird dementsprechend von Vista geblockt, bzw kann nur vom Admin gestartet werden)

Also probier mal das Update nicht "update", sondern "up_meinprog" oder halt irgendwas beliebiges zu Testzwecken zu nennen.

Re: Auto Updater Vista UAC Problem

Verfasst: 18. Mai 2008 14:12
von WeeZer
pfid hat geschrieben: Ich weiß nicht ob das hilft, aber versuch mal nicht das Wort "update" zu verwenden. Unter Vista werden Programme blockiert bzw. mit einer Admin-Abfrage versehen, welche "update", "installer" o. ä. im Dateinamen haben. Lässt sich recht leicht prüfen indem du dein normales Programm in "updater.exe" umbenennst. (Das Problem hat übrigens auch das Spiel 'City of Heroes': der Launcher bei denen heißt cohupdater.exe, und wird dementsprechend von Vista geblockt, bzw kann nur vom Admin gestartet werden)

Also probier mal das Update nicht "update", sondern "up_meinprog" oder halt irgendwas beliebiges zu Testzwecken zu nennen.
Das war es, Problem gelöst :) Mein Setup achtet nun darauf das der Benutzer in meinem Programmverzeichnis die Rechte hat Dateien zu verändern und der Updater heißt nun nicht mehr Updater. Funktioniert jetzt alles wie es soll. Ich danke euch.