18

最初のNSIスクリプトを作成していますが、NSISからコマンドラインコマンドを実行できるのか、それともバッチファイルを実行するだけなのか疑問に思っています。どこから始めればいいのかわからないので、他の同様のトピックが少し頭に浮かびました。

4

3 に答える 3

13

nsExec プラグインを確認することをお勧めします。私はつい最近、NSIS スクリプト内からサーバーに ping を実行する必要がある状況に遭遇しましたが、次のコードは完璧に機能しました。

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

nsExec を使用する利点は、画面に DOS ボックスをポップアップ表示せずにコマンドを実行できることです。戻り値はスタックにプッシュされ、プログラムの出力 (存在する場合) にアクセスする方法もいくつかあります。

私が見つけた NSIS Web サイトには、プラグインに関する多くの情報はありませんが、次のリンクから正しい方向に進むことができます。

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

編集:

内部 DOS コマンドである COPY コマンドについて具体的に尋ねられたことに気付きました。つまり、私が ping で行ったようにそれを実行することはできません。私が間違っているかもしれませんが、このような基本的なコマンドを実行するために外部プログラムを使用する必要はありません。NSIS コマンドを使用して、ほとんどの内部コマンドを複製できるはずです。

たとえば、ファイル (または複数のファイル) をコピーするには、NSIS コマンドを使用します: CopyFiles

NSIS Scripting Referenceはあなたの友達です :) (ctrl+f も同様です)

于 2012-07-18T14:15:04.483 に答える
10

execコマンドhttp://nsis.sourceforge.net/Docs/Chapter4.htmlを使用してみてください:

4.9.1.2 Exec

指図

指定されたプログラムを実行し、すぐに続行します。指定されたファイルは、コンパイルシステムではなく、ターゲットシステムに存在する必要があることに注意してください。$OUTDIR作業ディレクトリに使用されます。プロセスを起動できなかった場合は、エラーフラグが設定されます。コマンドにスペースを含めることができる場合は、コマンドを引用符で囲んでパラメーターから区切る必要があることに注意してください。例:Exec '"$INSTDIR\command.exe" parameters'。引用符で囲まないと、パラメーターの有無にかかわらずWindows9xでは機能しません。

Exec '"$INSTDIR\someprogram.exe"'
Exec '"$INSTDIR\someprogram.exe" some parameters'
于 2012-07-16T21:47:27.170 に答える