1

我有一个执行命令行工具的自定义操作:

    <CustomAction Id="QtExecUpdateDatabase_Cmd" Property="QtExecUpdateDatabase" Value="&quot;[#DATABASEUPDATER.EXE]&quot;" Execute="immediate" />
<CustomAction Id="QtExecUpdateDatabase" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="check" />
<InstallExecuteSequence>
  <Custom Action="QtExecUpdateDatabase_Cmd" After="CostFinalize">NOT REMOVE</Custom>
  <Custom Action="QtExecUpdateDatabase" After="InstallFiles" >NOT REMOVE</Custom>
</InstallExecuteSequence>

在某些情况下,它会失败。msi 日志如下所示:

SI (s) (98:98) [16:44:06:765]: Executing op: CacheSizeFlush(,)
MSI (s) (98:98) [16:44:06:765]: Executing op: InstallProtectedFiles(AllowUI=1)
MSI (s) (98:98) [16:44:06:765]: Executing op: ActionStart(Name=QtExecUpdateDatabase,,)
Action 16:44:06: QtExecUpdateDatabase. 
MSI (s) (98:98) [16:44:06:781]: Executing op: CustomActionSchedule(Action=QtExecUpdateDatabase,ActionType=1025,Source=BinaryData,Target=CAQuietExec,CustomActionData="D:\Documents and Settings\edugarcia\Configuración local\Datos de programa\Gamesa\HCAOffline\DatabaseUpdater.exe")
MSI (s) (98:B0) [16:44:06:796]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI2D.tmp, Entrypoint: CAQuietExec
MSI (s) (98:EC) [16:44:06:796]: Generating random cookie.
MSI (s) (98:EC) [16:44:06:812]: Created Custom Action Server with PID 3804 (0xEDC).
MSI (s) (98:90) [16:44:06:828]: Running as a service.
MSI (s) (98:90) [16:44:06:843]: Hello, I'm your 32bit Impersonated custom action server.
CAQuietExec:  Error 0x80131700: Command line returned an error.
CAQuietExec:  Error 0x80131700: CAQuietExec Failed
Action ended 16:44:07: InstallFinalize. Return value 3.

有没有办法记录命令行工具返回的错误消息?

这个命令行工具有它自己的日志,但是,失败后,所有的安装过程都会回滚,包括我的珍贵日志。如何告诉 wix 不要删除我的命令行工具的 de 日志?

4

2 回答 2

0

这是解决方案

应用程序写入的任何文本(stdout 和 stderr)都会写入日志,任何非零退出代码都被解释为失败,导致 CAQuietExec 也返回失败。

于 2013-10-08T09:40:43.933 回答
0

我不明白你断言 WiX 正在回滚日志。Windows Installer 只回滚它创建的内容。如果它调用了一个 EXE 并且该 EXE 写入了一个日志,那么 MSI 不会知道这一点并且不会回滚它。

FWIW,进程外的 EXE 调用破坏了 MSI 的目的。最好弄清楚它的作用并尽可能以最好的方式做到这一点。

于 2013-10-08T18:50:21.557 回答