Как скопировать файлы из установщика без установки - PullRequest
0 голосов
/ 25 сентября 2019

Я создал установщик, используя NSIS.

У меня есть один пакетный файл, который необходимо запустить, если автоматическая установка не удалась (Установщик проверяет, присутствует ли какая-либо версия программного обеспечения, если она есть, сначала удалите ее.)

Как запустить пакетный файл из установщика без его установки?

1 Ответ

0 голосов
/ 26 сентября 2019

NSIS на самом деле все равно, извлекаете ли вы файлы в $InstDir или куда-либо еще:

!define UninstId "MyAppBlahBlah"
!include LogicLib.nsh

Function RunMyBatch
  InitPluginsDir
  SetOutPath $PluginsDir
  File "myfiles\mybatch.bat"
  StrCpy $0 "$SysDir\cmd.exe"
  IfFileExists $0 +2
    ExpandEnvStrings $0 "%COMSPEC%"
  nsExec::Exec '"$0" /C "$PluginsDir\mybatch.bat"'
  Pop $0 ; Exit code
  SetOutPath $Temp ; Don't hold lock on $PluginsDir
FunctionEnd

Function .onInit
  ReadRegStr $0 HKLM "Software\Software\Microsoft\Windows\CurrentVersion\Uninstall\${UninstId}" "UninstallString"
  ${If} $0 != ""
    !insertmacro UninstallExisting $0 $0 ; https://nsis.sourceforge.io/Auto-uninstall_old_before_installing_new
    ${If} $0 <> 0
      Call RunMyBatch ; Run batch if uninstall old failed
    ${EndIf}
  ${EndIf}
FunctionEnd

Function .onInstFailed
  Call RunMyBatch ; Run batch if install failed
FunctionEnd
...