Почему из-за высокой температуры моя служба Windows не добавляется в реестр Windows / службы Windows - PullRequest
0 голосов
/ 06 февраля 2019

Существует ли какая-либо причина, по которой Heat может не добавить мою службу Windows в реестр?Я выполняю два разных коммита в моей ветке, и единственное различие между этими двумя коммитами заключается в том, что в последнем коммите есть возможность включить dll из проекта, на который ссылается Wix.

Я просматривал журналы, используяmsiexec и / l * v, но по какой-то причине в сервисе ничего нет.

Извините за xxx в некоторых контекстах кода, так как я должен удалить некоторые ключевые слова в целях безопасности,Это мой первый раз, когда я имею дело с теплом, поэтому я не знаком с ним, и после того, как погуглить вопросы о тепле, я понял, что документы тоже не очень полезны.

Product

<?xml version="1.0" encoding="UTF-8"?>
<!-- The name of the product -->
<?define Name = "xxx xxx Agent" ?>
<!-- The manufacturer, for setup package publisher and folder info -->
<?define Manufacturer = "xxx" ?>
<!-- The version number of this setup package-->
<?define Version = "1.0.0" ?>
<!-- UpgradeCode must be unique and not changed once the first version of the program is installed. -->
<?define UpgradeCode = "{145ED92C-BA1B-4257-8791-2337A012EEE7}" ?>
<?if $(var.Platform) = x64?>
<?define bitness = "(64 bit)"?>
<?define Win64 = "yes"?>
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
<?else ?>
<?define bitness = "(32 bit)"?>
<?define Win64 = "no"?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
<?endif ?>


<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="$(var.Name) $(var.bitness)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)" Version="$(var.Version)" Language="1033">
        <Package InstallerVersion="300" Compressed="yes"/>
        <Media Id="1" Cabinet="xxx.xxx.Agent.WindowsService.cab" EmbedCab="yes" />
        <MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="$(var.PlatformProgramFilesFolder)">
                <Directory Id="ROOTDIRECTORY" Name="$(var.Manufacturer)">
                    <Directory Id="INSTALLFOLDER" Name="$(var.Name)" />
                </Directory>
            </Directory>
        </Directory>
        <DirectoryRef Id="INSTALLFOLDER">
            <Component Id="$(var.xxx.xxx.Agent.WindowsService.TargetFileName)" Win64="$(var.Win64)" Guid="FD94EF3C-4A0B-4102-AF1E-2A489B4DB7DF">
                <RemoveFile Id="ALLFILES" Name="*.*" On="both" />
                <ServiceInstall Id="ServiceInstaller"
                                Type="ownProcess"
                                Name="xxx.xxx.Agent.WindowsService"
                                Account="LocalSystem"
                                DisplayName="$(var.Name)"
                                Description="Deployment agent for xxx xxx"
                                Start="auto"
                                Interactive="yes"
                                Vital="yes"
                                ErrorControl="critical"
                                Arguments="/start xxx.xxx.Agent.WindowsService"/>
                <ServiceControl Id="ServiceUninstaller"
                                Name="xxx.xxx.Agent.WindowsService"
                                Stop="uninstall"
                                Remove="uninstall"
                                Wait="yes" />-
            </Component>
        </DirectoryRef>
        <Feature Id="MainApplication" Title="Main Application" Level="1">
            <ComponentRef Id="$(var.xxx.xxx.Agent.WindowsService.TargetFileName)" />
            <ComponentGroupRef Id="HeatGenerated"/>
        </Feature>
    </Product>
</Wix>

Фильтр

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
    <xsl:output method="xml" indent="yes" />
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, '.pdb')]" use="@Id" />
    <xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, '.xml')]" use="@Id" />
    <xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, '.dll.config')]" use="@Id" />
    <xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, '.exe')]" use="@Id" />
    <xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, 'app.config')]" use="@Id" />
    <xsl:key name="service-search" match="wix:Component[wix:File/@Source = '$(var.xxx.xxx.xxx.WindowsService.TargetDir)\xxx.xxx.xxx.WindowsService.exe']" use="@Id" />
    <xsl:template match="wix:Component[key('service-search', @Id)]" />
    <xsl:template match="wix:ComponentRef[key('service-search', @Id)]" />
</xsl:stylesheet>

1 Ответ

0 голосов
/ 07 февраля 2019

Из документации WiX по ServiceInstall я полагаю, что вам требуется элемент File:

Установленный исполняемый файл службы будет указывать на KeyPath для компонента.Следовательно, вы должны убедиться, что правильный исполняемый файл является первым дочерним элементом File этого компонента или явно пометить соответствующий элемент File как KeyPath = 'yes'.

Так что я думаю, что вам просто нужнодобавить в службу Component:

<File Id="WindowsServiceExe", KeyPath="yes" Source="$(var.xxx.xxx.xxx.WindowsService.TargetDir)\xxx.xxx.xxx.WindowsService.exe" />

Также, глядя на ваше преобразование, я предлагаю вам создать отдельные имена ключей для "фильтров" вместо повторного использования service-search.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...