2017-06-26 52 views
-1

私のnsisスクリプトが、スクリプト内の前のステートメントによって正常にインストールされたコマンドラインを実行したい。私のnsisスクリプトがWindows 10上でexecWaitコマンドを実行できないのはなぜですか?

私の問題を解決する方法
Section "install" 
// Files copy statements 
SectionEnd 

Section "command" 
    nsExec::ExecToLog 'cmd.exe /c "$INSTDIR\SystemMaitainer.exe" -install' 
    Pop $0 
    DetailPrint "" 
    DetailPrint "  Return value: $0" 
    DetailPrint "" 
SectionEnd 

:しかし、それは常に

C:\mypath\SystemMaitainer.exe' is not recognized as an internal or external command, operable program or batch file. 

を示す失敗した私は以下のように「インストール」セクションの後に、関連するコードを置きますか?ありがとう!なぜ "nsEXec"に関するステートメントはいつも失敗しますが、コマンドはcmdで正常に実行できますか?

調査の後、私のスクリプトが動作することができ、私は以下のように一緒にexecwaitコマンドとコピー文を置く必要があります。

Section "serverice" 
    ClearErrors 
    SetOutPath "$SYSDIR" 
    file "mycmd.exe" 

    ExecWait '"$SYSDIR\mycmd.exe" -option' 
SectionEnd 

しかし、それは、Windows 7上で完璧に働いたが、それは、Windows 10上で失敗し、ExecWaitができます正常に実行され、retエラーメッセージが表示されない場合は、もう一度手伝ってください!私は非常に私を助けてくれた人に感謝しています!

+0

。また、$ InstDirはWindowsディレクトリ内にありますか?プログラムファイル? – Anders

+0

Windows dir、ありがとう! – alexunder

+0

あなたの例に 'File'コマンドをまだ追加していません。また、$ InstDirの値が何であるかも知りたい。 – Anders

答えて

1

このエラーメッセージは、cmd.exeからのものです。 SystemMaitainerのスペルが間違っている、おそらくそれは問題ですか?あるいは、WOW64リダイレクションをcopyコマンドで無効にしても、execコマンドでは無効にしたのでしょうか?

stdoutリダイレクトを実行していない場合は、コマンドの先頭にcmd /cを付ける必要はありません。

$ SysDirは64ビットシステム上に2つのsystem32ディレクトリが存在するため特殊です。

あなたは$WinDir\SysNative\またはx64.nshのマクロと32ビットプロセスでは64ビットのsystem32ディレクトリにアクセスすることができます役立つだろう `File`コマンドを表示

!include x64.nsh 
${DisableX64FSRedirection} 
ExecWait '"$SysDir\app.exe"' 
${EnableX64FSRedirection} 
+0

あなたのポストをありがとう。更新された質問がありますが、私はWin10で問題を抱えています。 – alexunder

+0

はい!それが重要なポイントです!私も自分でそれを見つける!これら2つのX86のマクロの間にexec文を置く必要があります。ありがとう! – alexunder

関連する問題