0

连同我们的应用程序,我需要安装 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" 应该解决这个问题。此外,我正在从提升的命令提示符处静默运行安装程序。

有人有类似的问题吗?

4

1 回答 1

0

It is not possible to run another installer (i.e. the installshield installer) when an installer is already running (i.e. your installer).

You should look into making a bootstrap project (wix) where you install each installer in turn.

于 2014-11-04T09:28:24.263 回答