由于我的WiX安装的一部分,我复制所有的转换/编译web.config文件中的安装目录。 编译web.config文件的名称是格式网页。{} ENV的.config。 在我安装UI我创建了一个自定义对话框,在这里我解析ENV和填充组合框,使用户可以选择,这是我们部署到环境中。 此组合框设置属性ENV。
我需要了解我可以使用这个属性来配置安装文件复制到网站根目录。
更新:@Rob_Mensching - 您的解决方案的工作,但是,在编译维克斯迫使我必须为每个这样的组件创建一个GUID。 有没有一种方法,我可以避开它? 事情是我要去通过它获取使用产生的热量我的WXS文件运行XSLT生成这段代码; 有没有办法,我可以生成一个GUID使用XSLT(或可以吗?)
这是我的代码现在的样子:
<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
从罗布提供经过一番更多的研究,我发现了如何避免必须提供的GUID每个组件,如果你的安装文件夹是不是一个标准的文件夹中的代码帮助。 只需指定ComponentGuidGenerationSeed下您要安装该组件的自定义目录。 在这里指定这个属性的目录不必是位置的直接父目录,要安装该组件。 这是我的目录结构现在的样子:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INETPUBFOLDER" Name="inetpub">
<Directory Id="WWWROOTFOLDER" Name="wwwroot" ComponentGuidGenerationSeed="PUT-YOUR-GUID">
<Directory Id="CONFIGLOCATION" Name="$(var.PublishLocation)" />
<Directory Id="INSTALLLOCATION" Name="$(var.PublishLocation)" >
<Directory Id="APPFOLDER" Name="bin" />
<Directory Id="MyProject.Web.Content" />
<Directory Id="CONFIGSFOLDER" Name="Configs">
<Directory Id="WEBFOLDER" Name="Web">
<Directory Id="WEBCONFIGFILES" />
</Directory>
<Directory Id="NLOGFOLDER" Name="NLog">
<Directory Id="NLOGCONFIGFILES" />
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
这是我的收获和XML转换WXS文件如何现在看起来:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="WEBCONFIGFILES">
<Component Id="cmp9CAF0D4A0C62775945002986D1D99926" Guid="PUT-YOUR-GUID">
<File Id="fil9C4CFE42035F1A63180142352CF441BC" KeyPath="yes" Source="$(var.WebConfigFilesDir)\Web.Dev1.config" />
</Component>
<Component Id="cmpB5117E2029EA9A7CC3AFC247EA4483AD" Guid="PUT-YOUR-GUID">
<File Id="fil0F80FEAFAD0333C3B74BB742C4FE118C" KeyPath="yes" Source="$(var.WebConfigFilesDir)\Web.Prod.config" />
</Component>
<Component Id="cmp340743041F12BBE6C7C40D4351407D08" Guid="PUT-YOUR-GUID">
<File Id="fil12F8B50F03F1BD91A579F6B6CE7195DF" KeyPath="yes" Source="$(var.WebConfigFilesDir)\Web.QA1.config" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="WebConfigFiles">
<ComponentRef Id="cmp9CAF0D4A0C62775945002986D1D99926" />
<ComponentRef Id="cmpB5117E2029EA9A7CC3AFC247EA4483AD" />
<ComponentRef Id="cmp340743041F12BBE6C7C40D4351407D08" />
</ComponentGroup>
</Fragment>
<Fragment>
<UI Id="EnvironmentComboBox">
<ComboBox Property="ENV">
<ListItem Value="Dev1" Text="Dev1" />
<ListItem Value="Prod" Text="Prod" />
<ListItem Value="QA1" Text="QA1" />
</ComboBox>
</UI>
</Fragment>
<Fragment>
<ComponentGroup Id="web.config" Directory="CONFIGLOCATION">
<Component Id="cmpWebConfigForDev1">
<Condition>ENV="Dev1"</Condition>
<File Id="CopyDev1Config" Source="$(var.WebConfigFilesDir)\Web.Dev1.config" Name="web.config" />
</Component>
<Component Id="cmpWebConfigForProd">
<Condition>ENV="Prod"</Condition>
<File Id="CopyProdConfig" Source="$(var.WebConfigFilesDir)\Web.Prod.config" Name="web.config" />
</Component>
<Component Id="cmpWebConfigForQA1">
<Condition>ENV="QA1"</Condition>
<File Id="CopyQA1Config" Source="$(var.WebConfigFilesDir)\Web.QA1.config" Name="web.config" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
在上述文件中只有前两个片段通过收获工具生成的。 含有WebconfigFiles的UI /组合框定义和ComponentGroup接下来的两个片段的创建使用XML通过读取在第一片断文件要素信息变换。