0

インストーラーによってインストールするサービスがあります。UI ユーザーは、このサービスを LocalSystem としてインストールするか、指定されたユーザー資格情報を使用してインストールするかを選択できます。私の Wix コードは次のようになります。

<Component Id="C.MyService.exe" Guid="{Guid}">
        <File Id="MyService.exe" Name="MyService.exe" KeyPath="yes" Vital="yes"
              Source="MyServicePath" />
        <ServiceInstall Id="MyServiceInstall" DisplayName="[SERVICE_NAME]" Account="[SERVICE_ACCOUNT]" Password="[SERVICE_PASSWORD]" Name="[SERVICE_NAME]" ErrorControl="normal" Start="auto" Type="ownProcess" Vital="yes" Interactive="no">
        </ServiceInstall>
        <ServiceControl Id="MyServiceStart" Name="[SERVICE_NAME]" Start="install" Wait="no" />
        <ServiceControl Id="MyServiceStop" Name="[SERVICE_NAME]" Stop="both" Wait="yes" />
        <ServiceControl Id="MyServiceRemove" Name="[SERVICE_NAME]" Remove="uninstall" Wait="yes" />
      </Component>
      <Component Id="SetStartServicePermission" Guid="{Guid}">
        <CreateFolder/>
        <Condition>NOT USE_LOCALSYSTEM_ACCOUNT</Condition>
        <util:User Id="ServiceUser" Name="[SERVICE_ACCOUNT]" Password="[SERVICE_PASSWORD]" CreateUser="no" LogonAsService="yes" UpdateIfExists="yes" />
      </Component>

LocalSystem を選択すると、サービスがインストールされ、正常に動作します。ただし、カスタム ユーザー資格情報サービスをインストールすると、「サービス ServiceName を開始できませんでした。システム サービスを開始するのに十分な権限があることを確認してください」というエラーで開始できません。カスタム ユーザーは既に存在し、管理者グループに属しています。LocalSystem を使用してインストールし、サービスのログオン資格情報を手動で変更すると、正常に起動します。

4

3 に答える 3

1

完全を期すために、次のコードを使用してLogonAsServiceにアクセス許可を付与しました。

<util:User Id="ProcessingServiceUser" Domain="[APP_USER_DOMAIN]" Name="[APP_USER_NAME]" Password="[APP_USER_PASSWORD]" CreateUser="no" LogonAsService='yes' UpdateIfExists='yes' />

したがって、CreateUserは'no'である必要がありますが、UpdateIfExists='yes'です。

ユーザーがすでにこの権限を持っているとおっしゃっていたので、これはあなたの問題ではないと思いますが。

インストーラーは昇格された権限で起動しますか?どのOSバージョンにインストールしますか?昇格されたアクセス許可を要求しないようにユーザーごとのインストールを作成したと思いますが、その後、サービスを開始しようとしています。MSIをダブルクリックするのではなく、管理コマンドライン(msiexec /i YourInstaller.msi)から起動してみてください。

于 2012-11-12T11:30:01.810 に答える
0

修理済み。ServicePassword プロパティ名を誤って印刷し、インストーラーがサービス ユーザーに空のパスワードを設定しました。

于 2013-01-30T10:56:42.670 に答える
0

createuser 属性が false になっています。したがって、WiX は SeLogonAsService 権限を付与するためにユーザーを作成/更新していません。Services.msc にアクセスして資格情報を入力すると、暗黙的にこれが行われ、作業が開始されます。

于 2012-11-07T03:06:49.230 に答える