Wix:在 Wix 之外运行命令时,运行外部 InstallShield 安装程序失败,退出代码为 -3

Posted

技术标签:

【中文标题】Wix:在 Wix 之外运行命令时,运行外部 InstallShield 安装程序失败,退出代码为 -3【英文标题】:Wix: Running a external InstallShield installer fails with exit code -3 while running the command outside of Wix works 【发布时间】:2014-03-18 16:10:16 【问题描述】:

连同我们的应用程序,我需要安装 Gupta Team Developer Deploy 文件。这是一个可以通过命令静默运行的 InstallShield Exe "Deploy60.exe /s /f1"c:\temp\silentinstall.iss" 其中提供的文件是通过之前运行安装程序生成的。从命令提示符运行此命令就可以了。

所以我尝试使用这样的自定义操作在 Wix 中运行它:

<CustomAction Id="RunCenturaDeploy"                   
    Directory="TDREDIST"
    ExeCommand="[TDREDIST]deploy60.exe /s /SMS /f1[TDREDIST]silent.ini" 
    Execute="deferred"
    Impersonate="no"
    Return="asyncWait"/>

<InstallExecuteSequence>
    <Custom Action="RunCenturaDeploy" Before="InstallFinalize" />
</InstallExecuteSequence>

但是当我在 Wix 中运行它时,它不起作用并且自定义操作返回 -3(MSI 日志文件这样说): CustomAction RunCenturaDeploy 返回实际错误代码 -3(请注意,如果翻译发生在沙箱内,这可能不是 100% 准确) 操作于 16:07:33 结束:InstallFinalize。返回值 3。 行动于 16:07:33 结束:安装。返回值 3。

我可以看到该命令开始运行,因为这包括安装已安装的 Visual C++ 运行时,并且 InstallShield 图标显示该进程正在运行。 我考虑过权限问题,但 Impersonate="no" 应该解决这个问题。此外,我正在从提升的命令提示符处静默运行安装程序。

有人遇到过类似的问题吗?

【问题讨论】:

【参考方案1】:

当安装程序(即您的安装程序)已在运行时,无法运行另一个安装程序(即 installshield 安装程序)。

您应该考虑制作一个bootstrap project (wix),依次安装每个安装程序。

【讨论】:

以上是关于Wix:在 Wix 之外运行命令时,运行外部 InstallShield 安装程序失败,退出代码为 -3的主要内容,如果未能解决你的问题,请参考以下文章

wix - 错误CNDL0004:从命令行运行时,file元素包含意外的属性“src”

将Wix 3.0迁移到Wix 4.0时出现错误:WXCP0006:此节点前的空格不正确(WhitespacePrecedingNodeWrong)

即使使用 --no-build 标志运行 dotnet test 时如何避免 Wix 构建错误?

Wix 3.7:candle.exe 从命令行崩溃

WiX Bootstrapper:如何从命令行设置刻录变量?

Wix:修补时运行条件自定义操作(非完整安装)