16

WiX 3.0 経由でアプリケーションのインストーラーを取得しようとしています。正確なコードは次のとおりです。

<File Id="ServiceComponentMain" Name="$(var.myProgramService.TargetFileName)" Source="$(var.myProgramService.TargetPath)" DiskId="1" Vital="yes"/>

<!-- service will need to be installed under Local Service -->
<ServiceInstall
                        Id="MyProgramServiceInstaller"
                        Type="ownProcess"
                        Vital="yes"
                        Name="MyProgramAddon"
                        DisplayName="[removed]"
                        Description="[removed]"
                        Start="auto"
                        Account="LocalService"
                        ErrorControl="ignore"
                        Interactive="no"/>
<ServiceControl Id="StartDDService" Name="MyProgramServiceInstaller" Start="install" Wait="no" />
<ServiceControl Id="StopDDService" Name="MyProgramServiceInstaller" Stop="both" Wait="yes" Remove="uninstall" />

なんらかの理由で、「サービスのインストール」ステップで LocalService が失敗し、「LocalSystem」に変更すると、サービスを開始しようとしてインストーラーがタイムアウトします。

このサービスは、手動およびシステムの起動時に正常に開始され、すべての意図と目的に対してうまく機能します. LocalService のすぐ下でサービスを動作させるには問題があると聞きましたが、Google は実際には役に立っていません。

インストール中にこのサービスをセットアップして開始するだけです。何か助けはありますか?ありがとう!

4

10 に答える 10

15

インストール時にservices.mscウィンドウが閉じていることを確認してください

于 2012-11-01T08:06:12.260 に答える
10

やってみました ...

NT AUTHORITY\LocalService 

このドキュメントごとに...

...ただし、CreateService を呼び出すときは、ロケールに関係なく、アカウントの名前を NT AUTHORITY\LocalService にする必要があります。そうしないと、予期しない結果が発生する可能性があります。

于 2009-07-11T20:53:20.547 に答える
8

参照:ServiceControlテーブル

ServiceControlテーブルのMSIドキュメントには、「Name」はサービスの文字列名であると記載されています。コードスニペットでは、ServiceControlの「Name」はServiceInstallの「ID」に設定されており、「Name」には設定されていません。したがって、ServiceControl要素は次のようになります。

<ServiceControl Id="StartDDService" Name="MyProgramAddon" Start="install" Wait="no" />
<ServiceControl Id="StopDDService" Name="MyProgramAddon" Stop="both" Wait="yes" Remove="uninstall" />
于 2009-07-24T19:21:42.527 に答える
7

localsystem サービスがエラー 1923 でインストールに失敗する別のケースを次に示します。別のサービスが既に同じ DisplayName でインストールされている場合 (内部サービス名、パスなどは異なります)。私はちょうどこれが私に起こった。

于 2011-05-21T22:15:22.857 に答える
3

しばらく調べてみたところ、ファイルではなくコンポーネントにキーパス属性が設定されていたことが原因であることがわかりました。私のwixファイルは次のようになります:

<Component Id="comp_WF_HOST_18" DiskId="1" KeyPath="no" Guid="3343967A-7DF8-4464-90CA-7126C555A254">
    <File Id="file_WF_HOST_18" Checksum="yes" Source="C:\Projects\GouldTechnology\Infrastructure\WorkflowHost\WorkflowHost\bin\Release\WorkflowHost.exe" KeyPath="yes"/>

      <ServiceInstall
                 Id="workflowHostInstaller"
                 Type="ownProcess"
                 Vital="yes"
                 Name="WorkflowHost"
                 DisplayName="Workflow Host"
                 Start="demand"
                 Account="[WORKFLOW_HOST_USER_ACCOUNT]"
                 Password="[WORKFLOW_HOST_USER_PASSWORD]"
                 ErrorControl="critical"
                 Interactive="no"/>
    <ServiceControl Id="StartWFService" Name="workflowHostInstaller" Start="install"  Stop="both" Remove="both" Wait="no" />

</Component>

今、私はそれに正しい許可を与える方法を考え出す必要があります...

于 2010-01-15T11:23:28.063 に答える
3

私も同じ問題を抱えていました。作成時にサービスプロジェクトで指定したサービス名と一致しない<ServiceControl Id="StartService" Name="MyServiceName"ところにタイプミスがあったことが判明しました。Name

これは、サービスがアンインストールされないという問題でもありました。

于 2010-05-25T22:16:58.150 に答える
2

aristippus303 のアドバイスを繰り返します。Windows インストーラーでサービスを開始しようとせず、アカウントを設定せず、インストール中にデフォルトの LocalSystem をそのまま受け入れてください。他のことをしようとするのは問題が多すぎます。Windows インストーラーはサービスが開始したことを示すのを待ちますが、許可と権利、ファイアウォールの設定、不足しているファイルなど、問題が発生する可能性のあることが多すぎるため、Windows インストーラーはフリーズするか、エラーで終了します。インストールに失敗しました。

あなたがしたいことは、ユーザーがサービスのアカウントを手動で変更し (必要な場合)、インストールが完了した後にサービスを手動で開始する必要があることをドキュメントに指定し、その時点で発生する問題をトラブルシューティングすることです。または、問題がないと確信している場合は、自動開始オプションがサービスを開始するように、ユーザーに再起動するように指示してください。

于 2011-02-04T14:03:23.540 に答える
2

同じ問題がありましたが、指定されたアカウントで、それに飽きて、代わりにインストールが完了した後にサービスを開始するための CA を作成しました。どこかから質の高い情報が得られない限り、MSI で開始しようとするのではなく、CA に任せてください。

ところで、LocalSystem を使用し、手動で開始したサービスは正常に動作します。他のバリエーションが機能することはありません。

于 2009-07-26T15:28:05.293 に答える
1

ServiceInstall要素のドキュメントには、Account属性について「サービスを開始するアカウント。ServiceTypeがownProcessの場合のみ有効。」と書かれているので注意してください。あなたの例では、問題の可能性がある ownProcess サービス タイプを指定していません。

于 2009-11-10T17:02:23.153 に答える
1

Windows XP マシンでのみ同じ問題が発生し、サービスをインストールできませんでした。最終的に、XP では WiX ファイルの名前設定が無視され、代わりに C# コードで設定されたサービス名が使用されることがわかりました。コードに空白を含む名前、つまり「Blah Blah Service」がありましたが、これを Windows 7 で使用される WiX ファイルと同じ名前に設定すると、うまく機能しました。

于 2010-10-13T13:51:18.233 に答える