1

インストールするサービスを実行するアカウントをユーザーが構成できるカスタムダイアログを作成しました。これを行うには、 [アカウント]プロパティを設定するカスタムダイアログの[次へ]ボタンにプロパティイベントを添付します。

<Publish Property="Account" Value="[USERNAME]">USERACCOUNT = "1"</Publish>
<Publish Property="Account" Value="Local System"><![CDATA[USERACCOUNT <> "1"]]></Publish>

次に、サービスをインストールするコンポーネントでアカウントプロパティを取得しようとします。

<Component Id="Service" Guid="*" >
  <File Id="ServiceExe" KeyPath="yes" Source="$(var.ServiceFiles)\Service.exe" />
  <ServiceInstall Vital="yes" ErrorControl="ignore" Type="ownProcess" Account="[Account]" Name="$(var.ServiceName)" Description="Service running as [Account]" Start="auto" />
  <ServiceControl Id="ServiceControl" Remove="both" Name="$(var.ServiceName)" Start="install" Stop="both"/>
</Component>

私の問題は、インストーラーログのプロパティイベントによって正しい値が公開されていることを確認できても、このコンポーネントが[アカウント]に公開された値を使用しないことです。だから私の質問は、サービスインストーラコンポーネントがカスタムダイアログによって公開された[アカウント]値を確実に取得するようにするにはどうすればよいですか?

4

1 に答える 1

3

ACCOUNTなどのパブリックプロパティを使用します。プライベートプロパティは、InstallExecuteSequenceで変更された値を失います。

また、特定のアカウントにサービスをインストールする場合は、そのアカウントに[サービスとしてログオン]ポリシーが設定されていることを確認してください。そうしないと、インストール後にサービスが開始されません。

于 2011-05-19T13:14:00.717 に答える