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

有帮助吗?

解决方案

不要将ini文件作为文件安装,但将条目转换为 inifile表条目 。这允许所有INI文件更改为被视为“原子变化单元”,允许通过内置MSI机制正确合并和回滚。 避免所有自定义动作复杂性。

作为克里斯在他的主要升级评论中指出:在Wix / MSI中正确的方式做事,在需求变化或更新变得复杂时,您可以避免很多问题开始弹出。 inifile更新实现了正确的方式是强大而简单的处理。

在wix中,您使用 inifile元素 实现这一点。所有合并功能,回滚支持和高级INI文件处理免费。您需要做的就是在安装期间定义需要在INI文件中添加或修改的内容。如果它在第一位置,它也将被创建。

使用inifile元素可能看起来比它更难。 这里是一个样本 。您也可以看看 众所周知的wix教程

所有MSI-Experts都在重复此建议:如果有等同的内置MSI构造,请不要使用自定义操作来更改系统。

其他提示

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

编辑:通常使用 inifile table ,从我的答案中解释的,从你得到回滚合并能力。但是,有些人更喜欢作为文件安装的INI文件到允许从MSI文件外部轻松修改文件。虽然不是首选,但这确实允许人们直接在安装媒体位置上“修补程序”。团队可以使用它来让安装人员从开发中拿起最新的Ini。这有技术问题可以通过自定义操作(最重要的文件替换问题)来处理。 INI文件也可能具有<强>非标准元素和格式化,它不适用于inifile表(罕见的,但可能的 - 有感觉的人,然后使用不同的文件扩展名) 。正如已经解释的那样,我将通过您自己的自定义操作强烈地建议更新INI文件,除非您正在做一些非常特别 - 实际需要的东西。实施并右转。

我建议有2个INI文件。安装程序拥有一个,并且应用程序/用户拥有一个。安装程序始终覆盖它的INI文件,永远不要担心在用户数据上踏上。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top