сборщик электронов nsis запускает другой исполняемый файл во время установки - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь запустить другой исполняемый файл во время установки моего приложения, но не могу найти правильный путь для этого. Программа добавлена ​​со следующим electron-builder config:

extraFiles:
    -   from: tools/tapinstall/${arch}/
        to: resources/tapinstall/
        filter:
            - "**/*"

После установки моего приложения я вижу файлы в папке resources/tapinstall/, поэтому она переносится. Теперь в моем nsis installer.nsh я добавил директиву ExecWait для запуска exe из этого каталога, но она не работает.

В отчаянном мериле я решил, что префикс всего с $INSTDIR был не правильный ход, может быть, путь не $INSTDIR и что-то еще, и я нашел 3 возможных кандидата:

  • $INSTDIR
  • $APPDATA
  • $BUILD_RESOURCES_DIR

Я добавил этот простой код, чтобы увидеть, какой файл создается, чтобы я мог определить правильный макрос для использования:

!macro customHeader
    RequestExecutionLevel admin
!macroend

!macro customInstall
    !system "echo 'as' > $INSTDIR/customInstall"
    !system "echo 'bs' > $APPDATA/customInstall"
    !system "echo 'cs' > $BUILD_RESOURCES_DIR/customInstall"

    ${ifNot} ${isUpdated}
        !system "echo 'a' > $INSTDIR/customInstall"
            !system "echo 'b' > $APPDATA/customInstall"
            !system "echo 'c' > $BUILD_RESOURCES_DIR/customInstall"
    ${endIf}
!macroend

Затем я сделал полный поиск по мой компьютер для файла с именем customInstall ... ничего. Что я делаю не так?

1 Ответ

1 голос
/ 23 марта 2020

!system (и все другие ! инструкции) выполняются во время компиляции внутри makensis.exe. Вы не можете получить доступ к переменным / константам во время компиляции, только определения и переменные окружения.

!define foo "Hello"
!warning "${NSISDIR} & $%Temp% & ${foo}"

Var Bar
Section
StrCpy $Bar "World"
MessageBox mb_ok "$InstDir & $Bar"
SectionEnd
...