作为 WiX 安装的一部分,我将所有转换/编译的 web.config 文件复制到安装目录。编译后的 web.config 的名称格式为 web.{ENV}.config。在我的安装 UI 中,我创建了一个自定义对话框,在其中解析 ENV 并填充组合框,以便用户可以选择我们部署到的环境。该组合框设置一个属性 ENV。
我需要了解如何使用此属性将已安装的配置文件复制到网站根目录。
更新:@Rob_Mensching - 您的解决方案有效,但是,在编译时 WiX 强制我为每个此类组件创建一个 GUID。我有办法避免吗?问题是我将通过在我的 wxs 文件上运行 XSLT 来生成这段代码,该文件是使用热量生成的;我无法使用 XSLT 生成 GUID(或者我可以吗?)
这就是我的代码现在的样子:
<ComponentGroup Id='web.config' Directory='CONFIGLOCATION'>
<Component Id='CopyWebConfigForDev1' Guid='{F207C26A-5D9C-4F19-96A3-D818BB226EFC}' >
<Condition>ENV="Dev1"</Condition>
<CopyFile Id='CopyDev1Config' FileId='fil9C4CFE42035F1A63180142352CF441BC' DestinationDirectory='CONFIGLOCATION' DestinationName='web.config'/>
</Component>
<Component Id='CopyWebConfigForQA1' Guid='{F207C26A-5D9C-4F19-96A3-D818BB226EFC}' >
<Condition>ENV="QA1"</Condition>
<CopyFile Id='CopyQA1Config' FileId='fil12F8B50F03F1BD91A579F6B6CE7195DF' DestinationDirectory='CONFIGLOCATION' DestinationName='web.config'/>
</Component>
</ComponentGroup>
最佳答案
我会使用“组件条件”b 来执行此操作。像下面这样的东西应该可以很好地工作:
<Fragment>
<ComponentGroup Id='web.config' Directory='ConfigFolder'>
<Component>
<Condition>ENV~="Production"</Condition>
<File Source='web.Production.config'>
<CopyFile DestinationDirectory='INSTALLFOLDER' DestinationName='web.config' />
</File>
</Component>
<Component>
<Condition>ENV~="Test"</Condition>
<File Source='web.Test.config'>
<CopyFile DestinationDirectory='INSTALLFOLDER' DestinationName='web.config' />
</File>
</Component>
</ComponentGroup>
</Fragment>
条件语法记录如下:http://msdn.microsoft.com/en-us/library/windows/desktop/aa368012(v=vs.85).aspx
关于xslt - WiX - 根据环境将编译后的 web.config 复制到网站根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15377149/