Autor Beitrag
c#ler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Do 18.08.11 16:39 
Hi,
Ich schreibe an einer Applikation, die eine Datei vom Windows-Host System auf ein USB Device kopiert.
Hierzu nutze ich die RAPI Klassenbibliothek.
ist ja quasi nicht mehr als
ausblenden C#-Quelltext
1:
2:
3:
Communication.RAPI ra = new Communication.RAPI();
ra.Connect();
ra.CopyFileToDevice(@"C:\LogInst.cab"@"\SD Card\LogInst.cab"true);


Ich habe jetzt das Problem, dass sich mein Windowsfenster "aufhängt"/nicht mehr reagiert bis die Datei zuende geschrieben ist.
Das schreiben dauert aber ca. 10 minuten.
Nun möchte ich verhindern, dass das das meine Setup form auf dem PC sich aufhängt oder wenigstens, dass meine Progressbar den Aktuellen fortschritt anzeigt bzw.
Habt ihr ideen?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4806
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 18.08.11 17:07 
Dann benutze dafür am besten den BackgroundWorker, d.h. lagere die Methode in die DoWork-Eventmethode aus.
Die ProgressBar kannst du dann wohl nur im Marquee-Modus anzeigen, da du ja keinen Einfluß auf die Kopiermethode hast (d.h. auch die Dauer nicht abschätzen kannst).

Für diesen Beitrag haben gedankt: c#ler
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Fr 19.08.11 14:04 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Dann benutze dafür am besten den BackgroundWorker, d.h. lagere die Methode in die DoWork-Eventmethode aus.
Die ProgressBar kannst du dann wohl nur im Marquee-Modus anzeigen, da du ja keinen Einfluß auf die Kopiermethode hast (d.h. auch die Dauer nicht abschätzen kannst).


Vielen Dank, hat super geklappt :)
Sowohl die Progressbar funktioniert jetzt wunschgemäß, als auch der BackgroundWorker.

Moderiert von user profile iconTh69: Status auf "Frage beantwortet" gesetzt.
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mi 24.08.11 13:09 
So, ich kriege die CAB jetzt soweit auf das Gerät kopiert. Problem ist, dass ich Sie jetzt gleich ausführen möchte ohne das Gerät in die Hand zu nehmen.
Ich denke das geht über die CreateProcess Funktion der Remote API.
ausblenden C#-Quelltext
1:
2:
3:
4:
using Communication = OpenNETCF.Desktop.Communication;

Communication.RAPI ra = new Communication.RAPI();
ra.CreateProcess("Lgc.CAB""start");

Das Problem an der Sache:

throw new RAPIException("Error " + errnum.ToString("x") + ": Cannot Create Process" );
Es wird mir lediglich eine Exception geworfen, die sagt: Error C1: Cannot Create Process
Keine weiteren sinnvollen hinweise, was schief gelaufen ist.

Hat jemand eine Idee?

