Wtyczka nsExec

Ten dokument zgodny jest z NSIS 3.9


1. Wprowadzenie

Wtyczka nsExec wykonuje programy uruchamiane w linii poleceń i przechwytuje ich wyjście. Okno DOS nie jest wyświetlane.

2. Sposób użycia

nsExec::Exec [/MBCS] [/OEM] [/TIMEOUT=x] ścieżka_dostępu
Pop $0
  -lub-
nsExec::ExecToLog [/MBCS] [/OEM] [/TIMEOUT=x] ścieżka_dostępu
Pop $0
  -lub-
nsExec::ExecToStack [/MBCS] [/OEM] [/TIMEOUT=x] ścieżka_dostępu
Pop $0 ; Zwracana wartość (Return)
Pop $1 ; Wyjście (Output)

Funkcja ExecToLog wydrukowuje wyjście do okna dziennika, zaś funkcja ExecToStack odkłada wyjście na stos w ilości ograniczonej przez ${NSIS_MAX_STRLEN} (wpierw odkładana jest zwracana wartość).

Użyj przełącznika /MBCS, aby wyłączyć detekcję kodowania Unicode (tekst traktowany jest zawsze jako ANSI).

Użyj przełącznika /OEM, aby skonwertować wyjściowy tekst z OEM na ANSI.

Parametr Timeout jest opcjonalny. Timeout jest czasem (w milisekundach), podczas którego wtyczka nsExec oczekuje na wyjście. Jeśli odebrano wyjście procesu, wartość timeout jest resetowana i wtyczka oczekuje ponownie na kolejne wyjście używając wartości Timeout. Zobacz sekcję zwracana wartość, żeby dowiedzieć się w jaki sposób sprawdzić, czy został przekroczony czas (timeout).

Aby mieć pewność, że polecenia będą wykonywane bez problemów we wszystkich wersjach Windows, zaleca się użyć następującej składni:

nsExec::ExecToStack [OPCJE] '"ŚCIEŻKA_DOSTĘPU" parametr1 parametr2 parametrN'

Dzięki temu, ścieżka aplikacji może zawierać więcej niż 8 znaków (ze spacjami)

3. Zwracana wartość

Jeśli wtyczka nsExec nie może wykonać procesu, zwróci wartość error na górę stosu. Jeśli proces przekroczy czas wykonania, zwrócona zostanie wartość timeout. W każdym innym przypadku zwrócona zostaje wartość ustawiona przez wywoływany proces.

4. Autorzy

Copyright (c) 2002 Robert Rainwater

Podziękowania dla: Justin Frankel oraz Amir Szekely