Есть ли у кого-нибудь полный пример конфигурации wix для установки службы Java на основе procrun?

Я работал над проектом, в котором мне нужно установить службу Java, работающую как приложение весенней загрузки, из установщика Wix для Windows. Он должен автоматически определять, существует ли уже глобально установленный экземпляр JRE в системе, и если да, использовать его, в противном случае установить частную JRE для этого приложения. После поиска полных решений и проработки множества различных проблем я разработал конфигурацию, которая работает. Он вручную устанавливает службу через Wix и задает все ключи реестра, которые нужны программе procrun, вместо использования procrun для установки службы.

Я новичок на сайте (как отправитель), но в качестве ответа опубликую созданный мной Wix XML. Он не идеально отполирован, но, надеюсь, поможет другим преодолеть препятствия, которые мне пришлось преодолеть, чтобы заставить эту работу работать.


person Erik Brandsberg    schedule 30.09.2015    source источник


Ответы (1)


Вот (вкратце) Wix xml с важными элементами. Мне пришлось резюмировать из-за ограничения размера ответа. Спасибо за множество ответов о переполнении стека, которые помогли добраться до этого момента.

<?xml version="1.0" encoding="utf-8"?>
<!--
# This comment is generated by WixEdit, the specific commandline
# arguments for the WiX Toolset are stored here.

