Seite 1 von 1

"Update" als in Name der Exe

Verfasst: 05.10.2012 13:43
von kunstlust
Ich habe gerade eine kleine "Update.exe" für mein Programm geschrieben um mich gewundert, das Windows nun Adminrechte beim ausführen der Datei haben wollte und da ist mir aufgefallen, das sowie der Name in "Neu.exe" geändert habe, es nicht mehr so ist. Versteh dies jemand?

System Windows 7 Pro 32

Code: Alles auswählen

#HTTP_QUERY_CONTENT_LENGTH=5

Procedure.q GetContentLength(Url$)
  Protected FileSizet.s=Space(20),FileSize.q, Size,hINET,hURL
  hINET=InternetOpen_("blub",0,0,0,0)
  If hINET
    hURL =InternetOpenUrl_(hINET,Url$,0,0,$80000000,0)
    If hURL
      Size=Len(FileSizet)
      HttpQueryInfo_(hURL,#HTTP_QUERY_CONTENT_LENGTH,@FileSizet,@Size,#Null)
      FileSize=Val(FileSizet)
      InternetCloseHandle_(hURL)
      InternetCloseHandle_(hINET)
    Else
      InternetCloseHandle_(hINET)
    EndIf
  EndIf
  ProcedureReturn FileSize
EndProcedure


If FileSize( ProgramParameter(0)) > GetContentLength("http://test.exe")
  Result = MessageRequester("Update", "Soll das Update durchgeführt werden?"+ProgramParameter(0), #PB_MessageRequester_YesNo)
  a$ = "Das Ergebnis des vorherigen Requesters war: "
  If Result = #PB_MessageRequester_Yes       ; Ja-Schalter wurde gedrückt
   URLDownloadToFile_(0,"http://test.exe",ProgramParameter(0),0,0) 
  Else                                       ; Nein-Schalter wurde gedrückt
    MessageRequester("Information", "Update abgebrochen!", #PB_MessageRequester_Ok)
  EndIf
Else
  MessageRequester("Information", "Keine Update vorhanden!", #PB_MessageRequester_Ok)
    RunProgram(ProgramParameter(0))
EndIf

Re: "Update" als in Name der Exe

Verfasst: 05.10.2012 14:18
von RSBasic
Das ist normal. Wenn deine Datei beispielsweise "Setup" heißt, werden die Adminrechte ebenfalls automatisch angefordert.

Re: "Update" als in Name der Exe

Verfasst: 05.10.2012 14:44
von kunstlust
Das ist ja Prima, wusste ich nicht.

Noch eine andere Frage dazu, soweit ich Leerzeichen im Pfad habe, kann mein Tool die eigentliche EXE nicht mehr aufrufen, was ich nicht verstehe, da auch die "" zusätzlichen nicht bringen. Per CMD ist das aber kein Problem.

Ich rufe aus dem Hautprogramm per:

Code: Alles auswählen

RunProgram(GetTemporaryDirectory()+"Neu.exe "+Chr(34)+ProgramFilename()+Chr(32))
Und starte nach dem Update das Hauptprogramm so wieder. Der Weg so erschien mir sehr einfach, es gibt sicher noch bessere Methoden, oder?

Code: Alles auswählen

 RunProgram(chr(34)+ProgramParameter(0)+chr(34))

Re: "Update" als in Name der Exe

Verfasst: 05.10.2012 14:52
von Derren
Wenn da wirklich Chr(32) in deinem Code steht, dann liegt's wahrscheinlich daran ;)
Muss schon Chr(34) heißen am Ende.

"Update" als in Name der Exe

Verfasst: 05.10.2012 15:04
von kunstlust
Sorry 34 steht drin, bin ich durcheinander gekommen:-(

Re: "Update" als in Name der Exe

Verfasst: 05.10.2012 15:28
von NicTheQuick
Die Parameter für das aufzurufende Programm sollten in den zweiten Parameter von 'RunProgram()' gepackt werden, siehe Hilfe.

Re: "Update" als in Name der Exe

Verfasst: 05.10.2012 15:49
von ts-soft
Du solltest für Dein Programm unbedingt in den Compiler-Optionen:
Administrator-Modus für Windows Vista anfordern ankreuzen.

Ansonsten wird Dein Update-Programm nicht unbedingt das machen, was Du möchtest
und wenn das Schreiben in Ordnern fehlschlägt usw. bekommst Du keine Fehlermeldung.
Die Dateien landen einfach in einem Verzeichnis unter "VirtualStore", dasselbe gilt für
Registry-Einträge!

GELÖSCHT

Verfasst: 05.10.2012 18:33
von mirca
GELÖSCHT

Re: "Update" als in Name der Exe

Verfasst: 05.10.2012 23:47
von ts-soft
Solange Du noch mit Windows XP arbeitest, gibt es auch keine Probleme :mrgreen:
Es gibt aber schon eine Menge Leute, die mit Win Vista oder Win 7 arbeiten.