如何使用Wix Toolset检查ini文件是否存在

时间:2014-07-29 19:30:09

标签: wix installer windows-installer ini

我有一个带配置的.ini文件。我需要检查它是否存在于新安装中以避免再次创建它。此外,如果新的.ini将新字段添加到现有文件中。

3 个答案:

答案 0 :(得分:3)

不要将ini文件作为文件安装,而是将条目转换为 IniFile Table entries。这允许所有ini文件更改被视为“原子更改单元”,允许通过内置MSI机制进行适当的合并和回滚。 您可以避免所有自定义操作的复杂性。

正如克里斯在他的主要升级评论中指出的那样:在Wix / MSI中以正确的方式做事,并且当需求变更或更新变得复杂时,你会避免很多问题开始出现。以正确的方式实现的IniFile更新功能强大且易于处理。

在Wix中,您使用IniFile Element来实现此目的。所有合并功能,回滚支持和高级ini文件处理都是免费提供的。您需要做的就是在安装过程中定义需要在ini文件中添加或修改的内容。如果它首先不存在,也会被创建。

使用IniFile元素可能看起来比它更难。 Here is a sample。您还可以查看well known Wix tutorial here

所有MSI专家都不断重复这一建议:如果有相同的内置MSI结构,请不要使用自定义操作来更改系统。

答案 1 :(得分:2)

设置NeverOverwrite ="是"在.ini文件的组件上,然后通过自定义操作处理更新。

修改:一般情况下,如我的回答中所述,使用 IniFile表要好得多,因为您获得了回滚合并功能即可。但是,有些人更喜欢将INI文件作为文件安装到允许从MSI文件外部轻松修改文件。虽然不是首选,但这确实允许人们使用" hotfix" INI文件直接在安装媒体位置。团队可以使用它来让安装程序从开发中获取最新的INI。这有一些技术问题可以通过自定义操作处理(最重要的是安装时文件替换问题)。 INI文件也可能包含非标准元素和格式,这些元素并不适合IniFile表(很少见,但可能 - 有意义的人使用的文件扩展名不同于INI)。正如已经解释的那样,我强烈建议不要通过自己的自定义操作更新INI文件,除非你做了一些非常特殊的事情 - 这实际上是需要的。实施和实现是很复杂的。

答案 2 :(得分:1)

我建议有2个INI文件。安装程序拥有的一个和应用程序/用户拥有的一个。安装程序始终可以覆盖它的INI文件,从不担心踩踏用户数据。