2

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

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

例如,当前目录如下所示:

示例.msi

样本.mst

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

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

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

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

我了解我们进行包装的方式可能不是满足我们要求的最佳方式。如果有人有更好的方法来做到这一点,请告诉我。

我对 Wix 还是很陌生,我还没有看过任何 wix 扩展,所以不知道还有什么。

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

4

1 回答 1

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,手册在此处解释了这是如何完成的: 添加自定义操作

如果您安装了 WIX 工具包,您只需要创建一个Custom Action Project.

于 2012-04-03T22:40:11.973 回答