我有一个包含多个文件的应用程序,这些文件包含配置参数和其他随着用户使用应用程序而更改的数据。这些文件可以随着我的软件的较新版本而更改,但用户也可以修改它们(或者它们可能由应用程序本身更改)。基本上,我正在寻找一种解决方案来防止用户对这些文件的更改被覆盖,同时也是一种在用户升级我的软件时安装可能更新的文件的方法。
使用 *NIX 上的 RPM,您可以使用 %config 函数将文件定义为配置文件,然后 RPM 将重命名现有文件(如果存在)并在升级时安装新文件(可能不理想,但我可以活对于 WiX 有类似的东西)。
我想将我的配置文件安装到子目录甚至不同的名称(例如 default.cfg),然后使用<CopyFile>
WiX 中的元素将文件复制到正确的位置。这样,默认文件将在安装时被删除并在升级时被覆盖,但实际用户文件将保持不变。不幸的是<CopyFile>
,Windows Installer 仍然希望管理(和删除)目标文件。
我还考虑过在 WixUtilExtension 中使用 QtExec 操作来基本上执行“复制 default.cfg reallocation.cfg”,但这不太可行,而且有点破解。
处理这个问题的正确方法是什么?