Hallo zusammen,
ich habe wahrscheinlich ein Problem mit dem Aufruf eines Skriptes. Es soll eine Installation über eine .msi Datei gestartet werden. Diese Installation wird über ein Skript geregelt. Rufe ich das Skript über die Kommandozeile auf funktioniert alles wunderbar. Sobald ich aber das Installations-Skript über ein anderes Skript öffne bekomme ich beim Aufruf der Installation die Fehlermeldung:" "TriopticsRedistributablePackage_1.0.7.msi" konnte nicht gefunden werden. Stellen Sie sicher, dass Sie den Namen korrekt eingegeben haben und wiederholen Sie den Vorgang. Klicken Sie auf "Start" und anschließend auf "Suchen", um eine Datei zu suchen. "
Ich habe keine Idee mehr warum der selbe Aufruf meines Skriptes aus der Konsole heraus diesen Fehler nicht hervorruft und die Installation wie gewünscht startet. Ich bin auch sicher, dass ich im anderen Skript die richtige Datei aufrufe, da meine Debug-Message Box korrekt angezeigt wird.
Hier dann die relevanten Codeausschnitte aus den beiden Skripten. Die kompletten Skripte darf ich leider nicht posten, aber die Ausschnitte geben eigentlich alles Relevante wieder:
Skript für die Installation des msi- Packages :
[autoit]
If $CmdLine[0] > 1 Then
#Region --- CodeWizard generated code Start ---
;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Critical
MsgBox(16,"Error install_Trioptics Redistributables","Script opened with wrong number of arguments !")
help()
#EndRegion --- CodeWizard generated code End ---
Exit
EndIf
If $CmdLine[0] < 1 Then
tr_install_manu()
Else
Switch $CmdLine[1]
Case "-check"
; prüft ob die Treiber bereits installiet sind
$exitcode = tr_check()
Exit($exitcode)
Case "-uninstall"
; deinstalliert die Trioptics Redistributables
tr_uninstall()
Case "-manual"
; aktiviert die manuelle Installation der Trioptics Redistributables
tr_install_manu()
Case "-automatic"
; aktiviert die automatische Installation der Trioptics Redistributables
tr_install_auto()
Case "-h"
; gibt die Hilfe auf der Console aus
help()
Case "-help"
; gibt die Hilfe auf der Console aus
help()
Case "/?"
; gibt die Hilfe auf der Console aus
help()
Case Else
#Region --- CodeWizard generated code Start ---
;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Critical
MsgBox(16,"Error install_Trioptics Redistributables","Wrong argument given to script !")
; gibt die Hilfe auf der Console aus
help()
#EndRegion --- CodeWizard generated code End ---
Exit
EndSwitch
EndIf
; Aufruf der Manuellen Installation der Trioptics Redistributables
Func tr_install_manu ()
$dir = @WorkingDir
FileChangeDir("Data")
MsgBox(64,"test","test")
ShellExecuteWait("TriopticsRedistributablePackage_1.0.7.msi") ; Manuelle Installation der Trioptics Redistributables
FileChangeDir($dir)
EndFunc
Obiges wird als "Cui" kompiliert. So dass es über die Kommandozeile aufrufbar ist. Dies funktioniert auch genauso wie es soll. Ich habe auch schon andere arten des Aufrufes probiert. Sowohl ein Benutzen von Runwait mit Comspec als auch das Benutzen von Runwait mit MSIEXEC rufen das selbe Verhalten hervor.
Rufe ich hingegen dieses Skript in meinem Installationsprogramm auf, kommt die zu Beginn erwähnte Fehlermeldung.
Skriptabschnitt mit dem Aufruf:
If $install[0] > 0 Then
For $j = 1 To $install[0] ; Alle vorhandenen installationen durchgehen
If $nMsg = $install[$j] Then ; Wenn auf einen Installationsbutton gedrückt wurde
$application = $apps[$j] ; Application aus der Appsliste holen
If ($application <> "Install all applications") Then ; wenn es nicht "Install all applications" ist
$all_files = _GetFileList(@ScriptDir,"*.*") ; Array mit allen Dateien ermitteln
Local $k = 1 ; Zählvariable beim Durchlaufen der Files
Local $found = 0 ; Variable die anzeigt, ob bereits eine passende Datei gefunden wurde
While ($found = 0) And ($k <= $all_files[0])
If StringInStr($all_files[$k],'install_' & $application & '.exe',0) <> 0 Then ; Suchen nach dem Installationsskript
RunWait(@ComSpec & ' /c "' & $all_files[$k] & '" -manual', '', @SW_HIDE) ; Ausführen der manuellen Installation
$found = 1 ; Flag setzen, dass ein Installationsskript gefunden wurde
set_buttons_images () ; Setzen der richtigen Images und Buttons
EndIf
$k += 1
WEnd
If $found = 0 Then ; Wenn kein Installationsskript gefunden wird
#Region --- CodeWizard generated code Start ---
;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Critical
MsgBox(16, "Error", "Missing install script of " & $apps[$j]) ; Nachricht wenn das Install-Skript fehlt
#EndRegion --- CodeWizard generated code Start ---
EndIf
Else
install_all () ; Alles installieren was noch nicht vorhanden ist
set_buttons_images () ; Setzen der Images und Buttons
EndIf
EndIf
Next
EndIf
Ich weiß, dass es eventuell schwierig ist, weil ihr es nicht selber nachstellen könnt, aber vielleicht hat ja trotzdem jemand eine Idee wodran es liegen könnte. Wie gesagt: Der Aufruf meines Installationsskriptes funktioniert, da die Messagebox aus dem oberen Skript erscheint. Aber beim Aufruf der Installation kommt dann die Fehlermeldung.
Vielen Dank schonmal.