2016-08-29 7 views
0

私はサービスとして実行したいKofaxコンポーネントのexeを持っています。以前のsrvany.exeはexeをサービスとして手動で登録するために使用されます。私はそれをサービスとしてインストールするwix msiインストーラを作成しています。インストール後、私は管理者としてexeを手動で実行していますが、それは完全に実行されており、管理者なしで適切な更新を行っています。そこで、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はおそらく他の場所で見られる例から取られたプロパティで指定したアカウントの下でそれを実行しようとしているインストールします。

あなたは、私が試したStart内部テキスト

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

を省略している、あなたはまた、あなたに、Servicecontrolに注意してください、この1

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

に近いServiceInstallを使用する必要があります設定し、これらの特性を持っていない場合は、このけどまだ成功していない。カスタムアクションタグを含める必要がありますか?私はこれについて認識していません。また実際にEnumレジストリキーは何をしますか?私はこれを取り除くべきだと思う。他に何ができるの?提案してください。 – Anurag

+0

さらに分析して、dllが正しくDBLite.dllを呼び出さず、エラーが発生することを確認します。次のエラーにより、IClassFactoryからCLSID {C49DF797-F12D-11D3-A41D-009027253C28} 80171500 HRESULTからの例外:0x80171500。 08/30/2016 02:28:07:オブジェクト参照がオブジェクトのインスタンスに設定されていません。 heat.exeでこのdllを登録する必要がありますか?また、私はこのような多くの他のDLLがあります。私は何をすべきか。 – Anurag

+0

インターフェースをたくさん変更していない場合(とにかく起こらないはずです)、レジストリ情報を収集するために熱を使うことができます。あなたができることは2つあります。すべてのビルドを自動的に変更したり、一度だけ収穫したり、最初の作業後にwxsコンポーネントを維持したりすることです。私はインストーラで2番目のアプローチをとった。 –

関連する問題