У меня есть компонент Kofax exe, который я хочу запустить как сервис. Ранее srvany.exe используется для регистрации exe как службы вручную. Я создаю установщик wix msi, который установит его как службу. После установки, когда я запускаю exe в качестве администратора вручную, он работает отлично и делает правильные обновления, иначе администратор не даст некоторую ошибку activex. Поэтому я проверил «Запустить эту программу как администратор» в свойстве exe. Моя проблема заключается в том, что служба, установленная msi, не выполняет exe автоматически, и обновление не происходит. Но если служба запущена, и тогда я попытаюсь запустить exe вручную, тогда она сообщит, что «она уже запущена», что означает, что служба запускает exe, но не обновляет anythiing. Какое изменение я должен сделать в нижнем коде, чтобы служба могла выбрать exe и запустить.wix srvany.exe как служба не работает
<Component Id="comp_KofaxCaptureQCRoute_exe" Guid="F7C1EBE7-3D7B-4E6D-8098-81EDDFD156EF" Permanent="no" Transitive="no">
<File Id="file_KofaxCaptureQCRoute_exe" DiskId="1" Hidden="no" ReadOnly="no" TrueType="no" System="no" Vital="yes" Name="KofaxCaptureQCRoute.exe" Source="..\QC Route\KofaxCaptureQCRoute\bin\debug\KofaxCaptureQCRoute.exe" KeyPath="yes" />
</Component>
<Component Id="comp_file_srvany" Guid="D9CA373B-66B9-4FC5-A88D-E97FDDBBD526">
<File Id="file_srvany" Source="..\QC Route\srvany.exe" KeyPath="yes" />
<ServiceInstall
Id="QCRouteService"
Type="ownProcess"
Name="QCRouteService"
DisplayName="Kofax_QCRoute_Service"
Start="auto"
Account="[SERVICEACCOUNT]"
Password="[SERVICEPASSWORD]"
ErrorControl="normal"
Vital="yes"
/>
<ServiceControl Id="Kofax_QCRoute_Service" Stop="both" Remove="uninstall" Name="QCRouteService" Wait="yes" />
<RegistryKey Root="HKLM"
Key="SYSTEM\CurrentControlSet\Services\QCRouteService\Parameters"
Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Name="Application" Value=""[#file_KofaxCaptureQCRoute_exe]"" />
</RegistryKey>
<RegistryKey Root="HKLM"
Key="SYSTEM\CurrentControlSet\Services\QCRouteService\Enum"
Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Name="0" Value="Root\LEGACY_QCROUTESERVICE\0000" />
<RegistryValue Type="integer" Name="Count" Value="1" />
<RegistryValue Type="integer" Name="NextInstance" Value="1" />
</RegistryKey>
</Component>
Я попытался это, но до сих пор нет успеха. Нужно ли включать тег пользовательских действий? Я не знаю об этом. Также, что на самом деле имеет раздел реестра Enum. Я думаю, я должен удалить это. Какие еще вещи я могу попробовать? пожалуйста, предложите. – Anurag
Я проанализировал далее и посмотрю, что DLL не вызвана правильно DBLite.dll и бросается ниже ошибки. Создание экземпляра COM-компонента с CLSID {C49DF797-F12D-11D3-A41D-009027253C28} из IClassFactory завершилось неудачно из-за следующей ошибки: 80171500 Исключение из HRESULT: 0x80171500. 08/30/2016 02:28:07: Ссылка на объект не установлена в экземпляр объекта. Я должен зарегистрировать эту dll по heat.exe? Кроме того, у меня много других DLL, как это. Что мне делать. – Anurag
Если вы не меняете интерфейсы много (не должно произойти в любом случае), то да, вы можете использовать тепло для сбора информации о реестре. Есть две вещи, которые вы можете сделать: собирать * каждую * сборку, которая автоматически будет получать изменения или только собирать урожай и поддерживать компоненты wxs после первоначальной работы, получая там рег-материал. Я взял второй подход со своими установщиками. –