Ações personalizadas do Windows Installer: a ação de confirmação não será executada

Eu estou projetando um projeto de instalador do windows usando o WIX. Agora ele falha na instalação, porque a ação customizada de Confirmação não será executada, o que é causado, estranhamente, porque uma ação customizada de sequência planejada tem uma rota para retornarActionResult.Success. Deixe-me explicar em detalhes:

Basicamente eu tenho duas ações personalizadas com relação à instalação: uma chamada CommitCA e uma chamada InstallCA. O cronograma de execução está listado abaixo:

<CustomAction Id="CommitCA" BinaryKey="CustomActionDll" DllEntry="CommitCA" Execute="commit" Return="check" Impersonate="no"/>
<CustomAction Id="InstallCA" BinaryKey="CustomActionDll" DllEntry="InstallCA" Execute="deferred" Return="check" Impersonate="no"/>

Eu verifiquei do ORCA que no instalador compilado, o CommitCA está programado antes de InstallCA. O tipo de CommitCA é 3585 e o InstallCA é 3703 (não consigo encontrar a referência a eles, mas suponho que um é para ação de commit e o outro é uma ação deferida como declarei). A ideia é que no CommitCA ele irá gerar algum arquivo que será utilizado pela InstallCA.

A estrutura do meuInstallCA se parece com isso:

Try
    ' Do some work
    ...

Catch ex As Exception
    ' Log the failure into installation log
    Return ActionResult.Failure
End Try
Return ActionResult.Success

Aí vem a parte confusa: originalmente eu tenho uma versão de trabalho, onde eu não tinha a linha de retornoActionResult.Failure noCatch quadra. Em outra palavra, a função ainda registra a falha, mas eventualmente retornaSuccess mesmo se uma exceção foi lançada. Eu acho um pouco enganador, porque às vezes quando acontece uma exceção e eu verificar o log, ele diz que a ação personalizada foi bem-sucedida. É por isso que eu adicionei a linha

        Return ActionResult.Failure

No entanto, agora não funciona mais! Sempre que eu instalo, acho que meuCommitCA nunca é executado. NOTA: não oInstallCA, que tem a única modificação de código que fiz, mas oCommitCA, que na verdade está programado antes doInstallCA. E quando eu digo "nunca é executado", quero dizer que não consigo encontrar qualquer entrada de log que eu coloquei dentro das chamadas de função, eMMSIBREAK variável de ambiente nem funciona (a janela que me informa para anexar ao processo rundll32 nunca aparece). Mas o seguinteInstallCA ainda é executado.

Se eu comentar a linhaReturn ActionResult.Failure, tudo funciona de novo: eu posso ligar para entrarCommitCA eInstallCA é chamado também.

Provavelmente, há algo que eu não entendi sobre o resultado de retorno da ação personalizada. Eu não deveria voltar?ActionResult.Failure nesta situação? Mas na verdade eu voltoActionResult.Failure em alguns outros lugares também. Na verdade, noCommitCA função em si, usei a mesma estrutura: retornandoActionResult.Failure noCatch quadra. Então alguém poderia me dizer o que eu fiz de errado?

questionAnswers(1)

yourAnswerToTheQuestion