2017-02-17 40 views
0

コード内にバッチファイルを作成するコンソールアプリケーションを作成しました。これは、mage.exeを使用してアプリケーションマニフェストファイルを自動的に更新して再署名しますバージョンが公開されます。Mage.exeバッチマニフェストの更新が成功したかどうかを確認する - ClickOnce

このバッチファイルは、作成後、同じコンソールアプリケーションで実行されます。

mage.exeバッチファイルがマニフェストの更新や署名に失敗したかどうかを判断する方法があるかどうかを知りたいですか?

ご意見やご感想をお寄せください。 TnTinMnのコメントを1として

UPDATE

、私はマニフェストの更新に失敗するバッチを余儀なくされました。これにより、終了コード1が返されました。エラー処理を行うために、終了コードをどのように抽出することができますか?イムは、以下を実行:デバッグとSVALオブジェクトのプロパティを見ながら

Dim procInfo As New ProcessStartInfo() 
procInfo.UseShellExecute = True 
procInfo.FileName = (sDriveLetter & ":\updatemanifest.bat") 
procInfo.WorkingDirectory = "" 
procInfo.Verb = "runas" 
procInfo.WindowStyle = ProcessWindowStyle.Hidden 
Dim sval As Object = Process.Start(procInfo) 'I tested the object to see if there is indeed a value that i can use. 

、終了コードは1に設定されているが、私はそこからそれを取り出すように見えることはできません。

+2

失敗した場合、Mageは終了コードを返しますか?その場合は、バッチファイルのErrorLevelを確認してください。 – TnTinMn

+0

@TnTinMnはチップをありがとう。私は私の質問を更新しました。 – J2H656

+0

これはどういう意味ですか? 'svalオブジェクトのプロパティを見て、終了コードは1に設定されていますが、そこから抽出できないようです。 'あなたの現在の問題は何か分かりませんか?また、updatemanifest.batの内容を表示することも可能です。 – TnTinMn

答えて

0

Process.ExitCodeを取得する前にプロセスが終了するまで待つことができる2つの方法があります。

ブロッキング・コールであるように、第1:Process.WaitForExit

及び第2 Exitイベントを使用することです。

Private Sub RunProcess() 
    Dim psi As New ProcessStartInfo() 
    psi.UseShellExecute = True 
    psi.WindowStyle = ProcessWindowStyle.Hidden 
    psi.FileName = "cmd.exe" 
    psi.Arguments = "/c Exit 100" 


    Dim proc As Process = Process.Start(psi) 
    proc.EnableRaisingEvents = True 
    AddHandler proc.Exited, AddressOf ProcessExited 
End Sub 

Private Sub ProcessExited(sender As Object, e As EventArgs) 
    Dim proc As Process = DirectCast(sender, Process) 
    proc.Refresh() 
    Dim code As Int32 = proc.ExitCode 
    Me.BeginInvoke(Sub() MessageBox.Show(String.Format("Process has exited with code: {0}", code)), Nothing) 
    proc.Dispose() 
End Sub