Hallo alle Zusammen,
ich habe ein Batch-Skript geschrieben, welches ermöglichen soll, ein Programm zu installieren und direkt danach eine Upgrade-Datei in den entsprechenden Pfad zu kopieren.
Hier einmal der Code:
@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params= %*
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
start /wait "Installation Programm" "F:\xxx\yyy.exe"
if exist %C:\Program Files (x86)\xxx\yyy.EXE% (
xcopy "%cd%\Datei.exe" "C:\Program Files (x86)\xxx" /y /q
)
Zu Erklärung des Codes:
Der größte Teil ist ein Skript, den ich im Internet gefunden habe. Das dient dazu, dass der Nutzer (Admin) nur noch Bestätigen muss, wie bei einer normalen Installation.
Die Line "start /wait (...)" startet die Installationsdatei. Die letzten Zeilen sollen die Upgrade-Datei nur noch kopieren, falls der Pfad schon existiert. Da dieser Anfangs noch nicht existiert, habe ich den Befehl "/wait" davor eingefügt, um die Installation abzuwarten, und danach erst die Datei in den korrekten Pfad reinzukopieren.
Problem:
Die Befehle funktionieren unabhängig voneinander super. Wenn das Programm installiert ist, kopiert er auch schon die Datei rüber. Das habe ich getestet, indem ich die originale Datei.exe gelöscht habe und die Upgrade-Datei (auch Datei.exe) durch den Befehl in den Programmpfad kopiert habe.
Wenn ich aber beide Befehle in einem Skript (wie im obigen Code aufgeführt) ausführe, installiert er die Datei. Die Upgrade-Datei zieht er am Ende aber nicht mit rein. Weiß jemand, wo der Fehler liegt?
Ihr müsst wissen, dass ich 0 Ahnung von Batch habe. Ich habe mir alles vom Internet zusammengesucht und der obige Code ist dabei entsanden..
PS.: Man hat mir öfters schon PowerShell empfohlen. Ich wollte jetzt nicht noch etwas neues anfangen, da die Lösung mir schon sehr nah am Ziel erscheint.
Vielen dank im Voraus,
euer dabbamonkeyy