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 构建错误?