nsis устанавливает исполняемый файл bat, но ничего не делает - PullRequest
0 голосов
/ 26 октября 2018

У меня есть командный файл, который мне нужно запустить в установщике NSIS. Он просто монтирует сетевой диск, используя NET USE Z: \ server \ folder. Кажется, что установщик работает нормально, cmd запускается и команды даже выводятся, как будто все в порядке 1 , но на самом деле диск не подключен

изображение с выводом команд

раздел nsis

Section ""      

    ;Install path
    SetOutPath $INSTDIR
    ;the bat file
    File network.bat

    ;execute bat
    Exec '"$INSTDIR\network.bat"'

SectionEnd

Если я выполню «летучую мышь» вручную, диски будут отображены идеально. Я также пытаюсь выполнить команду net напрямую, используя nsExec::ExecToLog '"C:\Windows\System32\net.exe" use z: \\server\folder' или Exec "$SYSDIR\Net.exe use z: \\server\folder" или ExecWait '"cmd.exe" /C net use z: \\server\folder', но получаю тот же результат.

Содержимое летучей мыши следующее:

NET USE Z: /d
NET USE Z: \\server\folder
pause

Что я делаю не так? Что еще я могу попробовать? Я тестирую установщик на Win10 Home edition, если это помогает. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Ответы Андерса прекрасно работают и разъясняют, в чем заключалась проблема, в моем контексте я не мог использовать 1-3 варианта, поэтому я начал делать 4, и это привело меня к этому использованию проводника для запуска в качестве текущего пользователя это дало мне более простое решение.

Exec '"$WINDIR\explorer.exe" "$INSTDIR\network.bat"'

Просто укажите еще одну вещь, если установщик не ELEVATED, эта логика не имеет значения, потому что тогда вы можете просто запустить Exec, который будет иметь то же значение, что и ваш процесс.

0 голосов
/ 26 октября 2018

Подключенные диски не используются совместно через границы UAC .

Применимые решения / обходные пути:

  • Вы можете использовать атрибут RequestExecutionLevel User вваш сценарий, если вам не требуются права администратора для установки приложения.

  • Используйте UNC-пути (\\server\folder)

  • Если вы устанавливаетеприложение, приложение может установить отображение при запуске.

  • Используйте плагин ShellExecAsUser для выполнения пакетного файла в контексте Explorer.exe

...