El servicio de Windows TopShelf basado en el instalador de Wix no se inicia

4
Yasir 2019-11-27 18:28.

He escrito un servicio básico de Windows .NET 4.7.2 C # utilizando TopShelf y Quartz. El servicio funciona cuando lo depuro usando Visual Studio 2019 en mi computadora portátil con Windows 10. Luego creé una configuración basada en Wix 3.11.2 para instalar e iniciar este servicio. Ahora, estoy intentando instalar el servicio en mi computadora portátil usando este instalador. El instalador puede copiar los archivos pero no puede iniciar el servicio. Aquí está el código:

Product.wxs

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="Broker Test" Language="1033" Version="1.0.0.0"
       Manufacturer="Test"
       UpgradeCode="{68813F65-1022-4E32-AC50-CD16B5927DAD}">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

<Media Id="1" Cabinet="BrokerTest.cab" EmbedCab="yes" />

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="INSTALLDIR" Name="Application">
    <Directory Id="WINDIR" Name="Service"/>
  </Directory>
</Directory>

<Feature Id="ProductFeature" Title="BrokerTest_MSI" Level="1">
  <ComponentGroupRef Id="BrokerWindowsService" />
</Feature>

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />
<Property Id="INSTALLTYPE" Value="1"/>
</Product>
</Wix>

WinService.wxs

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

  <ComponentRef Id="Tb.WinService.Test" />
  <ComponentRef Id="TopShelf"/>
  <ComponentRef Id="Tb.ServiceConfig" />
  <ComponentRef Id="Microsoft.Extensions.DependencyInjection" />
  <ComponentRef Id="Microsoft.Extensions.DependencyInjection.Abstractions" />      
  <ComponentRef Id="Quartz" />      

</ComponentGroup>

<DirectoryRef Id="WINDIR">
  <Directory Id="DataDir" Name="Data"/>

  <Component Id="Tb.WinService.Test" Guid="{F1DF09D9-98D8-4D63-9BB9-7581D56E1685}">

    <CreateFolder Directory="DataDir">
      <util:PermissionEx User="NT Authority\SYSTEM" GenericAll="yes"/>
    </CreateFolder>

    <File Id="Tb.WinService.Test.dll" Name="$(var.Tb.WinService.Test.TargetFileName)" Source="$(var.Tb.WinService.Test.TargetPath)" />
    <File Id="Tb.WinService.Test.pdb" Name="$(var.Tb.WinService.Test.TargetName).pdb" Source="$(var.Tb.WinService.Test.TargetDir)$(var.Tb.WinService.Test.TargetName).pdb" /> <ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes" Name="BrokerWindowsServiceTest" DisplayName="Broker Windows Service Test" Description="Runs scheduled tasks" Start="auto" Account="NT Authority\SYSTEM" ErrorControl="ignore" Interactive="no" /> <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="BrokerWindowsServiceTest" Wait="yes" /> </Component> <Component Id="TopShelf" Guid="{CEC3596B-4D38-4641-81EF-CBC09C4FE67E}"> <File Id="TopShelf.dll" Name="TopShelf.dll" Source="$(var.SolutionDir)packages\Topshelf.4.2.1\lib\net452\Topshelf.dll" Vital="yes" />
    <File Id="TopShelf.xml" Name="TopShelf.xml" Source="$(var.SolutionDir)packages\Topshelf.4.2.1\lib\net452\Topshelf.xml" Vital="yes" /> </Component> <Component Id="Tb.ServiceConfig" Guid="{A08D1440-4B2A-4DFB-9F55-27E81DC4B106}"> <File Id="Tb.Service.App.Config" Name="$(var.Tb.WinService.Test.TargetName).exe.config" 
          Vital="yes" KeyPath="yes" Source="$(var.Tb.WinService.Test.TargetDir)App.config" /> </Component> <Component Id="Microsoft.Extensions.DependencyInjection" Guid="{8F69CFC4-02F9-479C-9C57-E2F88180E542}"> <File Id="Microsoft.Extensions.DependencyInjection.dll" Name="Microsoft.Extensions.DependencyInjection.dll" Source="$(var.SolutionDir)packages\Microsoft.Extensions.DependencyInjection.3.0.1\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.dll" Vital="yes" />
  </Component>

  <Component Id="Microsoft.Extensions.DependencyInjection.Abstractions" Guid="{8EB47289-9527-4CE4-9991-EBF8997368DC}">
    <File Id="Microsoft.Extensions.DependencyInjection.Abstractions.dll" Name="Microsoft.Extensions.DependencyInjection.Abstractions.dll" 
          Source="$(var.SolutionDir)packages\Microsoft.Extensions.DependencyInjection.Abstractions.3.0.1\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll" Vital="yes" /> </Component> <Component Id="Quartz" Guid="{345DA6DA-F385-47A6-844C-3171ADE42E83}"> <File Id="Quartz.dll" Name="Quartz.dll" Source="$(var.SolutionDir)packages\Quartz.3.0.7\lib\net452\Quartz.dll" Vital="yes" />
    <File Id="Quartz.xml" Name="Quartz.xml" Source="$(var.SolutionDir)packages\Quartz.3.0.7\lib\net452\Quartz.xml" Vital="yes" />
  </Component>      

</DirectoryRef>
</Fragment>
</Wix>

Recibo el siguiente error cuando ejecuto el instalador de Wix:

Si intento iniciar el servicio manualmente, aparece el siguiente error:

Ya probé lo siguiente:

  1. Estoy usando la cuenta NT Authority \ System, que debería tener el acceso adecuado.
  2. Actualmente, mi servicio de Windows no está haciendo nada. Se está recuperando Task.CompletedTask. Entonces, no debería haber un escenario de tiempo de espera.
  3. Lo he intentado con versiones de depuración y liberación.
  4. Estoy instalando en la misma máquina en la que estoy desarrollando. Por lo tanto, la versión de .NET Framework no debería ser un problema.
  5. Intenté iniciar el depurador pero no pude adjuntarlo. Así que no recibí más detalles.
  6. Capturé excepciones y escribí en el Registro de eventos, pero tampoco tiene más detalles.

2 answers

0
Stein Åsmul 2019-11-28 08:57.

Métodos de instalación : inspeccionaría el código de instalación de su servicio dentro del binario. Debe haber algo que esté haciendo en los métodos de instalación para el ensamblado / binario que MSI no replica en el momento de la instalación. ¿Qué está haciendo con estos métodos de instalación? Muestras: 1 y 2 .

Instalación del servicio WiX : Quitaría todos los atributos que no son necesarios en el elemento WiX. Vea este ejemplo: Instalación de servicio (Stropek). ParticularmenteAccount attribute, déjelo afuera. También elimine ese elemento de permiso para SYSTEM. Los permisos predeterminados son mejores, ya están allí.

Procmon.exe : puede inspeccionar el sistema para ver qué sucede cuando ejecutaInstallUtil.exesi ejecutaProcmon.exee inspecciona la sobrecarga de información. ¿Está familiarizado con esta herramienta? Preferiría no entrar en él (de nuevo, ejemplo rudimentario ), y creo que debería ser suficiente estudiar el código del método de instalación.

Capturar : también es posible utilizar una herramienta de captura de configuración para escanear el estado antes y después del sistema cuando se ejecutaInstallUtil.exe. Eso requiere una herramienta considerable (AdminStudio,Advanced Installer) y rara vez está disponible para desarrolladores. Solo para que conste.


Enlaces :

  • No se puede actualizar un servicio de Windows instalado por MSI
  • La actualización del instalador de Wix con el mismo ID de "código de actualización" muestra un mensaje de error de privilegios
  • wix service install no tiene suficiente permiso

Adicional :

  • La aplicación de escritorio no se abre después de la instalación en el sistema cliente
  • La aplicación no se abre después de instalarla con el instalador creado por "Visual Studio installer"
  • ¿Instalar un servicio de Windows usando un símbolo del sistema de Windows?
0
Zohrab Broyan 2020-06-22 13:33.

Asegúrese de que el nombre de ServiceInstall coincida exactamente con el nombre de su servicio superior

Related questions

MORE COOL STUFF

Cate Blanchett se acostó con su esposo después de 3 días juntos y sigue casada con él 25 años después

Cate Blanchett se acostó con su esposo después de 3 días juntos y sigue casada con él 25 años después

Cate Blanchett desafió los consejos típicos sobre citas cuando conoció a su esposo.

Por qué Michael Sheen es un actor sin fines de lucro

Por qué Michael Sheen es un actor sin fines de lucro

Michael Sheen es un actor sin fines de lucro, pero ¿qué significa eso exactamente?

¡La estrella de Hallmark, Colin Egglesfield, habla sobre emocionantes encuentros con fans en RomaDrama Live! [Exclusivo]

¡La estrella de Hallmark, Colin Egglesfield, habla sobre emocionantes encuentros con fans en RomaDrama Live! [Exclusivo]

¡La estrella de Hallmark, Colin Egglesfield, habló sobre los emocionantes encuentros con los fanáticos en RomaDrama Live! además de su programa INSPIRE en la convención.

Por qué no puedes transmitir 'Northern Exposure' en línea

Por qué no puedes transmitir 'Northern Exposure' en línea

Tendrás que desempolvar un reproductor de Blu-ray o DVD para ver por qué Northern Exposure se convirtió en uno de los programas más populares de los 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

¿Caduca el repelente de insectos?

¿Caduca el repelente de insectos?

¿Sigue siendo efectivo ese lote de repelente de insectos que te quedó del verano pasado? Si es así, ¿por cuánto tiempo?

Dona tu cabello para ayudar a mantener limpia nuestra agua

Dona tu cabello para ayudar a mantener limpia nuestra agua

Los recortes de cabello de los salones y las donaciones personales se pueden reutilizar como tapetes que absorben los derrames de petróleo y ayudan a proteger el medio ambiente.

Una mirada a las bodas más memorables de la Casa Blanca

