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
Odpowiedz
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'
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
czy wypróbowałeś 'Exec 'cmd/k copy/b ...''? – zenpoy
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)
Po prostu odpowiednia opcja do uruchomienia aplikacji bez wyświetlania wiersza polecenia –
- 1. Wykonaj polecenie CMD z kodu
- 2. Wykonaj zewnętrzne polecenie
- 3. Wykonaj polecenie powłoki
- 4. Wykonaj polecenie powłoki synchronicznie z Elixir/Erlang
- 5. Wykonaj polecenie odmówione użytkownikowi readonlyuser
- 6. Wykonaj polecenie xp_cmdshell jako konkretny użytkownik
- 7. Wykonaj kolorowane polecenie ze skryptu php.
- 8. Wykonaj polecenie redis FLUSHALL w aplikacji szyny
- 9. Wykonaj tablicę ciągów opisujących polecenie powłoki
- 10. Bash, wykonaj polecenie, ale kontynuuj sesję interaktywną
- 11. Boto Wykonaj polecenie powłoki na instancji EC2
- 12. Wykonaj polecenie tuż przed pójściem spać Mac
- 13. Wykonaj polecenie cat z poleceniem sed w linux
- 14. wyjście polecenie Wyłącz system Windows przy użyciu „ExecWait” w NSIS
- 15. Nie można znaleźć metody commandLine()
- 16. W gradle zadań typu Exec, dlaczego polecenie commandLine i plik wykonywalny zachowują się inaczej?
- 17. instalatora NSIS z .NET 4.5
- 18. Instalator NSIS z .NET 4.0
- 19. Wykonaj polecenie Wstaw i zwróć wstawiony identyfikator w Sql
- 20. Mysql: Wykonaj polecenie odmówione użytkownikowi '' @ 'localhost' dla rutynowego błędu
- 21. Wykonaj polecenie dla każdego pliku w celu phing
- 22. Wykonaj polecenie w wierszu polecenia za pomocą programu excel VBA
- 23. Rozmieszczanie wojny w Jboss 7.0.1 do Commandline
- 24. Wykonaj XQuery z PHP
- 25. Nazwa instalatora NSIS
- 26. NSIS - Silent Autoupdate Application
- 27. Flaga błędu instalatora NSIS
- 28. Zmiana właściwości instalatora NSIS
- 29. Zapisywanie dziennika instalacji NSIS
- 30. Podłoża NSIS według indeksu
Sieć [odpowiedzieć tutaj] (http: //stackoverflow.com/a/10900198/62576) może pomóc. Działa dobrze dla aplikacji wiersza poleceń. –