我有一个类型2自定义操作,它正在执行一个带有参数的可执行文件。我需要在InstallWelcome对话框之前执行此CA,因为它用于收集一些信息,以便在以后预填充对话框。因此,我在CostFinalize操作后在InstallUISequence中对此CA进行了排序,但是安装程序未能执行它,错误如下所示。
如果我在InstallExecuteSequence序列中移动CA,它将按预期执行。(正如在后面的注释中解释的,这不是真的,它在这个序列中也失败了)。
有人知道会发生什么事吗?
可能是有用的信息,:如果在Type18CustomAction中使用相同的可执行文件(该可执行文件与应用程序的二进制文件一起安装),那么它的执行就没有问题。
<CustomAction Id='RunEXE' BinaryKey='EditCfg.exe.CA.ID' ExeCommand='[INSTALLFOLDER][SEPARATOR][CONFIG_FILE_NETWORK_LOCATION][SEPARATOR][USER_NAME][SEPARATOR][PASSWORD][SEPARATOR][WIX_UPGRADE_DETECTED][SEPARATOR][CHECKED_RULE][SEPARATOR][CERTIFICATE_LOCATION]' Execute='immediate' Impersonate='no' Return='check' />
<Binary Id='EditCfg.exe.CA.ID' SourceFile='path_to_the_exe_file'/>
MSI (c) (14:04) [15:18:36:452]: Note: 1: 2228 2: 3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1722
Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor. Action RunEXE, location: C:\Users\yyyyy\AppData\Local\Temp\MSIC8A9.tmp, command: param1§param2§param3§§param5§§param7发布于 2019-10-02 02:23:27
1722错误指示exe返回一个非零退出代码.如果这是预期的,您可以将返回属性更改为使用ignore而不是check。但是,如果没有预料到,您可能需要找出返回代码所指示的是什么,因为这是某种类型的失败的可能性很大。
以下是一些可能导致失败的事情:
无论如何,请注意,exe自定义操作无法将有用的数据传输回Windows安装程序会话,因此,如果没有其他基于DLL的操作或系统搜索的帮助,将很难利用它在UI中找到(或创建)的任何数据。如果您还添加了一个基于dll的操作,您可能会发现从该操作启动exe (甚至将它所做的工作完全合并到dll中)更为友好,因为您可以记录比这里看到的更好的诊断信息。
https://stackoverflow.com/questions/58186481
复制相似问题