使用WIX处理env特定文件

时间:2012-04-03 20:44:38

标签: wix wix3.5 wix-extension

我正在将所有项目从Installshield逐个迁移到Wix,我想找到处理env特定文件的最佳方法。

我们目前的流程是: 使用Installshield,我们创建一个基本MSI和一个转换文件,它将安装基本MSI和一个目录结构,其中包含当前目录中的文件。在我的源代码控制中,我有不同环境的单独配置文件,我的部署脚本会选择正确的文件集并将它们放在一个暂存位置。

例如,Current dir如下所示:

的Sample.msi

sample.mst

测试\应用\文档\ global.config

测试\文件\文档\ global.config

安装了sample.msi,并将上述目录结构复制到目标位置。 在卸载期间,目录结构也会被删除。

我尝试使用CopyFile元素重新创建此行为,但在卸载期间,复制的文件会保留并且不会被删除。还有另一种方法可以达到这个目的吗?

我理解我们的包装方式可能不是满足我们要求的最佳方式。如果有人有更好的方法,请告诉我。

我仍然是Wix的新手,我没有查看任何wix扩展,所以不知道还有什么。

与往常一样,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这些文件真的必须与msi分开吗? 使用wix,您可以将它们全部放入msi并根据某些条件(如设置属性或使用自定义操作)进行安装。这样做应该让msi创建目录并复制文件变得相当容易,并在卸载时删除它们。

条件会像这样:

<Component Id='MyComponent' Guid='PUT-GUID-HERE'>
  <Condition><![CDATA[YOUR-PROPERTY = "SOME_STRING"]]></Condition>
 <File Id='readme' Name='readme.txt' DiskId='1' Source='readme.txt' />
</Component>

Wix中的CustomAction可以是.net dll,手册解释了如何在这里完成: Adding Custom Actions

如果您安装了WIX工具包,则只需创建Custom Action Project