配置文件和 Wix 工具集

Configuration files and Wix Toolset

我有一个应用程序的 WiX 安装程序,它安装了一个 INI 文件和一个 XML 文件(两者都是配置文件)。

所以将它们作为安装的一部分并不是一个很好的举措,所以现在我修改了安装,以便安装的文件是默认文件 (.default),并且我 运行 一个元素来复制到真正的配置文件。这里的问题是,然后文件在 uninstall/upgrade.

期间被删除

所以我有一个自定义操作,将默认文件复制到 'real' 配置文件,这意味着它们将在卸载时保留。这只在之后有效(因为在那之前,文件还没有被放下)

问题是,存在向导对话框页面和静默安装参数,用户可以在安装期间使用这些参数来配置应用程序。而当或运行时,文件还没有被复制!

理想的全新安装顺序是:

然后升级

并卸载

这个的模式应该是什么?

我正在努力使场景描述尽可能简单。我觉得为此存在一种设计模式 exists/should。

允许将安装中的配置参数写入非(严格)安装一部分的文件的首选模式是什么?

这是一个非常广泛的主题,但总的来说,我的最佳实践方法是安装程序只设置默认值并始终覆盖文件。然后覆盖文件用于提供定制,应用程序按该顺序加载。安装程序不知道这些文件,所以它从不接触它们。应用程序必须设计为执行此操作,在某些情况下这是不可能的(例如 web.config)。在这些情况下,您必须完成加载您关心的自定义项、覆盖文件然后重新应用它们的额外工作。

这个问题的核心是 INI 和 XML 文件可能是无限的数据存储库,而简单的 "overwrite or not overwrite" MSI 服务规则根本不起作用。您最终会遇到无法解决的合并问题。最好有 1 个文件安装程序 "owns" 并始终覆盖用户或应用程序拥有的一个或多个其他文件(层),安装程序对此一无所知并且从不修改,然后让应用程序合并数据共同产生最终的真相。

如果您想进行更详细的讨论或解释原因,请查找我的联系信息。我总是愿意毫无义务地讨论设计问题。