1

特定のサービスを開始および停止するアプリケーションがあります。ただし、そのサービスの名前は、プロジェクトを構築する構成によって異なります。WiXセットアップでは

<ServiceInstall
    <!-- etc... -->
    Name='$(var.ServiceName)'
    DisplayName='$(var.ServiceDisplayName)' />

ここでvar.ServiceName、ビルドプロセス中に指定されたインクルードファイルから取得されます。C#コードで同じサービス名を使用する必要がありますが、このアプローチの問題は、サービス名が2つの異なる場所に記述されていることです。サービス名を1か所にまとめるにはどうすればよいですか?

4

3 に答える 3

1

サービス名をレジストリキーに入れることを検討してください。レジストリキーでは、C#コードから簡単にアクセスできます。サービスをインストールするため、製品はとにかくコピー展開できません。そのため、レジストリを使用することもできます。

于 2012-05-09T20:21:48.457 に答える
0

C#コードはどのようにサービス名を取得していますか?構成から取得している場合は、インストール中に構成を編集し、インストーラーにサービス名を構成ファイルに書き込んでもらうことができます。これにより、WiXインクルードで指定した値に合わせてコードを維持できます。

編集。質問に答えて; 編集とは、インストール時に構成を編集するようにインストーラーを構成することを意味します。私はそれを「手作業で」行う(またはユーザーにそれを行うように要求する)ことは悪い考えであることに同意します。これはWiXで設定できます。XMLファイルのカスタムアクションを使用する必要があります。WiXは次のようになります。

<Component ...>
  <UTIL:XmlConfig>
    Id=...
    On="install"
    Action="create"
    File=[.. config file ID goes here ...]
    ElementPath="//myElement/livesHere
    Node="value"
    Name="someNodeName"
    Value="some value to set"
    ...

申し訳ありませんが、実際のスニペットを貼り付けることはできません。WiX構成は独自のものです:(ドキュメントリンクで正しく表示されることを願っています。

于 2012-05-09T20:05:41.773 に答える
0

構成に基づいて名前を付ける場合$(var.ProjectName.Configuration)は、サービスの名前に(ProjectNameはC#プロジェクトの名前です)を使用してみませんか?

于 2012-05-10T12:45:32.593 に答える