2016-04-16 1 views
0

J'ai utilisé procrun pour créer un service Windows et essayé de l'installer en utilisant WIX. J'ai placé toutes les clés de registre requises aux endroits appropriés. Mais le service n'est toujours pas répertorié dans les services locaux. Voici mon code.Service Wix non répertorié dans les services locaux

<?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> 

Qu'est-ce que je fais mal ici? Veuillez nous conseiller

Répondre

1

Toutes les clés de registre sous HKLM \ SYSTEM \ CurrentControlSet \ Services sont considérées comme internes à Windows. La manière prise en charge dans MSI pour configurer les services Windows consiste à utiliser les tables Service *, telles que ServiceInstall.

0

Votre:

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

doit définir être

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

Je ne sais pas pourquoi, mais ça aide