Seite 1 von 1
ExecWith_
Verfasst: 14 Mär 2014, 19:01
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.
Re: ExecWith_
Verfasst: 14 Mär 2014, 19:18
von mensch90
Ohne es getestet zu haben, was passiert bei:
ExecWith_AutoIt_BlockInput "+'$LocalCopy$'+\AutoIt3.exe" WINST /letThemGo
Re: ExecWith_
Verfasst: 14 Mär 2014, 21:32
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...
Re: ExecWith_
Verfasst: 17 Mär 2014, 21:43
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
Re: ExecWith_
Verfasst: 22 Mär 2014, 17:40
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.