1

我有一个启动和停止特定服务的应用程序。但是,根据我构建项目的配置,该服务的名称不同。在我的 WiX 设置中,我有

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

wherevar.ServiceName来自构建过程中指定的包含文件。我必须在我的 C# 代码中使用相同的服务名称,但我对这种方法的问题是服务名称写在两个不同的地方。如何将服务名称集中到一个地方?

4

3 回答 3

1

考虑将服务名称放入注册表项中,您的 C# 代码可以轻松访问它。由于您安装了服务,因此您的产品无论如何都不可复制部署,因此可以选择使用注册表。

于 2012-05-09T20:21:48.457 回答
0

C# 代码如何获取服务名称?如果它是从配置中提取的,那么您可以在安装期间编辑配置并让安装程序将服务名称写入配置文件,这样您就可以使代码与您在 WiX 包含中指定的值保持一致。

编辑。回答这个问题;通过编辑我的意思是配置安装程序以在安装时为您编辑配置。我同意“手动”(或要求用户这样做)是一个坏主意。您可以在 WiX 中进行设置。您需要使用XML File 自定义操作,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 回答