Hallo Leute,
ich hab in einem anderen Thread ein Script geschrieben, bei dem die ausgewählten Add-Ins für ein Programm installiert werden.
Einige Add-Ins bestehen aus einem extra Ordner, da diese mit .net registriert werden müssen (alle Add-Ins bestehen aus DLLs).
Da dieses Script (vorerst) nur intern zum Einsatz kommen soll wurde es ziemlich statisch geschrieben (eigentlich kein Thema). Jetzt stellt sich mir die Frage, wie Windows / AutoIt mit folgendem Code umgeht:
Spoiler anzeigen
If $InsKissyII Then
Run('cmd.exe /c xcopy /Y "S:\Mesap\7 Produktion\M4 Setup\' & $M4Version & '\aktuellste AddIns\Kissy-II" "' & @ProgramFilesDir & '\Mesap4\Kissy-II\"', "", @SW_HIDE)
Run('cmd.exe /c xcopy /Y "S:\Mesap\7 Produktion\M4 Setup\' & $M4Version & '\aktuellste AddIns\Infragistics-Dlls" "' & @ProgramFilesDir & '\Mesap4\Kissy-II\"', "", @SW_HIDE)
Sleep(750)
Run('cmd.exe /c "%windir%\Microsoft.NET\Framework\v2.0.50727\Regasm" /codebase M4AddIn028.dll', "", @SW_HIDE)
EndIf
If $InsAnalystExport Then
Run('cmd.exe /c xcopy /Y "S:\Mesap\7 Produktion\M4 Setup\' & $M4Version & '\aktuellste AddIns\AnalystExport" "' & @ProgramFilesDir & '\Mesap4\AnalystExport\"', "", @SW_HIDE)
Run('cmd.exe /c xcopy /Y "S:\Mesap\7 Produktion\M4 Setup\' & $M4Version & '\aktuellste AddIns\Infragistics-Dlls" "' & @ProgramFilesDir & '\Mesap4\AnalystExport\"', "", @SW_HIDE)
Sleep(750)
Run('cmd.exe /c "%windir%\Microsoft.NET\Framework\v2.0.50727\Regasm" /codebase M4AddIn032.dll', "", @SW_HIDE)
EndIf
If $InsKonverter Then
Run('cmd.exe /c xcopy /Y "S:\Mesap\7 Produktion\M4 Setup\' & $M4Version & '\aktuellste AddIns\Konverter-II" "' & @ProgramFilesDir & '\Mesap4\Konverter-II\"', "", @SW_HIDE)
Run('cmd.exe /c xcopy /Y "S:\Mesap\7 Produktion\M4 Setup\' & $M4Version & '\aktuellste AddIns\Infragistics-Dlls" "' & @ProgramFilesDir & '\Mesap4\Konverter-II\"', "", @SW_HIDE)
Sleep(750)
Run('regsvr32.exe /s "' & @ProgramFilesDir & '\Mesap4\Konverter-II\PgmrX120.dll"')
Run('cmd.exe /c "%windir%\Microsoft.NET\Framework\v2.0.50727\Regasm" /codebase M4AddIn021.dll', "", @SW_HIDE)
EndIf
If $InsAtypNetznutzung Then
Run('cmd.exe /c xcopy /Y "S:\Mesap\7 Produktion\M4 Setup\' & $M4Version & '\aktuellste AddIns\Atypische Netznutzung" "' & @ProgramFilesDir & '\Mesap4\Atypische Netznutzung\"', "", @SW_HIDE)
Run('cmd.exe /c xcopy /Y "S:\Mesap\7 Produktion\M4 Setup\' & $M4Version & '\aktuellste AddIns\Infragistics-Dlls" "' & @ProgramFilesDir & '\Mesap4\Atypische Netznutzung\"', "", @SW_HIDE)
Sleep(750)
Run('cmd.exe /c "%windir%\Microsoft.NET\Framework\v2.0.50727\Regasm" /codebase M4AddIn031.dll', "", @SW_HIDE)
EndIf
Sleep(500)
Dabei werden aus 2 Quellordnern Dateien geholt und in einen neuen Ordner geschmissen.
Leider kam es bereits mehrfach vor, dass ein Teil dieser Operation (es werden nur die eine Hälfte der Dateien kopiert) nicht passiert.
Gelöst hab ich es, indem ich jeweils eine 3/4 Sekunde zwischen den kopier-operationen Zeit lasse.
Aber: Wie arbeitet windows diese direkt nach einander ausgeführten Kopierbefehle ab?
=> ordner 1 kopieren
=> ordner erstellen
=> einfügen
=> ordner 2 kopieren
=> einfügen
Oder eher so:
=> Ordner 1 kopieren, ordner erstellen
=> Ordner 2 kopieren, einfügen
=> einfügen
Oder in welcher Reihenfolge? ...denn manchmal wurden die Infragistics DLLs als einziges kopiert und manchmal nur die Add-In spezifischen.
Gruß Scorpion
PS: Optimierungsvorschläge?