2016-04-16 13 views
0

Ich verwendete Procrun, um einen Windows-Dienst zu erstellen, und versuchte, es mithilfe von WIX zu installieren. Ich habe alle erforderlichen Registrierungsschlüssel an den entsprechenden Stellen platziert. Aber der Dienst ist immer noch nicht in den lokalen Diensten aufgeführt. Unten ist mein Code.Wix-Dienst nicht in den lokalen Diensten

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 

    <Product Id="*" Name="DummyInstaller" Language="1033" Version="1.0.0.0" Manufacturer="Bryan" UpgradeCode="94D1BC64-7CC1-45DA-BD5F-8ED40980E75C"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Platform="x64"/> 

    <Property Id="JAVA_CURRENT_VERSION64"> 
     <RegistrySearch Id="JRE_CURRENT_VERSION_REGSEARCH64" Root="HKLM" Key="SOFTWARE\JavaSoft\Java Runtime Environment" Name="CurrentVersion" Type="raw" Win64="yes" /> 
    </Property> 

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
    <MediaTemplate /> 

    <Feature Id="ProductFeature" Title="DummyInstaller" Level="1" > 
     <!--<ComponentGroupRef Id="NewFilesGroup" />--> 
     <ComponentRef Id="REGISTRY_A" /> 
     <ComponentRef Id="PROCRUN.EXE"/> 
    </Feature> 
    </Product> 

    <Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFiles"> 
     <Directory Id="DummyDir" Name="DummyInstaller"> 
      <!--<Directory Id="MyProgramDir" Name="MosquittoNew" />--> 
      <Directory Id="SERVERDIR" Name="Kube2UpdaterService"> 
      <Component Id="REGISTRY_A" DiskId="1" Guid="*" Win64="no"> 
       <RegistryKey Root="HKLM" Key="SOFTWARE\Apache Software Foundation\Procrun 2.0\Kube2UpdaterService\Parameters\Java" Action="createAndRemoveOnUninstall"> 
       <RegistryValue Type="string" Name="Classpath" Value="E:\Service\Update_Service-1.0.jar" KeyPath="yes" /> 
       <RegistryValue Type="string" Name="Jvm"  Value="C:\Program Files\Java\jdk1.8.0_25\jre\bin\server\jvm.dll" /> 
       <RegistryValue Type="multiString" Action="append" Name="Options"> 
        <MultiStringValue Type="multiString" Name="Options" Action="append">-Duser.language=en</MultiStringValue> 
        <MultiStringValue Type="multiString" Name="Options" Action="append">-Duser.region=US</MultiStringValue> 
       </RegistryValue> 
       <RegistryValue Type="integer" Name="JvmMs" Value="256" /> 
       <RegistryValue Type="integer" Name="JvmMx" Value="1024" /> 
       <RegistryValue Type="integer" Name="JvmSs" Value="4000" /> 
       </RegistryKey> 
       <RegistryKey Root="HKLM" Key="SOFTWARE\Apache Software Foundation\Procrun 2.0\Kube2UpdaterService\Parameters\Log" Action="createAndRemoveOnUninstall"> 
       <RegistryValue Type="string" Name="Path" Value="c:\logs" /> 
       <RegistryValue Type="string" Name="Level" Value="Error" /> 
       <RegistryValue Type="string" Name="Prefix" Value="Kube2UpdaterService" /> 
       <RegistryValue Type="string" Name="StdError" Value="c:\logs\stderr.txt" /> 
       <RegistryValue Type="string" Name="StdOutput" Value="c:\logs\stdout.txt" /> 
       </RegistryKey> 
       <RegistryKey Root="HKLM" Key="SOFTWARE\Apache Software Foundation\Procrun 2.0\Kube2UpdaterService\Parameters\Start" Action="createAndRemoveOnUninstall"> 
       <RegistryValue Type="string" Name="Mode" Value="jvm" /> 
       <RegistryValue Type="string" Name="Class" Value="com.kohls.kube.services.updater.UpdaterServiceMain" /> 
       <RegistryValue Type="string" Name="Params" Value="start" /> 
       </RegistryKey> 
       <RegistryKey Root="HKLM" Key="SOFTWARE\Apache Software Foundation\Procrun 2.0\Kube2UpdaterService\Parameters\Stop" Action="createAndRemoveOnUninstall"> 
       <RegistryValue Type="string" Name="Mode" Value="jvm" /> 
       <RegistryValue Type="string" Name="Class" Value="com.kohls.kube.services.updater.UpdaterServiceMain" /> 
       <RegistryValue Type="string" Name="Method" Value="stop" /> 
       <RegistryValue Type="string" Name="Params" Value="stop" /> 
       <RegistryValue Type="string" Name="StdOutput" Value="auto" /> 
       </RegistryKey> 
       <RegistryKey Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\Kube2UpdaterService" Action="createAndRemoveOnUninstall"> 
       <RegistryValue Type="string" Name="Description" Value="Kube updater service performing updates and installation" /> 
       <RegistryValue Type="string" Name="DisplayName" Value="Kube2UpdaterService" /> 
       <RegistryValue Type="string" Name="ImagePath" Value="E:\Service\prunsrv.exe //RS//Kube2UpdaterService" /> 
       <RegistryValue Type="string" Name="DependsOnService" Value="Tcpip Afd" /> 
       <RegistryValue Type="string" Name="ObjectName" Value="LocalSystem" /> 
       <RegistryValue Type="integer" Name="ErrorControl" Value="1" /> 
       <RegistryValue Type="integer" Name="Start" Value="2" /> 
       <RegistryValue Type="integer" Name="Type" Value="16" /> 
       </RegistryKey> 
       <RegistryKey Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\Kube2UpdaterService\Parameters" Action="createAndRemoveOnUninstall"> 
       <RegistryValue Type="string" Name="Test" Value="Pass" /> 
       </RegistryKey> 
      </Component> 

      <Component Id="PROCRUN.EXE" DiskId="1" Guid="468C2DB3-F722-4DE6-8A91-B6FB8009757D" Win64="no"> 
       <!-- this is the renamed procrun 64 bit executable --> 
       <File Id="prunsrv.exe" Name="prunsrv.exe" Source="E:\Service\prunsrv.exe" /> 
       <ServiceInstall Id="PROCRUN" Type="ownProcess" Name="Kube2UpdaterService" DisplayName="Kube2UpdaterService" Description="Kube 2.0 Updater Service" Start="auto" Account="LocalService" ErrorControl="normal" Arguments=" //RS//Kube2UpdaterService" /> 
       <ServiceControl Id="StartPRUNSRV" Start="install" Stop="both" Remove="uninstall" Name="Kube2UpdaterService" Wait="no" /> 
      </Component> 
      </Directory> 
     </Directory> 
     </Directory> 
    </Directory> 
    </Fragment> 

</Wix> 

Was mache ich hier falsch? Bitte um Rat.

Antwort

1

Alle Registrierungsschlüssel unter HKLM \ SYSTEM \ CurrentControlSet \ Services werden als Windows-intern betrachtet. Der unterstützte Weg in MSI zum Konfigurieren von Windows-Diensten besteht darin, die Service * -Tabellen wie ServiceInstall zu verwenden.

0

Sie:

<File Id="prunsrv.exe" Name="prunsrv.exe" Source="E:\Service\prunsrv.exe" /> 

Bedürfnisse zu setzen

<File Id="prunsrv.exe" Name="prunsrv.exe" Source="E:\Service\prunsrv.exe" Keypath="yes" /> 

Ich weiß nicht, warum, aber es hilft