0

私は WiX の初心者で、3 つの Windows サービスを含むアプリをインストールするインストーラーを作成しようとしています。これらのサービスの 1 つをダミーとして、他の 2 つをデバッグするためのフックを提供します。InstallUtil を使用してサービスを正常にインストールできますが、他のコンポーネントやアプリケーションを含む、より完全なインストールが必要です。

WXS ファイルには、コンポーネント内に 3 つの ServiceInstall ノードと 3 つの ServiceControl ノードがあります。これらのノードは、アプリケーションの実行可能ファイル内で定義された 3 つのサービスの名前を参照します。

インストーラーの実行は正常に完了し、サービスがインストールされて開始されたと報告されます。ただし、2 番目と 3 番目のサービスの機能は利用できず、イベント ログを確認すると、ダミー サービスの起動メッセージが 3 回入力されていることがわかります。3 つのサービスすべてを停止する場合も同様です。ダミーのシャットダウン メッセージが 3 回表示されます。WSX ファイル内のサービスの宣言と、サービスが実際にどのようにインストールされるかの間に、いくつかの内訳があるようです。

このコンポーネントに関連する WSX ファイルの XML は次のとおりです。

<Component Id="LPMMANAGEMENTSERVICE.EXE" 
    Guid="36C773C5-EF30-4D8D-B9CC-015EBE906CCB" DiskId="1">
        <File Id="LPMMANAGEMENTSERVICE.EXE" Name="LPMManagementService.exe" Source="Projects\LumePress\LumeJetManagement\LPMManagementService\bin\Release\LPMManagementService.exe" />
            <ServiceInstall Name="LPMManagementDebug" Type="ownProcess" Start="auto" 
                            ErrorControl="critical" Interactive="no" Account="LocalSystem" 
                            Vital="yes" DisplayName="LPM Management Service Debugger" 
                            Description="This service provides a process startup without starting the key services, allowing a debugger to attached and handle onstart and onstop" 
                            Id="LPM_Management_Service_Debugger_Installer" />
            <ServiceInstall Name="LPMServiceListeners" Type="ownProcess" Start="auto" 
                            ErrorControl="critical" Account="LocalSystem" DisplayName="LPM Management Service Listeners" 
                            Id="LPM_MANAGEMENT_SERVICE_LISTENERS_INSTALL" Interactive="no" Vital="yes" 
                            Description="Provides WebAPI and WCF Services for the LPM Architecture" />
            <ServiceInstall Name="LPMMonitoring" Type="ownProcess" Start="auto" ErrorControl="critical" 
                            Description="Manages and logs events from the LPM Core perl executable" 
                            DisplayName="LPM Management Service LPM Core and Monitoring" Account="LocalSystem" 
                            Id="LPM_MANAGEMENT_SERVICE_CORE_INSTALL" Interactive="no" Vital="yes">
                <ServiceDependency Id="LPMServiceListeners" />
            </ServiceInstall>
            <ServiceControl Id="LPM_MANAGEMENT_DEBUG_CONTROL" Name="LPMManagementDebug" 
                            Remove="uninstall" Start="install" Stop="both" />
            <ServiceControl Id="LPM_MANAGEMENT_SERVICE_LISTENERS_CONTROL" Name="LPMServiceListeners" 
                            Remove="uninstall" Start="install" Stop="both" />
            <ServiceControl Id="LPM_MANAGEMENT_SERVICE_CORE_CONTROL" Name="LPMMonitoring" 
                            Remove="uninstall" Start="install" Stop="both" />
        </Component>

複数のサービスの作成に関連するさまざまな質問を見つけましたが、このシナリオに直接関連する質問や、私が間違っていることを推測するのに十分なほど類似した質問は見つかりません。

うまくいけば、誰かが役立つかもしれない提案をするでしょう。

明らかな何かを見逃した場合は、追加情報を提供していただければ幸いです。

4

2 に答える 2

1

単一の実行可能ファイルから複数のサービスをインストールする場合、タイプを「sharedProcess」に設定する必要があります。そうしないと、1 つのサービスのみが開始され、他のサービスは開始されません。

于 2016-02-22T11:10:49.847 に答える