candleArgs: 
lightArgs: "heimdalldemo.wixobj" -out "heimdalldemo.msi" -ext WixUtilExtension -ext WixUIExtension
-->
<!-- installation script for the Heimdall Data Access Platform, www.heimdalldata.com -->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="Heimdall Data Access Platform" Language="1033" Version="0.9.0.1" Manufacturer="Heimdall Data" UpgradeCode="98CE97B6-8E91-42F5-8C32-8F0F078433EC">
    <Package Description="Heimdall Data Server and Driver Installer" Comments="Heimdall Installer" InstallPrivileges="elevated" InstallScope="perMachine" InstallerVersion="200" Compressed="yes" Platform="x64" />
    <Media Id="1" Cabinet="simple.cab" EmbedCab="yes" />
    <?define ProductName = "Heimdall Data Access Platform" ?>
    <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
    <!-- Check some requirements ONLY on "install", but not on modify or uninstall. -->
    <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>
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="$(var.PlatformProgramFilesFolder)">
            <Directory Id="DRIVERDIR" Name="Heimdall">
                <!-- driver components -->
            </Directory>
            <Directory Id="TRAFFICDIR" Name="Heimdall">
       <!-- traffic generator components -->
            </Directory>
            <Directory Id="SERVERDIR" Name="Heimdall">
                <Component Id="REGISTRY_A" DiskId="1" Guid="*">
                    <RegistryKey Root="HKLM" Key="SOFTWARE\Apache Software Foundation\Procrun 2.0\Heimdall\Parameters\Java" Action="createAndRemoveOnUninstall">
                        <RegistryValue Type="string" Name="Classpath" Value="[SERVERDIR]heimdallserver.jar" KeyPath="yes" />
                        <RegistryValue Type="string" Name="Jvm"     Value="auto" />
                        <RegistryValue Type="multiString" Action="append" Name="Options">
                           <MultiStringValue Type="multiString" Name="Options" Action="append">-Duser.dir=[SERVERDIR]</MultiStringValue>
                           <MultiStringValue Type="multiString" Name="Options" Action="append">-XX:+UseConcMarkSweepGC</MultiStringValue>
                           <MultiStringValue Type="multiString" Name="Options" Action="append">-XX:+CMSIncrementalPacing</MultiStringValue>
                           <MultiStringValue Type="multiString" Name="Options" Action="append">-XX:ParallelGCThreads=2</MultiStringValue>
                           <MultiStringValue Type="multiString" Name="Options" Action="append">-XX:+AggressiveOpts</MultiStringValue>
                        </RegistryValue>
                        <RegistryValue Type="integer" Name="JvmMs" Value="128" />
                        <RegistryValue Type="integer" Name="JvmMx" Value="512" />
                        <RegistryValue Type="integer" Name="JvmSs" Value="4000" />
                    </RegistryKey>
                    <RegistryKey Root="HKLM" Key="SOFTWARE\Apache Software Foundation\Procrun 2.0\Heimdall\Parameters\Log" Action="createAndRemoveOnUninstall">
                        <RegistryValue Type="string" Name="Path" Value="[SERVERDIR]log" />
                        <RegistryValue Type="string" Name="Level" Value="Error" />
                        <RegistryValue Type="string" Name="Prefix" Value="procrun.log" />
                        <RegistryValue Type="string" Name="StdError" Value="auto" />
                        <RegistryValue Type="string" Name="StdOutput" Value="auto" />
                    </RegistryKey>
                    <RegistryKey Root="HKLM" Key="SOFTWARE\Apache Software Foundation\Procrun 2.0\Heimdall\Parameters\Start" Action="createAndRemoveOnUninstall">
                        <RegistryValue Type="string" Name="Mode" Value="jvm" />
                        <RegistryValue Type="string" Name="Class" Value="com.heimdalldata.server.Bootstrap" />
            <RegistryValue Type="string" Name="WorkingPath" Value="[SERVERDIR]" />
                        <RegistryValue Type="string" Name="Method" Value="start" />
                        <RegistryValue Type="string" Name="Params" Value="start" />
                        <RegistryValue Type="string" Name="StdOutput" Value="auto" />
                    </RegistryKey>
                    <RegistryKey Root="HKLM" Key="SOFTWARE\Apache Software Foundation\Procrun 2.0\Heimdall\Parameters\Stop" Action="createAndRemoveOnUninstall">
                        <RegistryValue Type="string" Name="Mode" Value="jvm" />
                        <RegistryValue Type="string" Name="Class" Value="com.heimdalldata.server.Bootstrap" />
                        <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\Heimdall" Action="createAndRemoveOnUninstall">
                        <RegistryValue Type="string" Name="Description" Value="Heimdall Management and Logging Server" />
                        <RegistryValue Type="string" Name="DisplayName" Value="Heimdall" />
                        <RegistryValue Type="string" Name="ImagePath" Value="[SERVERDIR]heimdallserver.exe //RS//Heimdall" />
                        <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\Heimdall\Parameters" Action="createAndRemoveOnUninstall">
                        <RegistryValue Type="string" Name="Test" Value="Pass" />
                    </RegistryKey>
                </Component>
                <Component Id="REGISTRY_B" DiskId="1" Guid="*">
                    <RegistryKey Root="HKLM" Key="SOFTWARE\Apache Software Foundation\Procrun 2.0\Heimdall\Parameters\Java" Action="createAndRemoveOnUninstall">
                        <RegistryValue Type="string" Name="JavaHome" Value="[SERVERDIR]jre6" />
            <RegistryValue Type="string" Name="Jvm"     Value="[SERVERDIR]jre6\bin\server\jvm.dll" />
                    </RegistryKey>
                </Component>

                <Component Id="HEIMDALLSERVER64.EXE" DiskId="1" Guid="*"> <!-- this is the renamed procrun 64 bit executable -->
                    <File Id="HEIMDALLSERVER64.exe" Name="heimdallserver.exe" Source="c:\heimdall\heimdallserver64.exe" />
                    <ServiceInstall Id="HEIMDALLSERVER64" Type="ownProcess" Name="Heimdall" DisplayName="Heimdall" Description="Heimdall Management and Logging Server" Start="auto" Account="[SERVICEACCOUNT]" Password="[SERVICEPASSWORD]" ErrorControl="normal" Arguments=" //RS//Heimdall" />
                    <ServiceControl Id="StartService64" Start="install" Stop="both" Remove="uninstall" Name="Heimdall" Wait="no" />
                </Component>
            </Directory>
        </Directory>
    </Directory>
    <Feature Id="Server" Title="Heimdall Server" Level="1" ConfigurableDirectory="SERVERDIR">
        <ComponentRef Id="REGISTRY_A" />
        <!-- all server components -->
        <Feature Id="Configuration" Title="Example Configuration" Level="1" ConfigurableDirectory="CONFIG">
            <!-- all configuration components -->
        </Feature>
        <Feature Id="Drivers" Title="Driver Library" Level="1" ConfigurableDirectory="CONFIG">
       <!-- all driver feature components -->
        </Feature>
    </Feature>
    <Feature Id="Driver" Title="Heimdall Driver" Level="1" ConfigurableDirectory="DRIVERDIR">
        <!-- driver component -->
        <Feature Id="Libraries" Title="Grid API Libraries" Level="6" ConfigurableDirectory="LIBDIR">
            <!-- all library components -->
        </Feature>
    </Feature>

    <Feature Id="JRE" Title="Private JRE" Level="1" ConfigurableDirectory="SERVERDIR">
        <Condition Level="6">JAVA_CURRENT_VERSION64 &gt;= "1.6"</Condition>
    <ComponentRef Id="REGISTRY_B" />
    <!-- all JRE file components -->
    </Feature>
    <UI />
    <UIRef Id="WixUI_Mondo" />
    <!-- custom dialog (welcome and completion dialogs)  493x312 -->
    <WixVariable Id="WixUIDialogBmp" Value="C:\heimdall\banner.bmp" />
    <!-- custom logo (top bar)  493x58 -->
    <WixVariable Id="WixUIBannerBmp" Value="C:\heimdall\logo.bmp" />
    <!-- custom license agreement -->
    <!-- <WixVariable Id="WixUILicenseRtf" Value="c:\heimdall\license.rtf" /> -->
    <!-- call localhost:8087 on exit of installer when installing -->
    <Property Id="MyURL"><![CDATA[http://localhost:8087/]]></Property>
    <CustomAction Id="SetOpenURL" Property="WixShellExecTarget" Value="[MyURL]" />
    <CustomAction Id="OpenURL" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" Return="ignore" />
    <InstallExecuteSequence>
        <!-- Launch webpage during full uninstall, but not upgrade -->
        <Custom Action="SetOpenURL" After="InstallFinalize"><![CDATA[&Server=3 AND UILevel > 2 AND NOT Installed]]></Custom>
        <Custom Action="OpenURL" After="SetOpenURL"><![CDATA[&Server=3 AND UILevel > 2 AND NOT Installed]]></Custom>
    </InstallExecuteSequence>
</Product>
</Wix>
person Erik Brandsberg    schedule 30.09.2015
comment
приятель, у тебя получилось это установить? - person AnOldSoul; 12.04.2016
comment
Да, это работает, и мы используем конфигурацию для установщика нашего продукта. - person Erik Brandsberg; 13.04.2016
comment
Приятель, мне также нужно установить службу procrun, и я последовал твоему примеру. Но у меня возникает эта проблема, stackoverflow.com/questions/36651392/ ​​ Любые идеи будут очень полезны :( - person AnOldSoul; 15.04.2016
comment
В этом вопросе мне пришлось отказаться от Win64 в моем коде. Тем не менее, он не устанавливает службу. Хотя записи в реестре есть :( Я не вижу службу в списке локальных служб - person AnOldSoul; 16.04.2016
comment
Поскольку я не могу опубликовать полный файл конфигурации wxs, поскольку он слишком велик, я сделал его доступным для загрузки по адресу download.heimdalldata.com/downloads/heimdalldemo.wxs. Полученный установочный файл для нашего продукта (30-дневная демонстрация) доступен по адресу download.heimdalldata.com/downloads /heimdalldemo.msi, чтобы вы могли увидеть, как на самом деле работает установка, и убедиться, что результат работает в вашей системе. Мы предполагаем, что заказчик будет использовать 64-разрядную ОС, так как функциональность вряд ли будет полезной, за исключением серверных систем, так что это может быть одной из проблем. изменить: опечатка - person Erik Brandsberg; 16.04.2016
comment
Большое спасибо, дружище! Мне пришлось изменить системную учетную запись на LocalSystem и запустить ее от имени администратора. Теперь это работает. - person AnOldSoul; 17.04.2016
comment
Может ли кто-нибудь опубликовать wxs в Github? Опубликованная ссылка download.heimdalldata.com/downloads/heimdalldemo.wxs больше не доступна. - person Vrushank; 09.01.2020