"Update" als in Name der Exe

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

"Update" als in Name der Exe

Beitrag 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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: "Update" als in Name der Exe

Beitrag von RSBasic »

Das ist normal. Wenn deine Datei beispielsweise "Setup" heißt, werden die Adminrechte ebenfalls automatisch angefordert.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: "Update" als in Name der Exe

Beitrag 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))
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: "Update" als in Name der Exe

Beitrag von Derren »

Wenn da wirklich Chr(32) in deinem Code steht, dann liegt's wahrscheinlich daran ;)
Muss schon Chr(34) heißen am Ende.
Signatur und so
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

"Update" als in Name der Exe

Beitrag von kunstlust »

Sorry 34 steht drin, bin ich durcheinander gekommen:-(
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: "Update" als in Name der Exe

Beitrag von NicTheQuick »

Die Parameter für das aufzurufende Programm sollten in den zweiten Parameter von 'RunProgram()' gepackt werden, siehe Hilfe.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: "Update" als in Name der Exe

Beitrag 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!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
mirca
Beiträge: 169
Registriert: 13.11.2011 16:05

GELÖSCHT

Beitrag von mirca »

GELÖSCHT
Zuletzt geändert von mirca am 17.10.2013 11:28, insgesamt 1-mal geändert.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: "Update" als in Name der Exe

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten