【发布时间】:2015-06-16 17:47:25
【问题描述】:
我有一个应用程序的 WiX 安装程序,它同时安装一个 INI 文件和一个 XML 文件(两者都是配置文件)。
因此将它们作为安装的一部分并不是一个很好的举措,所以现在我已经修改了安装,以便安装的文件是默认文件(.default),我运行一个元素来复制到真正的配置文件.这里的问题是,文件在卸载/升级期间被删除。
所以我有一个自定义操作,将默认文件复制到“真实”配置文件,这意味着卸载时它们将被保留。这只在之后才有效(因为在那之前,文件还没有被放下)
问题是,用户可以在安装过程中使用向导对话框页面和静默安装参数来配置应用程序。而当或运行时,文件还没有被复制!
理想的全新安装顺序是:
- 已设置默认配置 INI/XML 文件
- “真实”配置文件是从原始文件复制而来的
- UI/silent 上的 INI 值和 XML 修改是针对“真实”配置文件进行的
然后升级
- 新的默认配置 INI/XML 文件已设置
- 对“真实”配置文件进行 INI 值和 XML 修改
然后卸载
- 应用程序文件和默认文件已删除
- “真正的”INI/XML 配置文件不理会,抑制 INI/XML 回滚
这应该是什么模式?
我试图让场景尽可能简单地描述。我觉得为此存在/应该存在设计模式。
在安装中允许将配置参数写入文件而不是(严格)安装的一部分的首选模式是什么?
【问题讨论】:
-
(只是一个快速响应)如果可能的话,我会说将用户所做的任何选择写入注册表中的某个地方。然后,当应用程序首次启动时,它可以读取注册表并填充用户数据配置文件。这样,用户的安装时间选择对于修复/修改/升级安装保持不变,并且安装程序不必担心从发布到发布保持最新的配置文件模式。如果可能的话,最好让安装程序远离管理/持久化用户数据的业务......
-
@jbudreau 给出了很好的建议 - 让安装程序处理默认文件,让应用程序本身执行用户级设置。当您的应用程序由计算机上的第二个(管理员)帐户安装时,这一点变得尤为重要。
-
所以安装程序不应该问任何问题,除了“什么目录?”
-
使用“从不”这个词可能很棘手,但通常是的。我真的尽量让安装程序尽可能简单和可靠。
标签: xml installation wix windows-installer