Here's an updated run anywhere example that will use spath in the evals to try to limit the amount of memory you need when running the query. It will be difficult to deal with the multiple events in a single event until you get your conf line breaks fixed on these events. This query is assuming the ID on the message is what is used to unite the two messages. If that is not the case let me know:
| makeresults count=1
| fields - _time
| eval data="<Message>
<ID>00000000-0000-0000-0000-000000000000</ID>
<Date>2019-04-27 19:33:27.06</Date>
<Text>Launched application: MMViewer, PID: 7988</Text>
<Category></Category>
<Source>Workflow</Source>
<Level>Event</Level>
<Class>General</Class>
<Module>WorkflowHost</Module>
<Method></Method>
<FileName></FileName>
<LineNumber>0</LineNumber>
<ProcessID>6836</ProcessID>
<User>e1e2f1a39246e0cc7e611c8d180e8f6c</User>
<Parameters></Parameters>
</Message>
<Message>
<ID>00000000-0000-0000-0000-000000000000</ID>
<Date>2019-04-27 19:34:42.04</Date>
<Text>Application: MMViewer, PID: 7988 failed</Text>
<Category></Category>
<Source>Workflow</Source>
<Level>Warning</Level>
<Class>General</Class>
<Module>WorkflowHost</Module>
<Method></Method>
<FileName></FileName>
<LineNumber>0</LineNumber>
<ProcessID>6836</ProcessID>
<User>e1e2f1a39246e0cc7e611c8d180e8f6c</User>
<Parameters></Parameters>
</Message>"
| rex mode=sed field=data "s/ +</</g"
| rex mode=sed field=data "s/\n +\n/\n\n/g"
| rex mode=sed field=data "s/\n\n/█/g"
| makemv data delim="█"
| mvexpand data
| eval "Message.Date"=strptime(spath(data, "Message.Date"), "%Y-%m-%d %H:%M:%S.%2N")
| eval Launched=if(match(spath(data, "Message.Text"), "Launched"), 'Message.Date', null())
| eval LaunchName=if(match(spath(data,"Message.Text"), "Launched"), spath(data,"Message.Text"), null())
| eval Failed=if(match(spath(data,"Message.Text"), "failed"), 'Message.Date', null())
| eval "Message.ID"=spath(data, "Message.ID")
| stats values(LaunchName) as "Launched Application" values(Launched) as Launched values(Failed) as Failed by "Message.ID"
| fieldformat Launched=strftime(Launched, "%Y-%m-%d %H:%M:%S.%2N")
| fieldformat Failed=strftime(Failed, "%Y-%m-%d %H:%M:%S.%2N")
| eval duration=Failed-Launched
... View more