2016-12-15 18 views
0

Wixを使用してWindowsサービスインストーラを開発しました。サービスはインストール後に自動起動するように設定されています。インストーラには、ユーザの入力とアップデートの.configファイルを取るカスタムダイアログがあります。入力はオプションです。エラー1079:Windowsサービスの再起動エラー

入力が提供されていない場合、設定ファイルは更新されません。services.mscからWindowsサービスを再起動できます。ユーザーが入力を提供すると、カスタムアクション(遅延)によって構成ファイルが更新されます。このカスタムアクションは、Impersonate = "no"モードで実行されます。

この場合、インストール後にWindowsサービスが自動的に起動し、すべて正常に動作します。しかし、サービスを再起動すると、以下のエラーが発生します。以下は

enter image description here

サービスをインストールするためのコードです:

以下
<Component Id="CMPFa85281c3_a329_4a93_a1d7_203fbccec31f" Guid="*" Directory="INSTALLLOCATION"> 
    <Condition> 
    <![CDATA[Installed OR (SVCINSTALL <> 0)]]> 
    </Condition> 
    <RemoveFile Id="RmFa85281c3_a329_4a93_a1d7_203fbccec31f" Name="MyService.exe" On="both" /> 
    <File Id="Fa85281c3_a329_4a93_a1d7_203fbccec31f" Source="$(var.BaseDir)\MyService.exe" KeyPath="yes" /> 

    <ServiceInstall Id="InstallWindowsService" Name="MyService" 
        DisplayName="MyService" 
        Start="auto" 
        ErrorControl="normal" 
        Type="ownProcess" 
        Account="[USER_DOMAIN]\[SERVICEUSER]" 
        Password="[PASSWORD]" 
        Description="MyService"/> 

    <ServiceControl Id="sc_InstallWindowsService" Name="MyService" 
        Start="install" Remove="uninstall" Stop="both" Wait="no"/> 
</Component> 

は、カスタムアクションのコードです。この種のものから判断

<CustomAction Id="UpdateConfigFiles" 
       Return="check" 
       Execute="deferred" 
       Impersonate="no" 
       BinaryKey="MyCustomAction.dll" 
       DllEntry="UpdateFilePath" 
       HideTarget="yes"> 
</CustomAction> 

<InstallExecuteSequence> 
    <Custom Action="PassData" Before="UpdateConfigFiles">NOT Installed AND NOT PATCH AND NOT REMOVE</Custom> 
    <Custom Action="UpdateConfigFiles" Before="InstallFinalize">NOT Installed AND NOT PATCH AND NOT REMOVE</Custom> 
</InstallExecuteSequence> 
+0

お願いしますか?件名に「Windowsサービスの開始」と表示されますが、「サービスを停止すると」というテキストが表示されます。 – PhilDW

+0

インストール後にサービスが自動的に開始されます。これは正常に動作します。しかし、services.mscから再起動すると起動できません。 –

答えて

0

https://support.microsoft.com/en-us/kb/2478117

エラーがサービスを開始するには不十分な権限に関連付けることができます。カスタムアクションや設定ステップが効果を発揮する理由はありません。もちろん、サービスが新しいアカウントで開始されたり、同じプロセスで2つのサービスを共有するようにする必要はありません。これは、効果を引き起こすメカニズムがないため、インストールに関連するとは思われません。

再現するシナリオはまだ分かりませんが、インストールがサービスを開始できるようになり(インストールはローカルシステムアカウントで実行されます)、成功するように見えますが、KB記事によるエラーメッセージは、起動しようとしているユーザーに十分な特権がない場合、プロセスが2つのアカウントを使用しようとしているというエラーが表示されます。おそらく、1つは設定ファイルで、もう1つはインストールで構成されます。

関連する問題