Delphi-Version: 7
Update.exe nach TempDir unter Win7 kopieren?
Hallo,
ich verwende folgende Komponente um meine Anwendung zu aktualisieren. http://www.kidmoses.com/blog-article.php?bid=22 Da hab ich die Möglichkeit ein Verzeichnis auszuwählen wohin die Update.exe hinein kopiert werden soll. Ich verwende das Verzeichnis Temp. Es klappt auch soweit alles gut, nur unter Windows 7 geht das nicht. Die Update.exe wird irgendwo hin runtergeladen aber sie starten anschließend nicht, obwohl sie das automatisch tun soll. Ich hab hier die Funktion die das erledigen soll:
Delphi-Quellcode:
Kann man diese irgendwie an Win 7 anpassen? Wäre sehr dankbar wenn mir jemand helfen würde. Danke!
function GetTempDir(): string;
var PC: Array[0..MAX_PATH + 1] of Char; s: string; begin GetTempPath(MAX_PATH, PC); s := IncludeTrailingBackslash(StrPas(PC)); if not DirectoryExists(s) then begin s := ExtractFilePath(Application.ExeName); s := IncludeTrailingBackslash(s); s := s + 'Temp\'; CreatePath(s); end; Result := s; end; |
AW: Update.exe nach TempDir unter Win7 kopieren?
Was gibt die Funktion denn zurück?
Ich mache es nämlich genau so, wie es aussieht, nur dass ich auf diesen mittleren Teil verzichte, wo ein Temp-Ordner im Programmverzeichnis angelegt wird. Stattdessen bekommt der Benutzer eine Fehlermeldung, wenn der Temp-Ordner nicht ermittelt werden konnte oder nicht existiert. |
AW: Update.exe nach TempDir unter Win7 kopieren?
Ich hoffe du hast auch eine Vista-Erweitertes Manifest um die Virtualisierung des Dateisystems abzuschalten (unter C:\Programme\.. kann man kein Verzeichnis erstellen wenn der Prozess nicht mit Admin-Rechten gestartet wurde (UAC-Aktiv)).
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Zitat:
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Zitat:
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Wir hatten das hier schon ziemlich oft...
Programm liegen unter c:\programme bzw c:\program files Dort darf ein User NICHT schreiben (das ist auch schon bei XP so)! Somit kannst du dort auch keine Ordner anlegen. Abhängig von den Manifesten an deiner Anwendung, schlägt die Dateisystem Virtualisierung zu! Der Temp-Pfad ist (abhängig vom Benutzerkonto und UAC) im Benutzerprofil oder unter c:\windows\temp. Letzter Ordner kann auch nur mit Adminrechten geschrieben werden. Die Ordner solltest du wenn überhaupt nur über die "well known folders" ermitteln. |
AW: Update.exe nach TempDir unter Win7 kopieren?
Naja, ich kenne die Komponente, die du da benutzt, nicht. Das habe ich für meine Programme alles selbst gebaut. Wenn aber z.B. kein Temp-Dir ermittelt werden konnte und CreatePath() fehlschlägt, was passiert denn dann? Hast du Windows 7 nicht, um das zu debuggen (der Screenshot ist glaube ich auf Win7 gemacht :P..)?
Zitat:
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Zitat:
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Zitat:
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Zitat:
Ich hab kein Win 7, schade kann das nicht testen. |
AW: Update.exe nach TempDir unter Win7 kopieren?
Sieht erstmal richtig aus.... :?
Falls du die Quellen posten würdest würde ich mir vielleicht die Mühe machen um mal reinzuschauen... solange das Teil nicht vollgepflastert mit Fremdkomponenten ist... Ist nur ein Angebot, keine Ahnung... |
AW: Update.exe nach TempDir unter Win7 kopieren?
Außerdem wird die UAC bei Programmen mit "Update" im Namen ganz automatisch aktiv, wenn ich nicht irre.
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Also der kmNetUpdater schmeißt in den Temp Ordner noch ne updater.exe Datei, und diese starten wahrscheinlich die Update.exe, die ich mit Inno erstelle. Und diser updater hat kein Manifest und will nicht starten. Hm... kann das so sein? :gruebel: Liegt hier das Problem?
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Ist Setup eine Bestandteil der Upadter-Exe?
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Zitat:
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Ändere den dateiname mal von updater.exe nach Update-Setup.exe o.ä.
Wenn Setup im Dateiname enthalten ist, werden autoamtisch Adminrechte angefordert |
AW: Update.exe nach TempDir unter Win7 kopieren?
Zitat:
Aber ich schaue mal im Code der Komponente. |
AW: Update.exe nach TempDir unter Win7 kopieren?
Zitat:
Thx... :thumb: |
AW: Update.exe nach TempDir unter Win7 kopieren?
Zitat:
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Zitat:
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Diese sollten auch in VirtualBox funktionieren
|
AW: Update.exe nach TempDir unter Win7 kopieren?
Also ich verstehe die Welt nicht mehr. Ein mal hat das gut funktioniert und dann nicht mehr, obwohl ich nix geändert habe. :wall:
|
AW: Update.exe nach TempDir unter Win7 kopieren?
versuche doch mal
shellexecute(0, 'RUNAS', 'c:\tmpdir\update.exe', ... das wird in Vista und 7 dem user sagen den exe als admin zu starten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz