Ответ 1
Вы пробовали...
NT AUTHORITY\LocalService
В этом doc...
... но имя учетной записи должно быть NT АВТОРИТЕТ \LocalService, когда вы звоните CreateService, независимо от локаль или неожиданные результаты могут происходят.
Я пытаюсь получить мое приложение установщиком через WiX 3.0. Точный код:
<File Id="ServiceComponentMain" Name="$(var.myProgramService.TargetFileName)" Source="$(var.myProgramService.TargetPath)" DiskId="1" Vital="yes"/>
<!-- service will need to be installed under Local Service -->
<ServiceInstall
Id="MyProgramServiceInstaller"
Type="ownProcess"
Vital="yes"
Name="MyProgramAddon"
DisplayName="[removed]"
Description="[removed]"
Start="auto"
Account="LocalService"
ErrorControl="ignore"
Interactive="no"/>
<ServiceControl Id="StartDDService" Name="MyProgramServiceInstaller" Start="install" Wait="no" />
<ServiceControl Id="StopDDService" Name="MyProgramServiceInstaller" Stop="both" Wait="yes" Remove="uninstall" />
Дело в том, что по какой-то причине LocalService выходит из строя на шаге "Установка служб", и если я изменю его на "LocalSystem", тогда установщик отключится при попытке запустить службу.
Услуга запускается нормально вручную и при запуске системы, и для всех целей и задач отлично работает. Я слышал, что есть проблемы с получением услуг для работы в LocalService, но Google действительно не помогает, так как все ответы "получили его работу kспасибо".
Просто хочу, чтобы этот сервис был настроен и запущен во время установки, это все. Любая помощь? Спасибо!
Вы пробовали...
NT AUTHORITY\LocalService
В этом doc...
... но имя учетной записи должно быть NT АВТОРИТЕТ \LocalService, когда вы звоните CreateService, независимо от локаль или неожиданные результаты могут происходят.
Убедитесь, что окно services.msc закрыто при установке
ссылка: Таблица ServiceControl
В документации MSI для ServiceControl Table указано, что "Имя" является строковым именем службы. В вашем программном snipet ваше имя ServiceControl 'Name' установлено в ID для ServiceInstall, а не его 'Name'. Итак, ваши элементы ServiceControl должны читать:
<ServiceControl Id="StartDDService" Name="MyProgramAddon" Start="install" Wait="no" />
<ServiceControl Id="StopDDService" Name="MyProgramAddon" Stop="both" Wait="yes" Remove="uninstall" />
Вот еще один случай, когда служба localsystem может не установить с ошибкой 1923: если у вас есть еще одна служба, уже установленная с тем же DisplayName (но другое имя внутренней службы, путь и т.д.). Я просто это случилось со мной.
Имела ту же проблему, но с указанными учетными записями, ей стало скучно, и создал ЦС для запуска службы после того, как установка была завершена. Просто не утруждайте себя попыткой запустить его с помощью MSI, просто оставьте его в CA, если вы не получите некоторую информацию о качестве где-либо.
BTW с использованием LocalSystem, и работа с ручным запуском работает нормально. Никогда не было никаких других вариантов работы.
У меня была та же проблема. Оказывается, у меня была опечатка в <ServiceControl Id="StartService" Name="MyServiceName"
, где мой Name
не соответствовал имени службы, указанному в проекте службы, когда я его создал.
Это также проблема с моей службой, а не с удалением.
Я просто буду отвечать за советы aristippus303: не пытайтесь запустить службу с установщиком Windows и не устанавливайте учетную запись, просто принимайте значение по умолчанию LocalSystem во время установки. Попытка сделать что-либо еще слишком проблематична. Установщик Windows ожидает, что служба сообщит, что она запущена, и есть слишком много вещей, которые могут пойти не так, что с разрешениями и правами, настройками брандмауэра и отсутствующими файлами и т.д., Поэтому установщик Windows завершается или завершается с ошибкой и ваша установка не удалась.
Что вы хотите сделать, так это указать в своей документации, что пользователь должен вручную изменить учетную запись службы (если необходимо) и вручную запустить службу после завершения установки и устранить любые проблемы, которые возникают при этом точка. Или просто попросите пользователя перезагрузиться, поэтому опция автозапуска начнет сервис, если вы уверены, что проблем не будет.
Я потратил некоторое время на изучение этого и обнаружил, что это потому, что у меня был атрибут keypath, установленный на компоненте, а не на файле. Мой файл wix теперь выглядит так:
<Component Id="comp_WF_HOST_18" DiskId="1" KeyPath="no" Guid="3343967A-7DF8-4464-90CA-7126C555A254">
<File Id="file_WF_HOST_18" Checksum="yes" Source="C:\Projects\GouldTechnology\Infrastructure\WorkflowHost\WorkflowHost\bin\Release\WorkflowHost.exe" KeyPath="yes"/>
<ServiceInstall
Id="workflowHostInstaller"
Type="ownProcess"
Vital="yes"
Name="WorkflowHost"
DisplayName="Workflow Host"
Start="demand"
Account="[WORKFLOW_HOST_USER_ACCOUNT]"
Password="[WORKFLOW_HOST_USER_PASSWORD]"
ErrorControl="critical"
Interactive="no"/>
<ServiceControl Id="StartWFService" Name="workflowHostInstaller" Start="install" Stop="both" Remove="both" Wait="no" />
</Component>
Теперь мне просто нужно выяснить, как дать ему правильные разрешения...
Обратите внимание, что в документации для элемента ServiceInstall написано об атрибуте "Учетная запись", в котором "Учетная запись, по которой запускается служба. Действительна, только если ServiceType - собственный процесс". В вашем примере вы не указали тип сервиса ownProcess, который может быть проблемой.
У нас была та же самая проблема, которая возникала только на компьютерах под управлением Windows XP, поскольку установка не была установлена. В конце концов мы обнаружили, что на XP параметр имени из файла WiX игнорируется, и вместо этого он использует имя службы, заданное в коде С#. У нас получилось имя в коде, содержащем пробел, i. е. "Blah Blah Service", когда это было настроено на то же имя, что и файл WiX, используемый в Windows 7, он работал хорошо.