2016-06-24 6 views
2

私のスクリプトには、exeを直接呼び出すのではなく、バッチファイルを呼び出す次のコード行があります。バッチスクリプトでExecコールからResultCodeを取得するにはどうすればよいですか?

Exec(ExpandConstant('{app}\App\bin\migrate.bat'), '', '', sw_show, ewWaitUntilTerminated, ResultCode); 

とバッチファイル(最上位のものは、デバッグの目的のために、ほとんどですが、後にユーザーとの対話のいくつかの並べ替えを含まれている場合があります)、このようになります。

echo %path% 
echo %cd% 
migrate.exe Obfuscate.dll /verbose /startupConfigurationFile="..\Web.config 
pause 

私は私がこのことについてどのように行くだろう、migrate.exeのからの戻りコードを取得し、あなたが通常のexeファイルを呼び出す直接からになるだろうと同じように、ResultCodeのようにそれを戻したいでしょうか?

答えて

4

私は革新-セットアップ経験がないし、それがこの状況をどのように処理するかが、あなたは一般的にこのような何かをするだろうバッチスクリプトの側から(自分の具体的な例に合わせた):

echo %path% 
echo %cd% 
migrate.exe Obfuscate.dll /verbose /startupConfigurationFile="..\Web.config 
set rc=%ERRORLEVEL% 
pause 
exit /b %rc% 

のもちろん、migrate.exeが成功すると0を返し、Inno-SetupのExecコールが "true"と "false"のような戻り値を解釈しているとします( "標準"なのでYMMV)。

+0

'rc'を割り当てる必要はありません。単に' exit/b%ErrorLevel% 'と書いてください... – aschipfl

+0

@aschipfl安全に遊んでいました。 'pause'がエラーレベルを変更するかどうかはわかりません。 –

+0

@aschipflこの特定の例では、答えはより安全ですが、OPが「終了」の前に他のコマンドを追加することを決めるべきです。 –

関連する問題