2016-07-23 3 views
0

私はWiXを使用してWindowsサービスとしてインストールする必要があるmosquitto.exeを持っています。私がWindowsサービスプロジェクトを作成し、その開始メソッドでEXEを実行すると、すべて正常に動作します。しかし、ServiceControlとServiceInstallだけを使用し、別のWindowsサービスプロジェクトを使用せずにmosquitto.exeを実行することは可能ですか?私はこれを試しましたが、サービスはうまくいきませんが、開始に失敗します。サービスプロジェクトを作成せずにWIXを使用してWindowsサービスからEXEを実行することはできますか?

</Component> 
    <Component Id="cmp59455E1C37B7879C4BC250DE3D60A2AD" Directory="MyProgramDir" Guid="179B4F4C-912B-4CA1-8F08-5E1B4ADFFD8B" Win64="no"> 
    <File Id="fil7D28AEF774656849395A2FA20A5C963D" KeyPath="yes" Source="../../../Setups/mosquitto/mosquitto/mosquitto.exe" /> 
    <ServiceInstall Id="MosquittoSI" Type="ownProcess" Name="Mosquitto" DisplayName="Mosquitto" Description="Mosquitto broker service" Start="auto" Account="LocalSystem" ErrorControl="normal"/> 
<ServiceControl Id="MosquittoSC" Start="install" Stop="both" Remove="uninstall" Name="Mosquitto" Wait="no" /> 
</Component> 

は、私がここで何か間違ったことをしたか、私は実際にWindowsサービスプロジェクトを使用して作成した別のexeファイルを通じてこのmosquitto.exeを起動する必要がありますか?どんな助けでも大歓迎です。

+0

Windowsサービスを扱う場合、Windowsイベントログが表示されます。サービスの開始に失敗したことを示す標準ログと、理由を示すカスタムログがあります。多くの場合、サービスは起動時に何らかのチェックを行うように設計されており、失敗した場合、そのロジックは起動に失敗すると言います。 –

答えて

1

以前はMosquittoについて聞いたことがありませんでしたが、そのプロジェクトサイトとそのinstaller(NSIS)を見てみると、はWindowsサービスです。そのインストーラは、mosquitto.exe installmosquitto.exe uninstallを適切に実行します。

一般に、信頼性が低いことが証明されるまでは、サードパーティのインストーラーに自分のしていることをさせることをおすすめします。インストーラを使用するには、WiX Bootstrapperプロジェクトを作成します(「burn」パッケージマネージャを使用します;プロジェクトには、バンドルルート要素を持つbundle.wxsがあります)。

サイレントインストールなどのコマンドライン引数(標準NSISまたはカスタム)を渡すことができます。

+0

私は既にBurn EXEを通してmosquittoインストーラMSIを実行しています。だから、EXEプロジェクトとしてモスキートを実行することはできません。あなたはMSIとしてインストールするためのテクニックを回避することを提案しますか? – mayooran

+0

さて、彼らの成功の道は彼らのNSISインストーラです。それを使用する必要がない場合は、最初のパスと同じものを再実装することができます。これは、 'mosquitto.exe install'と' mosquitto.exe uninstall'を実行するカスタムアクションを意味します。それがあなたのことをするなら、あなたはそれらのコマンドが実際に何をするかを見なければならないでしょう。 –

関連する問題