所以我有一个基于WIX的部署项目。我注意到你可以在那里包含功能和文件。但是,如果选择了DEV / QA环境,我只想部署特定文件。如果他们选择Production,我希望它忽略这个特定的文件。
.wxi文件中是否有条件有条件地包含功能/目录&基于变量的特定值的文件?
即。我希望有类似下面的东西 - 可能是动态包含的componentRef? (我已对这些值进行了清理)。
<Feature Id="MyApplication" Title="MyApp" Description="My Application" ConfigurableDirectory="MYAPP" Level="1">
<ComponentRef Id="AppEmailTemplatesDir" />
</Feature>
然后再往下走
<Directory Id="EmailTemplatesDir" Name="EmailTemplates">
<Component Id="AppEmailTemplatesDir" Guid="{A-GUID}">
<File Id="EmailTemplate1.htm" Name="EmailTemplate1.htm" DiskId="1" Source="..\..\EmailTemplates\EmailTemplate1.htm" />
</Component>
</Directory>
有什么想法吗?我们确实有自定义动作代码(VB.NET),但我不确定除了编写包含文件的代码之外如何使用它。
答案 0 :(得分:0)
看起来我可以使用Component NeverOverwriteOption =“yes”选项来确保安装程序在文件存在时不会覆盖这些文件。
除非环境有条件的东西很容易弄明白 - 这似乎达到了我所需要的,就是不要在生产时覆盖文件。
我还发现在卸载时它会删除所有文件夹(如预期的那样),但为了保留模板路径,我可以使用Permanent =“yes”属性。
经过讨论,我们决定将所有文件保存在源代码管理中并进行部署。但至少我学到了NeverOverwriteOption和Permanent:)
答案 1 :(得分:0)
似乎有多种方法可以做到这一点......这在Visual Studio 2013中对我有用。
在WiX项目属性/工具设置中,将其添加到其他参数/编译器::
-dReleaseType=$(ReleaseType)
创建一个仅包含附加文件的组件组(这是留给读者的练习)
在主.wxs
文件中添加如下内容:PDBFile
是步骤2中组件组的ID:
<!-- Installs a PDB file for daily builds -->
<?if $(var.ReleaseType) = daily ?>
<ComponentGroupRef Id="PDBFile"/>
<?endif?>
运行devenv
以在环境中设置ReleaseType
来构建WiX项目