UPDATE nicht ausführen: Jeder, der Schwierigkeiten hat, ein NSI-Installationsprogramm zu verwenden, um eine INF-Datei zu installieren, suchen nicht weiter. Das funktioniert tatsächlich.NSIS Treiber-Installer Batch-Datei
Ich habe eine Batchdatei erstellt, die erfolgreich einen Gerätetreiber im Administratormodus installiert. Wenn ich dies zusammen mit dem Treiber nach C: \ Benutzer \ Me \ AppData \ Local \ Temp \ Driver kopiere, kann der Treiber erfolgreich ausgeführt und installiert werden.
Wenn ich jedoch versuche, diese genaue Batch-Datei von einem NSIS-Installationsprogramm aufzurufen, das ExecWait verwendet, wird die Batch-Datei nicht ausgeführt. Die Dateien werden in den exakten Speicherort wie oben erwähnt übertragen.
Wie in aller Welt rufen Sie erfolgreich eine Batchdatei aus einer NSIS-Datei auf?
Relevant Schnipsel aus NSIS:
# Installer sections
Section -Main SEC0000
# Copy viewer software to PC
SetOverwrite on
#(software stuff) ...
# Copy USB slave driver to PC
SetOutPath $TEMP\Driver
File ..\Driver\c500.cat
File ..\Driver\c500.inf
File ..\Driver\runme.bat
File ..\Driver\install.bat
# Remove the Windows 7/8/10 magic relocated ini file (if it exists)
Delete /REBOOTOK "$LOCALAPPDATA\VirtualStore\Program Files (x86)\CompanyName\C500-510\C500_510.ini"
WriteRegStr HKLM "${REGKEY}\Components" Main 1
SectionEnd
# Install C500 USB slave driver
Section -InstallDriver SEC0001
SetOverwrite on
DetailPrint "Install C500 USB slave driver"
# Install USB slave driver if desired
${If} ${Cmd} `MessageBox MB_YESNO|MB_ICONQUESTION "Install C500 USB slave driver?" IDYES`
ExecWait "$TEMP\Driver\runme.cmd"
${EndIf}
WriteRegStr HKLM "${REGKEY}\Components" InstallDriver 1
SectionEnd
install.bat
set fn=%~dp0c500.inf
echo fn is %fn%
::cd %windir% && %windir%\system32\pnputil.exe -i -a %~dp0\c500.inf
cd %windir%
echo %cd%
pnputil -i -a %fn%
if %errorlevel% == 0 goto success
echo Device installation failed.
echo Try to run install.bat as Administrator
echo Or check if your system has the usbser.sys file
goto end
:success
echo Device installation completed.
:end
pause
runme.bat
@echo off
powershell -Command "Start-Process 'install.bat' -ArgumentList '%~dp0\c500.inf' -Verb runAs"
U pdate: Wenn ich ".cmd" in der NSIS-Datei zu ".bat" ändere, bekomme ich cmd Windows mit den folgenden Fehlern.
Dies könnte eine lange gedreht, aber es einen Versuch nur für den Fall geben ... Also für die 'runme.bat' Skript benutze das . . . ** '1.' ** füge' SET PowerShellDir = C: \ Windows \ System32 \ WindowsPowerShell \ v1.0' in einer Zeile hinzu, ** '2.' ** füge dann' CD/D "% PowerShellDir%" 'hinzu in der Zeile darunter, und dann schließlich in der Zeile darunter ** ** "3." ** "Powershell-ExecutionPolicy Bypass-Befehl" & Start-Prozess 'install.bat' -ArgumentList '% ~ dp0 \ c500.inf "" Statt dessen, was du hast, benutze das stattdessen. Lass mich wissen, wie das Testen für dich läuft und ob das hilft und ich werde eine Antwort hinzufügen, wenn das so ist und du willst, dass ich es tue. –
Kein Glück. Denken Sie daran, dass ich keine Probleme habe, wenn ich runme.bat direkt ausführe. Ich glaube wirklich, dass das Problem in der NSIS-Datei liegt. Ich habe so viele Möglichkeiten ausprobiert, um die runme.bat-Datei aufzurufen, aber es öffnet nie das Befehlsfenster und vervollständigt das Installationsprogramm, als ob es gut funktioniert hätte. –
Kann die Tatsache, dass ich die runme.bat-Datei von AppData/Temp ausführen kann, nicht beweisen, dass dies in Ordnung ist? Ich kann die .bat-Datei nicht direkt von ProgramFiles ausführen, aber ich kann von hier aus. Übrigens werde ich jetzt die Frage detaillierter hinzufügen. Leider habe ich versucht und $ DESKTOP hat nicht geholfen. –