ExecWith_

Antworten
mckenny
Beiträge: 13
Registriert: 29 Apr 2010, 21:45

ExecWith_

Beitrag von mckenny »

Moin,

ich habe eine Frage bezüglich "ExecWith_" und zwar weshalb löst er bei den folgenden Beispiel die gesetzte Variable nicht aus?

set $LocalCopy$ = "%SystemDrive%\tmp\depot"
ExecWith_AutoIt_BlockInput "$LocalCopy$\AutoIt3.exe" WINST /letThemGo

Alternativ Lösung die funktioniert:
ExecWith_AutoIt_BlockInput "%SystemDrive%\tmp\depot\AutoIt3.exe" WINST /letThemGo

Ich habe meines Wissen die Kombinationen ($LocalCopy$"\AutoIt3.exe" || $LocalCopy$ + "\AutoIt3.exe") getestet und sie führten beide zu den Fehler, dass $LocalCopy$ nicht "aufgelöst" wurde.
mensch90
Beiträge: 130
Registriert: 27 Jul 2013, 16:52

Re: ExecWith_

Beitrag von mensch90 »

Ohne es getestet zu haben, was passiert bei:

ExecWith_AutoIt_BlockInput "+'$LocalCopy$'+\AutoIt3.exe" WINST /letThemGo
mckenny
Beiträge: 13
Registriert: 29 Apr 2010, 21:45

Re: ExecWith_

Beitrag von mckenny »

Exception in StartProcess_cp: Failed to execute "+'$LocalCopy$'+\AutoIt3.exe"...
Exception in StartProcess_cp: Failed to execute $LocalCopy$"\AutoIt3.exe"...
Exception in StartProcess_cp: Failed to execute ""+$LocalCopy$+"\AutoIt3.exe"

Gerade die noch einmal getestet...
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3327
Registriert: 04 Jun 2008, 14:27

Re: ExecWith_

Beitrag von d.oertel »

Hi,

die Zeile:

Code: Alles auswählen

ExecWith_AutoIt_BlockInput "$LocalCopy$\AutoIt3.exe" WINST /letThemGo
ist Bestandteil einer primären Sektion (Actions, sub) und in diesen sind Variablen keine Platzhalter:
Aus:
http://download.uib.de/opsi4.0/doc/html ... y-commands
Wichtig

Stringvariablen werden in primären und sekundären Sektionen unterschiedlich behandelt. In primären Sektionen sind Stringvariablen eigenständige Objekte. Nur hier können sie deklariert und ihnen Werte zugewiesen werden. Entsprechend ist die Verbindung von Variablen und Strings zu einem Stringausdruck mit einem Operator "+" durchzuführen.
Beispiel: "Installing "+ $ProductId$ +" ..."
In sekundären Sektionen werden Stringvariablen vor der Ausführung der Sektion durch den Inhalt der Variable ersetzt.
Beispiel: "Installing $ProductId$ ..."
Dies ist zu beachten, wenn entsprechende Stringausdrücke per Cut&Paste im Skript kopiert werden.
Der Vorteil dieser Konstruktion ist, dass in Sektionen die außerhalb des opsi-winst ausgeführt werden (DosBatch / Execwith) problemlos mit Winst-Variablen gearbeitet werden kann.
Funktionieren müsste also:

Code: Alles auswählen

ExecWith_AutoIt_BlockInput $LocalCopy$+"\AutoIt3.exe" WINST /letThemGo
gruß
d.oertel


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


mckenny
Beiträge: 13
Registriert: 29 Apr 2010, 21:45

Re: ExecWith_

Beitrag von mckenny »

Danke für den Hinweis, leider kam ich nicht dazu es zu testen, aber nun habe ich es doch mal gemacht:

Code: Alles auswählen

ExecWith_AutoIt_BlockInput $LocalCopy$+"\AutoIt3.exe" WINST /letThemGo
Führt zu folgenden Fehler:
Exception in StartProcess_cp: Failed to execute "$LocalCopy$+"\AutoIt3.exe""
Wobei eine FileExists abfrage vor der ExecWith Funktion folgendes ausspuckt:
FileExists($LocalCopy$ + "\AutoIt3.exe") <<< result true

Wird wohl wahrscheinlich ein Bug sein oder es ist nicht vorgesehen $-Variablen dort zu übergeben...
Ich nutze einfach die alternativ Lösung.
Antworten