Два почти идентичных проекта WIX - один работает нормально, а другой - из-за проблем с безопасностью - PullRequest
1 голос
/ 27 августа 2010

У меня есть установщики WIX для двух служб Windows.Оба устанавливаются с использованием одних и тех же учетных данных, но один работает, в то время как другой не работает с ошибкой « Service» PCP Event Processor-3.9.9.0-wix '(MyServiceExeName) не может быть установлен.Убедитесь, что у вас достаточно прав для установки системных служб.". Я использую общий файл wxi для обоих проектов с используемыми учетными данными, так что это не имя учетной записи или опечатка доменного имени AFAICS. Единственные существенные различия между этими двумяУстанавливаемые службы:

  • В сбойном проекте есть файл .licx для стороннего компонента.
  • сбойный проект - проект WinExe. Успешная установка - Exe (консоль).стиль приложения)

Насколько я вижу, между файлами wxs для двух установщиков нет реальной разницы (очевидно, GUID). У неисправного компонента есть код установщика WIX, подобный следующему:

<Component Id="cmpMainExe" Guid="{EXCISED-FOR-CUT-N-PASTERS}">
  <File Id="filASJHDJSDJSHGDJH" Source="$(var.EventPollingService.TargetDir)\EventPollingService.exe" />
  <ServiceInstall Name="$(var.SVCNAME)-$(var.ProductVersion)-$(var.BranchName)"
                  DisplayName="PCP $(var.SVCNAME)-$(var.ProductVersion)-$(var.BranchName)"
                  Type="ownProcess"
                  Interactive="no"
                  Start="auto"
                  Vital="yes"
                  ErrorControl="normal"
                  Description="Manages the state model of a user's session by handling incoming events from the dialler"
                  Account="$(var.ServiceAccountId)" 
                  Password="$(var.ServiceAccountPwd)" />
  <ServiceControl Id="StartWixServiceInstaller"
                  Name="$(var.SVCNAME)-$(var.ProductVersion)-$(var.BranchName)"
                  Start="install"
                  Wait="yes" />
  <ServiceControl Id="StopWixServiceInstaller"
                  Name="$(var.SVCNAME)-$(var.ProductVersion)-$(var.BranchName)"
                  Stop="both" Wait="yes"
                  Remove="uninstall" />
</Component>

Я использую Wix 3.5 с Votive в VS 2010, и оба проекта являются приложениями .NET 3.5 SP1. Я использую Windows 7 с отключенным UAC.

Любые идеи

1 Ответ

2 голосов
/ 27 августа 2010

Посмотрите на две сборки MSI в ORCA из Windows SDK и убедитесь, что записи таблицы ServiceInstall выглядят одинаково.

Однако, по моему опыту, это не может быть установщиквопрос.Обычно это красная сельдь, указывающая на проблему приложения, такую ​​как отсутствующие зависимости или исключение приложения.После исключения записей ServiceInstall и проверки правильности учетных данных учетной записи службы учетная запись не отключается, и учетная запись имеет право входить в систему как служба, а затем начать профилирование приложения.Это проще всего сделать правильно, когда установщик зависает в окне ошибки.

Две последние мысли:

Если у программы есть зависимости от winsxs или GAC, она не будет работать, так как они не работают.не устанавливается до выполнения коммита, которое происходит после попытки запустить службу

Если вам нужно предоставить пользователю права LogonAsService, посмотрите на элемент User в WiX.

...