Я использую эталонную функцию проекта WiX, чтобы автоматически собрать проект с помощью Heat.Это особенно полезно, поскольку установщик WiX собирается как локально, так и на сервере сборки TFS2010, а когда он построен на сервере сборки, вывод перенаправляется в другое место, что означает, что если я не собираю проекты автоматически, он получаеточень грязно, пытаясь сослаться на правильное местоположение недавно скомпилированных элементов.
У меня есть следующий WiX-код для установки и запуска службы:
<ServiceInstall Id="MyService"
Type="ownProcess"
Vital="yes"
Name="MyServiceName"
DisplayName="My Service Display Name"
Description="My Service Description"
Start="auto"
Account="[SERVICEACCOUNT]"
Password="[SERVICEPASSWORD]"
ErrorControl="ignore"
Interactive="no" />
<ServiceControl Id="StartService" Name="MyServiceName" Start="install" Wait="no" />
<ServiceControl Id="StopService" Name="MyServiceName" Stop="both" Wait="yes" Remove="uninstall" />
Пока все хорошо .... У меня возникает проблема, когда установщик пытается установить и запустить службы Windows, однако, говоря «Служба« MyServiceName »(MyServiceName) не удалось запустить. Убедитесь, что у вас достаточно прав для запуска системных служб».Если я выберу кнопку «Игнорировать», установка завершится «успешно», но когда я проверю службы, установленные на моей машине, новой службы нет в списке.
Из моих онлайн-исследований я считаю, чтопроблема в том, что служба на самом деле не устанавливается правильно, потому что мне нужно установить KeyPath на исполняемый файл, который должен быть запущен как служба, но так как я собираю файлы с помощью Heat, я не могу найти способ сделать это... если я не создаю пользовательское действие, которое установит для меня службу, позволяющую мне указывать имя исполняемого файла после установки всех файлов ... но это не похоже на правильное решение ...
У кого-нибудь есть совет или они столкнулись с той же проблемой и нашли решение?
Спасибо
ОБНОВЛЕНИЕ 07/10/10: В моем скрипте WiX у меня есть следующее:
<Directory Id="INSTALLLOCATION" Name="Dolphin Transfer Service Server" ComponentGuidGenerationSeed="AF89976D-CD66-4b94-911B-1D27F969BC14">
<Component Id="ServiceComponent" Guid="F55415F7-803C-4a83-A677-C0F882699374">
<ServiceInstall Id="DolphinTransferService" Type="ownProcess"...
, а целевым каталогом для моих собранных файлов является каталог INSTALLLOCATION.
Глядя на MSI с помощью Orca, я вижу свой ServiceComponent и все сгенерированные компоненты для каждого собранного файла.В таблице файлов нет файлов, связанных с этим компонентом (поскольку у них есть компонент, сгенерированный для каждого файла ...).Глядя в таблицу ServiceInstall, компонент, который он пытается установить, - это ServiceComponent.
Так что я думаю , что мне нужно каким-то образом получить элемент ServiceInstall внутри компонента, сгенерированного дляexe службы, чтобы он устанавливал этот компонент как службу, а не пустой компонент "ServiceComponent"?Но так как этот компонент генерируется во время сборки под воздействием тепла, мне не удалось добиться дальнейшего прогресса ...