我已经使用Visual studio创建了一个安装和部署项目,并安装了该安装程序。在我安装安装程序后,它复制了一些文件(XML),这些文件在使用应用程序时是以编程方式配置的。现在,如果用户再次重新安装此安装程序,我需要询问用户这些配置的文件是需要覆盖还是需要保留??
有没有关于如何实现这一点的想法?
谢谢和问候,弗兰
发布于 2009-06-23 16:24:52
查看file versioning rules for Windows Installer。
简而言之,假设您引用的这些XML文件是未版本化的文本文件,MSI将比较创建日期和修改日期,并且不会替换您所说的以编程方式更新的XML文件(安装后时间)。
我建议您需要考虑其他几个变量,以确保事情按您预期的方式工作:major vs. minor upgrade和REINSTALLMODE属性。
发布于 2009-06-30 02:28:51
我发现处理这种情况的最好方法是在应用程序中实现“保留更改”逻辑,而不是通过设置。由于所有逻辑都嵌入在主EXE文件中,因此可以避免使设置复杂化,并对配置过程进行更好的控制。这意味着您可以逐步完成该过程,并以正常的“开发方式”对其进行调试。
要实现这一点,您可以将您的“基本配置”文件安装到只读位置,例如
然后,您的应用程序可以在启动时检测user profile (或可写共享位置)中是否存在现有配置文件,并询问用户新的配置文件是否应覆盖现有配置。您还可以轻松地实现旧配置的备份功能。
为了在部署后为每个用户只询问一次问题,通常的做法是使用应用程序的最新安装版本标记HKLM,然后在复制操作完成或用户取消复制操作时在HKCU中写入相应的标记:
在上面的场景中,已经安装了2.0.0版的应用程序,但是还没有为相关用户运行每用户配置副本。一旦运行,HKCU版本将被设置为2.0.0,并且该操作不会再次运行,直到HKLM递增。
https://stackoverflow.com/questions/1032101
复制相似问题