我有一个应用程序的WiX安装程序,它安装了一个INI文件和一个XML文件(两者都是配置文件)。
因此将它们作为安装的一部分并不是一个很好的举措,所以现在我已经修改了安装,以便安装的文件是DEFAULT文件(.default),我运行一个元素来复制到真正的配置文件。这里的问题是,在卸载/升级过程中删除文件。
所以我有一个自定义操作,将默认文件复制到“真正的”配置文件,这意味着它们将在卸载时保留。这仅适用于AFTER(因为在此之前,该文件尚未确定)
问题是,用户可以使用向导对话框页面和静默安装参数在安装期间配置应用程序。当运行或运行时,文件尚未被复制!
理想的全新安装顺序是:
然后升级
并卸载
这应该是什么模式?
我正在尝试尽可能简单地描述场景。我觉得设计模式存在/应该存在。
允许将安装中的配置参数写入文件(不是(严格地))安装的首选模式是什么?
答案 0 :(得分:1)
这是一个非常广泛的主题,但一般来说,我的最佳实践方法是安装程序仅设置默认值并始终覆盖文件。然后覆盖文件用于提供自定义项,应用程序按该顺序加载。安装程序不知道这些文件,因此它永远不会触及它们。应用程序必须设计为执行此操作,在某些情况下这是不可能的(web.config作为示例)。在这些情况下,您必须完成额外的工作,即加载您关心的自定义项,覆盖文件然后重新应用它们。
这个问题的核心是INI和XML文件可能是无限的数据存储库,并且MSI的简单“覆盖或不覆盖”服务规则不起作用。你最终陷入无法解决的合并问题。最好有1个文件,安装程序“拥有”并始终覆盖用户或应用程序拥有的一个或多个其他文件(层),安装程序不知道任何内容,永远不会修改然后让应用程序将数据合并到一起产生最后的真相。
如果您想要更详细的讨论或解释原因,请查看我的联系信息。我总是愿意毫无义务地讨论设计问题。