在C#项目和WiX之间共享信息

时间:2012-05-09 20:02:36

标签: c# build wix dry

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

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

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

3 个答案:

答案 0 :(得分:1)

考虑将服务名称放入注册表项,您的C#代码可以轻松访问它。由于您安装了服务,因此您的产品无法进行可复制部署,因此使用注册表可能是一种选择。

答案 1 :(得分:0)

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

EDIT。 回答这个问题;通过编辑我的意思是配置安装程序以在安装时编辑配置。我同意这样做&#34;手工&#34; (或要求用户这样做)是个坏主意。您可以在WiX中进行设置。你需要使用XML File custom action,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配置是专有的:(希望文档链接能够看到你。

答案 2 :(得分:0)

如果您根据配置命名它,为什么不在服务名称中使用$(var.ProjectName.Configuration)(其中ProjectName是您的C#项目的名称)?