Подтвердить что ты не робот

Выполнение командной строки из NSIS

Я создаю свой первый NSI script, и мне просто интересно, могу ли я выполнить команду из командной строки из NSIS или просто выполнить пакетный файл? Я не знаю, с чего начать, и другие подобные темы немного перевернули мою голову.

4b9b3361

Ответ 1

Я бы порекомендовал взглянуть на плагин nsExec. Недавно у меня была ситуация, когда мне нужно было ping-сервер из NSIS script, и следующий код работал отлично для меня.

nsExec::Exec '"C:\Windows\System32\PING.EXE" $URL'

Преимущество использования nsExec заключается в том, что он выполняет команду без включения окна dos на экране. Возвращаемое значение помещается в стек, и есть несколько различных способов, которыми вы можете получить доступ к выходу программы (если таковой существует).

Существует не так много информации о плагине на веб-сайте NSIS, который я мог бы найти, но следующая ссылка должна начать вас в правильном направлении:

http://nsis.sourceforge.net/Docs/nsExec/nsExec.txt

Изменить:

Я заметил, что вы спросили конкретно о команде COPY, которая является внутренней командой DOS, что означает, что вы не сможете ее выполнить, как я сделал с ping. Я могу ошибаться, но вам не нужно использовать какие-либо внешние программы для выполнения основных команд, подобных этому. Вы должны иметь возможность реплицировать большинство внутренних команд с помощью команд NSIS.

Например, для копирования файла (или нескольких файлов) используйте команду NSIS: CopyFiles

Справочник по сценариям NSIS - ваш друг:) (Итак, ctrl + f)

Ответ 2

Попробуйте использовать команду exec http://nsis.sourceforge.net/Docs/Chapter4.html:

4.9.1.2 Exec

Команда

Выполните указанную программу и продолжайте немедленно. Обратите внимание, что указанный файл должен существовать в целевой системе, а не в компиляционной системе. $OUTDIR используется для рабочего каталога. Флаг ошибки устанавливается, если процесс не может быть запущен. Обратите внимание: если команда может иметь пробелы, вы должны поместить ее в кавычки, чтобы отделить ее от параметров. например: Exec '"$INSTDIR\command.exe" parameters'. Если вы не поместите его в кавычки, он не будет работать в Windows 9x с параметрами или без них.

Exec '"$INSTDIR\someprogram.exe"'
Exec '"$INSTDIR\someprogram.exe" some parameters'