2012-07-16 13 views
12

Tworzę swój pierwszy skrypt NSI i zastanawiam się, czy mogę wykonać polecenie z linii poleceń NSIS czy powinienem po prostu wykonać plik wsadowy? Naprawdę nie wiem, od czego zacząć, a inne podobne tematy nieco przeszły mi do głowy.Wykonaj polecenie Command-Line z NSIS

+0

Sieć [odpowiedzieć tutaj] (http: //stackoverflow.com/a/10900198/62576) może pomóc. Działa dobrze dla aplikacji wiersza poleceń. –

Odpowiedz

8

Spróbuj użyć exec polecenie http://nsis.sourceforge.net/Docs/Chapter4.html:

4.9.1.2 Exec

komenda

Wykonuje określony program i kontynuować natychmiast. Zauważ, że podany plik musi istnieć w systemie docelowym, a nie w systemie kompilującym. $OUTDIR jest używane do katalogu roboczego. Flaga błędu jest ustawiona, jeśli proces nie mógł zostać uruchomiony. Uwaga: jeśli polecenie może zawierać spacje, powinieneś umieścić je w cudzysłowie, aby ograniczyć je z parametrów. np .: Exec '"$INSTDIR\command.exe" parameters'. Jeśli nie umieścisz go w cudzysłowie, nie będzie działać w systemie Windows 9x z parametrami lub bez.

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

OK, miałem nadzieję, że będę w stanie kontrolować linię poleceń z .nsi i zrobić coś takiego: "copy/b someprogram.exe +" "Brzmi, że muszę to zrobić z pliku wsadowego. – user1457296

+3

czy wypróbowałeś 'Exec 'cmd/k copy/b ...''? – zenpoy

10

Polecam rzucić okiem na wtyczkę nsExec. Niedawno miałem sytuację, w której potrzebowałem pingować serwer z poziomu skryptu NSIS, a poniższy kod działał idealnie dla mnie.

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

Zaletą korzystania z nsExec jest to, że wykonuje polecenie bez tworzenia okna dos na ekranie. Zwracana wartość jest wypychana na stos, a istnieje kilka różnych sposobów dostępu do wyjścia programu (jeśli taki istnieje).

Nie ma dużo informacji o wtyczce na stronie NSIS, że udało mi się znaleźć, ale następujący link powinien zacząć grę w dobrym kierunku:

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

Edit:

Zauważyłem, że prosiłeś konkretnie o polecenie COPY, które jest wewnętrznym poleceniem DOS, co oznacza, że ​​nie będziesz w stanie wykonać go tak jak w przypadku pingowania. Mogę się mylić, ale nie powinieneś używać żadnych programów zewnętrznych do wykonywania podstawowych poleceń, takich jak ten. Powinieneś być w stanie replikować większość wewnętrznych poleceń za pomocą poleceń NSIS.

na przykład skopiować plik (lub wiele plików) należy użyć polecenia NSIS: CopyFiles

NSIS Scripting Reference jest twoim przyjacielem :) (tak, to ctrl + f)

+0

Po prostu odpowiednia opcja do uruchomienia aplikacji bez wyświetlania wiersza polecenia –

Powiązane problemy