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

Java 如何通过自己的MSI静默安装JRE EXE?,java,java-8,wix,windows-installer,custom-action,Java,Java 8,Wix,Windows Installer,Custom Action,我有自己的msi,我正试图通过它安装JRE exe。我可以用这种方式管理其他前任。但是没有安装JRE EXE。下面是我得到的错误 MSI (s) (A0:C4) [05:10:08:690]: Executing op: CustomActionSchedule(Action=RUN_JAVA,ActionType=1042,Source=C:\Program Files (x86)\preRequisites\Java.exe,Target=/s,) MSI (s) (A0:B8) [05:1

我有自己的msi,我正试图通过它安装JRE exe。我可以用这种方式管理其他前任。但是没有安装JRE EXE。下面是我得到的错误

MSI (s) (A0:C4) [05:10:08:690]: Executing op: CustomActionSchedule(Action=RUN_JAVA,ActionType=1042,Source=C:\Program Files (x86)\preRequisites\Java.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)\preRequisites\Java.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>

Java EXE安装程序内部有一个Java MSI。Windows Installer具有阻止一个MSI安装另一个MSI的。您需要让其他进程安装一个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)\preRequisites\dotNet4.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)\preRequisites\VC2013.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)\preRequisites\VC2013.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)\preRequisites\VC2013.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)\preRequisites\VC2013.exe, command: /q 

Action ended 5:28:48: InstallFinalize. Return value 3.