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

时间:2017-05-22 23:44:43

标签: java java-8 wix windows-installer custom-action

我有自己的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)\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>

我尝试使用命令#34运行jre; / s的&#34 ;.它安静地安装。为什么通过我的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.

1 个答案:

答案 0 :(得分:3)

Java EXE安装程序内部有一个Java MSI。 Windows Installer有mutex,阻止一个MSI安装另一个MSI。您需要安装一个其他进程安装一个MSI,然后安装另一个。

相关问题