Mein Ansatz ist, dass der Commandlinestring bei
ausblenden C#-Quelltext
1:
ra.createProcess("Lgc.CAB"//Commandline);					


so nicht geht. War auch eher auf gutglück.
Please help.
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mi 24.08.11 13:56 
hab mal testweise
ausblenden C#-Quelltext
1:
ra.CreateProcess(@"\SD Card\Navigator.exe");					
eingegeben und dann startet er auch meine Navi software...
Funktioniert CreateProcess evtl. mit Cabs nicht?
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Mi 24.08.11 14:04 
Hallo,
soweit ich weiss, sind CAB-Dateien einfache Archive und keine ausführbaren Programme. Kann es sein, dass du vorhast, die Datei mit einem geeigneten Entpacker zu öffnen?

_________________
Delphi: XE - OS: Windows 7 Professional x64
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mi 24.08.11 14:06 
user profile iconc#ler hat folgendes geschrieben Zum zitierten Posting springen:
hab mal testweise
ausblenden C#-Quelltext
1:
ra.CreateProcess(@"\SD Card\Navigator.exe");					
eingegeben und dann startet er auch meine Navi software...
Funktioniert CreateProcess evtl. mit Cabs nicht?


Habs:
ausblenden C#-Quelltext
1:
ra.CreateProcess("wceload""/noaskdesk/noui Lgc.cab");					

nur iwie funktioniert es noch nicht silent^^

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 24.08.11 16:02 
Sollte da nicht noch ein Leerzeichen zwischen die Argumente?

_________________
>λ=
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Fr 26.08.11 10:47 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Sollte da nicht noch ein Leerzeichen zwischen die Argumente?


Wie meinst du das? zwischen jeden Part?
quasi / xx/ xx?
Sorry falls ich mich da grad doof anstelle^^
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Fr 26.08.11 10:49 
ausblenden C#-Quelltext
1:
ra.CreateProcess("wceload""/noaskdesk /noui Lgc.cab");					



Hier müssten Leerzeichen stehen, da die Einzelparamter sonst nicht erkannt werden

_________________
Delphi: XE - OS: Windows 7 Professional x64
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Do 15.09.11 16:33 
user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
ra.CreateProcess("wceload""/noaskdesk /noui Lgc.cab");					



Hier müssten Leerzeichen stehen, da die Einzelparamter sonst nicht erkannt werden


ich habe es genau so gemacht. Nun wird auf dem Gerät eine Meldung geworfen:

please specify a .cab file or double tap a .cab
file to install the application.

ich habe es mit SD Card als verzeichnis versucht.
ausblenden C#-Quelltext
1:
ra.CreateProcess("wceload""/noaskdesk /sd card /noui Lgc.cab");					


Jemand ne idee?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 15.09.11 22:12 
Was hast du denn mit dem Pfad angestellt :gruebel: . So vielleicht?
ausblenden C#-Quelltext
1:
ra.CreateProcess("wceload"@"/noaskdesk /noui ""\SD Card\Lgc.cab""");					

_________________
>λ=

Für diesen Beitrag haben gedankt: c#ler
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Fr 16.09.11 13:49 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Was hast du denn mit dem Pfad angestellt :gruebel: . So vielleicht?
ausblenden C#-Quelltext
1:
ra.CreateProcess("wceload"@"/noaskdesk /noui ""\SD Card\Lgc.cab""");					


leider kommt, sobald der kopiervorgang abgeschlossen ist weiterhin

"please specify a .cab file or double tap a .cab
file to install the application. "
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mo 19.09.11 13:11 
user profile iconc#ler hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Was hast du denn mit dem Pfad angestellt :gruebel: . So vielleicht?
ausblenden C#-Quelltext
1:
ra.CreateProcess("wceload"@"/noaskdesk /noui ""\SD Card\Lgc.cab""");					


leider kommt, sobald der kopiervorgang abgeschlossen ist weiterhin

"please specify a .cab file or double tap a .cab
file to install the application. "


Hat jemand vielleicht mit einem Problem dieser Art schonmal zutun gehabt?
Ich teste, versuche und bastel, aber dabei kommt wenig produktives raus und ich will endlich in meinem Projekt weiterkommen.
please help
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Mo 19.09.11 13:28 
Nunja, das WCE Tool findet wohl deine Datei nicht. Hast du es schon mal mit absoluten Pfaden versucht?
Was passiert, wenn du das Tool über die Kommandozeile mit deinen im Programm beschriebenen Parametern aufrufst?

_________________
Delphi: XE - OS: Windows 7 Professional x64
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mo 19.09.11 13:52 
user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
Nunja, das WCE Tool findet wohl deine Datei nicht. Hast du es schon mal mit absoluten Pfaden versucht?
Was passiert, wenn du das Tool über die Kommandozeile mit deinen im Programm beschriebenen Parametern aufrufst?


Gute Antwort/Gegenfrage.
Ich werde mal schauen, hab das manuell noch garnicht versucht.
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Di 20.09.11 16:25 
user profile iconc#ler hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
Nunja, das WCE Tool findet wohl deine Datei nicht. Hast du es schon mal mit absoluten Pfaden versucht?
Was passiert, wenn du das Tool über die Kommandozeile mit deinen im Programm beschriebenen Parametern aufrufst?


Gute Antwort/Gegenfrage.
Ich werde mal schauen, hab das manuell noch garnicht versucht.


Also:
Ich habe es versucht und es klappt (nur in der Console bis jetzt)
ausblenden C#-Quelltext
1:
wceload /silent "\Temp\LGC.CAB"					

so funktioniert es in der Console, wie bring ich das jetzt in meinen Code?
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Di 20.09.11 17:34 
Moment!
Angenommen deine Datei liegt in "D:\Temp\LGC.CAB", dann funktioniert dein Beispiel mit der Konsole NUR DANN, wenn du dich gerade im Verzeichnis "D:\" befindest, da du wieder eine relative Pfadangabe verwendet hast.

Wie du das in Code umsetzt hatten wir doch schon :gruebel:
Zitat:

ausblenden C#-Quelltext
1:
ra.CreateProcess("wceload"@"/noaskdesk /noui ""\SD Card\Lgc.cab""");					


Ersetze nun in dem Aufruf den Pfad durch den richtigen Pfad. Der Aufruf in dem Zitat geht ja davon aus, dass sich die cab-Datei in einem Unterverzeichnis des Ausführungsverzeichnisses befindet - und das muss nicht zwangsläufig das Verzeichnis sein, in dem das Programm selbst abgelegt ist. Dein Experiment auf der Kommandozeile ist da ein gutes Beispiel dafür: Wärest du im Verzeichnis "C:\Windows\" und würdest dein Kommando absetzen, dann würde das WCE Tool ja in "C:\Windows\Temp\" nach deiner Datei suchen - wo sie sich ja nicht befindet.

Nutze einen absoluten Pfad und es sollte gehen.

_________________
Delphi: XE - OS: Windows 7 Professional x64

Für diesen Beitrag haben gedankt: c#ler
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mi 21.09.11 09:24 
user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
Moment!
Angenommen deine Datei liegt in "D:\Temp\LGC.CAB", dann funktioniert dein Beispiel mit der Konsole NUR DANN, wenn du dich gerade im Verzeichnis "D:\" befindest, da du wieder eine relative Pfadangabe verwendet hast.

Wie du das in Code umsetzt hatten wir doch schon :gruebel:
Zitat:

ausblenden C#-Quelltext
1:
ra.CreateProcess("wceload"@"/noaskdesk /noui ""\SD Card\Lgc.cab""");					


Ersetze nun in dem Aufruf den Pfad durch den richtigen Pfad. Der Aufruf in dem Zitat geht ja davon aus, dass sich die cab-Datei in einem Unterverzeichnis des Ausführungsverzeichnisses befindet - und das muss nicht zwangsläufig das Verzeichnis sein, in dem das Programm selbst abgelegt ist. Dein Experiment auf der Kommandozeile ist da ein gutes Beispiel dafür: Wärest du im Verzeichnis "C:\Windows\" und würdest dein Kommando absetzen, dann würde das WCE Tool ja in "C:\Windows\Temp\" nach deiner Datei suchen - wo sie sich ja nicht befindet.

Nutze einen absoluten Pfad und es sollte gehen.


critical Fail,
ich hab einmal "/" statt "\" verwendet...okay, vielen Dank..es funktioniert jetzt natürlich, nur muss ich die reihenfolge ändern, da keine befehle mehr nach noaskdesk angenommen werden, dementsprechend muss das noui vorher erfolgen.

Vielen Dank :)
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Mi 21.09.11 10:47 
So, jetzt funktioniert es.
Silent und ohne Probleme.
Vielen Dank