如何通过我自己的 MSI 静默安装 JRE EXE



我有自己的msi,我正在尝试通过它安装JRE exe。我能够以这种方式运行其他 EXE。但是 JRE EXE 没有安装。以下是我得到的错误。

MSI (s) (A0:C4) [05:10:08:690]: Executing op: CustomActionSchedule(Action=RUN_JAVA,ActionType=1042,Source=C:Program Files (x86)preRequisitesJava.exe,Target=/s,)
MSI (s) (A0:B8) [05:10:32:587]: Running as a service.
CustomAction RUN_JAVA returned actual error code 1618 (note this may not be 100% accurate if translation happened inside sandbox)
MSI (c) (FC:BC) [05:10:35:397]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
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 RUN_JAVA, location: C:Program Files (x86)preRequisitesJava.exe, command: /s 
Action ended 5:10:38: InstallFinalize. Return value 3.
Action ended 5:10:39: INSTALL. Return value 3.

下面是我为我的 MSI 准备的 WiX 文件。

<Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLLOCATION" Name="preRequisites">
          <Component Id="ProductComponent" Guid="7927FC46-E8C5-4FEA-A683-C275C08FB4D5" KeyPath="yes">
            <File Id="VC2013.exe" Name="VC2013.exe" Source="../../Setups/PreRequisites/kkube-prerequisites/vcredist_x86_2013.exe" DiskId="1"/>
            <File Id="VC2015.exe" Name="VC2015.exe" Source="../../Setups/PreRequisites/kkube-prerequisites/vcredist_x86_2015.exe" DiskId="1"/>
            <File Id="Java.exe" Name="Java.exe" Source="../../Setups/PreRequisites/kkube-prerequisites/jre-8u92-windows-x64.exe" DiskId="1"/>
            <File Id="dotNet4.5Installer.exe" Name="dotNet4.5Installer.exe" Source="../../Setups/PreRequisites/kkube-prerequisites/dotNet4.5Installer.exe" DiskId="1"/>
          </Component>
        </Directory>
      </Directory>
    </Directory>
    <CustomAction Id="RUN_VC2013" FileKey="VC2013.exe" ExeCommand="/q" Execute="deferred" Return="check" />
    <CustomAction Id="RUN_VC2015" FileKey="VC2015.exe" ExeCommand="/q" Execute="deferred" Return="check" />
    <CustomAction Id="RUN_JAVA" FileKey="Java.exe" ExeCommand="/s" Execute="deferred" Return="check" />
    <CustomAction Id="RUN_DOTNET" FileKey="dotNet4.5Installer.exe" ExeCommand="/q" Execute="deferred" Return="check" />
    <InstallExecuteSequence>
      <Custom Action="RUN_VC2013" Before="InstallFinalize">NOT Installed</Custom>
      <Custom Action="RUN_VC2015" Before="InstallFinalize">NOT Installed</Custom>
      <Custom Action="RUN_JAVA" Before="InstallFinalize">NOT Installed</Custom>
      <Custom Action="RUN_DOTNET" Before="InstallFinalize">NOT Installed</Custom>
    </InstallExecuteSequence>
    <Feature Id="ProductFeature" Title="preRequisites" Level="1">
      <ComponentRef Id="ProductComponent" />
    </Feature>

我尝试使用命令"/s"运行 jre。它以静默方式安装。为什么通过我的 MSI 安装时会失败?我怎样才能做到这一点?任何帮助将不胜感激。

编辑:我尝试按如下所示订购安装顺序。

<InstallExecuteSequence>
  <Custom Action="RUN_DOTNET" Before="InstallFinalize">NOT Installed</Custom>
  <Custom Action="RUN_VC2013" After="RUN_DOTNET">NOT Installed</Custom>
  <Custom Action="RUN_VC2015" After="RUN_VC2013">NOT Installed</Custom>
  <Custom Action="RUN_JAVA" After="RUN_VC2015">NOT Installed</Custom>      
</InstallExecuteSequence>

然后我得到下面显示的错误。

MSI (s) (40:7C) [05:25:40:920]: Executing op: ActionStart(Name=RUN_DOTNET,,)
MSI (s) (40:7C) [05:25:40:920]: Executing op: CustomActionSchedule(Action=RUN_DOTNET,ActionType=1042,Source=C:Program Files (x86)preRequisitesdotNet4.5Installer.exe,Target=/q,)
MSI (s) (40:7C) [05:28:05:286]: Executing op: ActionStart(Name=RUN_VC2013,,)
MSI (s) (40:7C) [05:28:05:286]: Executing op: CustomActionSchedule(Action=RUN_VC2013,ActionType=1042,Source=C:Program Files (x86)preRequisitesVC2013.exe,Target=/q,)
MSI (s) (40:F8) [05:28:15:574]: Running as a service.
MSI (s) (40:F8) [05:28:21:953]: Running as a service.
MSI (s) (40:F8) [05:28:27:994]: Running as a service.
MSI (s) (40:F8) [05:28:34:119]: Running as a service.
CustomAction RUN_VC2013 returned actual error code 1618 (note this may not be 100% accurate if translation happened inside sandbox)
MSI (s) (40:7C) [05:28:34:431]: Note: 1: 1722 2: RUN_VC2013 3: C:Program Files (x86)preRequisitesVC2013.exe 4: /q 
MSI (s) (40:7C) [05:28:34:431]: Note: 1: 2205 2:  3: Error 
MSI (s) (40:7C) [05:28:34:431]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1722 
MSI (c) (84:D8) [05:28:34:541]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg
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 RUN_VC2013, location: C:Program Files (x86)preRequisitesVC2013.exe, command: /q 
MSI (s) (40:7C) [05:28:48:603]: Note: 1: 2205 2:  3: Error 
MSI (s) (40:7C) [05:28:48:603]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1709 
MSI (s) (40:7C) [05:28:48:603]: Product: KubePreRequisites -- 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 RUN_VC2013, location: C:Program Files (x86)preRequisitesVC2013.exe, command: /q 
Action ended 5:28:48: InstallFinalize. Return value 3.
Java

EXE 安装程序内部有一个 Java MSI。 Windows Installer有一个互斥锁,可以防止一个MSI安装另一个MSI。 您需要让其他一些进程安装一个 MSI,然后安装另一个。

最新更新