Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Update.exe nach TempDir unter Win7 kopieren? (https://www.delphipraxis.net/154318-update-exe-nach-tempdir-unter-win7-kopieren.html)

OrNEC 6. Sep 2010 14:42

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:
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;
Kann man diese irgendwie an Win 7 anpassen? Wäre sehr dankbar wenn mir jemand helfen würde. Danke!

wicht 6. Sep 2010 15:05

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.

Bernhard Geyer 6. Sep 2010 15:10

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

OrNEC 6. Sep 2010 15:11

AW: Update.exe nach TempDir unter Win7 kopieren?
 
Zitat:

Zitat von wicht (Beitrag 1047802)
Was gibt die Funktion denn zurück?
Weiß ich nicht, muss mal schauen.

Also das ist so - unter WinXP startet die Update.exe um sich zu installieren, unter Win7 aber nicht. Hat das vllt nix mit dem Temp Ordner zu tun? Was meinst du wieso startet es nicht?

OrNEC 6. Sep 2010 15:13

AW: Update.exe nach TempDir unter Win7 kopieren?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1047803)
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)).

Die Update.exe erstelle ich mit InnoSetup, wie kann ich da das Manifest einschleusen?

generic 6. Sep 2010 15:14

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.

wicht 6. Sep 2010 15:17

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:

Die Update.exe erstelle ich mit InnoSetup, wie kann ich da das Manifest einschleusen?
Alles was mit InnoSetup erstellt wurde, hat dieses Manifest schon. Allerdings versucht ja dein Programm den Temp-Ordner zu erstellen, das ist also unabhängig von InnoSetup.

OrNEC 6. Sep 2010 15:17

AW: Update.exe nach TempDir unter Win7 kopieren?
 
Zitat:

Zitat von generic (Beitrag 1047807)
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.

Ja das weiß ich alles, aber wie lasse ich die Update.exe aus dem TempOrdner starten? Die Update.exe erstellt mir InnoSetup.

wicht 6. Sep 2010 15:21

AW: Update.exe nach TempDir unter Win7 kopieren?
 
Zitat:

Ja das weiß ich alles, aber wie lasse ich die Update.exe aus dem TempOrdner starten? Die Update.exe erstellt mir InnoSetup.
So wie du es da oben schon beschrieben hast, nur lass das selbstständige Erstellen des Ordners weg. Ohne den Rückgabewert deiner Funktion zum Temp-Verzeichnis-holen zu kennen wird das hier schwierig glaube ich. Falls der Wert passt ist die Komponente vielleicht auch nicht ganz sauber.. Jedenfalls ist es schwierig keinen Temp-Dir ermitteln zu können, wenn der User sein System nicht extrem verfrickelt hat...

OrNEC 6. Sep 2010 15:24

AW: Update.exe nach TempDir unter Win7 kopieren?
 
Zitat:

Zitat von wicht (Beitrag 1047811)
Zitat:

Ja das weiß ich alles, aber wie lasse ich die Update.exe aus dem TempOrdner starten? Die Update.exe erstellt mir InnoSetup.
So wie du es da oben schon beschrieben hast, nur lass das selbstständige Erstellen des Ordners weg. Ohne den Rückgabewert deiner Funktion zum Temp-Verzeichnis-holen zu kennen wird das hier schwierig glaube ich. Falls der Wert passt ist die Komponente vielleicht auch nicht ganz sauber.. Jedenfalls ist es schwierig keinen Temp-Dir ermitteln zu können, wenn der User sein System nicht extrem verfrickelt hat...

Der Rückgabewert lautet: "C:\Dokumente und Einstellungen\<Benutzer>\Lokale Einstellungen\Temp"

Ich hab kein Win 7, schade kann das nicht testen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:29 Uhr.
Seite 1 von 3  1 23      

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