Una mirada a las bodas más memorables de la Casa Blanca

Solo unas pocas personas se han casado en la Casa Blanca en los últimos más de 200 años. ¿Quiénes eran y qué se requiere para marcar una boda allí?

Los automóviles autónomos estarán en las carreteras en 2020, pero las ciudades de EE. UU. No estarán listas para ellos

Los automóviles autónomos estarán en las carreteras en 2020, pero las ciudades de EE. UU. No estarán listas para ellos

Aunque al menos siete programas de automóviles autónomos juran que estarán listos para la calle en 2020, la verdad es que las ciudades de EE. UU. Lamentablemente no están preparadas para esta realidad. Solo el seis por ciento de las ciudades más grandes de EE. UU. Incluyen algún lenguaje sobre vehículos autónomos en sus planes de transporte de largo alcance.

Aquí está tu disfraz de Halloween de Jurassic World 'Esto es lo mejor que pude hacer'

Aquí está tu disfraz de Halloween de Jurassic World 'Esto es lo mejor que pude hacer'

En lugar de esperar hasta el último minuto posible para decidirse por un disfraz este año, ¿por qué no pedir este atuendo inflable de T-rex de Jurassic World en Amazon el día antes de Halloween y mejorar un poco su juego de disfraces, pero no por mucho? La bomba operada mantiene el disfraz de $ 70 inflado mientras estás escondido en el interior, y la cola larga asegura que serás la ruina de cualquier fiesta de Halloween porque cada vez que te des la vuelta estarás tirando bebidas y dulces de las mesas.

Amigo de la música country: en la radio, las intérpretes femeninas son básicamente guarniciones

Amigo de la música country: en la radio, las intérpretes femeninas son básicamente guarniciones

Country Aircheck Weekly es una publicación comercial dedicada a las noticias de la radio del país, no exactamente una lectura popular para la mayoría de los hogares. Pero su último número ha llamado la atención de la estrella Martina McBride debido a una entrevista con el consultor musical Keith Hill, quien dijo que si la música country es una ensalada, los hombres son la lechuga y las mujeres solo los tomates.

Reddit prohíbe una gran cantidad de comunidades en medio de una nueva regla dirigida a ventas, intercambios y obsequios

Reddit prohíbe una gran cantidad de comunidades en medio de una nueva regla dirigida a ventas, intercambios y obsequios

El pan y la mantequilla de Reddit pueden ser enlaces y comentarios, pero el sitio tiene una larga historia como facilitador de intercambios de regalos y un mercado aislado. Las nuevas reglas del sitio promulgadas hoy prohiben gran parte de ese comportamiento.

Taco Bell anuncia el regreso de la pizza mexicana a su menú: 'los frijoles se han derramado'

Taco Bell anuncia el regreso de la pizza mexicana a su menú: 'los frijoles se han derramado'

El artículo favorito de los fans estará disponible a partir del 15 de septiembre, según compartió la franquicia de comida rápida en Twitter.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton pasa un día junto al agua en Londres, además de Jennifer Lopez, Julianne Hough y más

Kate Middleton pasa un día junto al agua en Londres, además de Jennifer Lopez, Julianne Hough y más

Kate Middleton pasa un día junto al agua en Londres, además de Jennifer Lopez, Julianne Hough y más. Desde Hollywood hasta Nueva York y todos los lugares intermedios, ¡vea lo que están haciendo sus estrellas favoritas!

Joven de 17 años apuñalado hasta la muerte mientras que otros 4 quedaron heridos en un ataque con cuchillo en el río Wisconsin

Joven de 17 años apuñalado hasta la muerte mientras que otros 4 quedaron heridos en un ataque con cuchillo en el río Wisconsin

Los investigadores están investigando si el grupo y el sospechoso se conocían antes del ataque.

como escribo

como escribo

Para mí, todo se trata de esa primera línea y hacia dónde te lleva. Algunos escritores están motivados por la trama, la delicada disposición de las piezas de ajedrez, mientras que otros se sienten atraídos por un personaje y la capacidad de emprender un viaje con un nuevo amigo ficticio.

aterrizajes en pista

aterrizajes en pista

El final del verano y el otoño son estaciones nostálgicas. Las farolas arrojan su luz sobre las calles resbaladizas por la lluvia, y las hojas bajo los pies, de color rojo anaranjado apagado en las sombras del crepúsculo, son un recordatorio de los días pasados.

Imagina crear una estrategia de contenido que realmente CONVIERTA. Es posible.

Imagina crear una estrategia de contenido que realmente CONVIERTA. Es posible.

En 2021, lo animo a repensar todo lo que sabe sobre los clientes a los que atiende y las historias que les cuenta. Paso atrás.

Una pérdida gigantesca abrió mi corazón al amor

Una pérdida gigantesca abrió mi corazón al amor

El día del noveno cumpleaños de Felix The Cat, recuerdo una de las mayores pérdidas de mi vida adulta: mi Sophie en 2013. Escribí este ensayo y lo compartí brevemente en esta plataforma en 2013.

Language