2016-08-29 8 views
0

У меня есть компонент 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="&quot;[#file_KofaxCaptureQCRoute_exe]&quot;" />     
     </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> 

ответ

0

Я считаю, что в вашей службе установки вы пытаетесь запустить его под учетной записью, указанной в свойствах ServiceAccount, SERVICEPASSWORD возможно взяты из примера видно в другом месте.

Если вы не имеете эти свойства, установленные, то вы должны использовать ServiceInstall близко к этому один

<ServiceInstall 
    Id="QCRouteService" 
    Type="ownProcess" 
    Name="QCRouteService" 
    DisplayName="Kofax_QCRoute_Service" 
    Start="auto" 
    Account="LocalSystem" 
    ErrorControl="normal" 
    Vital="yes"/> 

Также обратите внимание на ваш ServiceControl опустил на Start внутренний текст

<ServiceControl Id="Kofax_QCRoute_Service" Start="install" Stop="both" Remove="uninstall" Name="QCRouteService" Wait="yes" /> 
+0

Я попытался это, но до сих пор нет успеха. Нужно ли включать тег пользовательских действий? Я не знаю об этом. Также, что на самом деле имеет раздел реестра Enum. Я думаю, я должен удалить это. Какие еще вещи я могу попробовать? пожалуйста, предложите. – Anurag

+0

Я проанализировал далее и посмотрю, что 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

+0

Если вы не меняете интерфейсы много (не должно произойти в любом случае), то да, вы можете использовать тепло для сбора информации о реестре. Есть две вещи, которые вы можете сделать: собирать * каждую * сборку, которая автоматически будет получать изменения или только собирать урожай и поддерживать компоненты wxs после первоначальной работы, получая там рег-материал. Я взял второй подход со своими установщиками. –

 Смежные вопросы

  • Нет связанных вопросов^_^