2014-05-22 154 views
0

我正在使用Windows Installer XML为Web应用程序构建安装程序。 大部分文件都是使用自定义构建文件中的散热工具收集的。 这包括在安装时修改的Web.config。防止Web.config文件被覆盖

有什么办法可以防止这个文件被覆盖,如果它存在 - 例如,如果我正在运行更新?

+0

可能的副本[复制如果不存在于维克斯](http://stackoverflow.com/questions/1912037/copy-if-not-exist-in-wix) –

+0

不,这不是重复或至少答案给出:[链接](http://stackoverflow.com/questions/1912037/copy-if-not-exist-in-wix)不符合我的需要。我无法提供每个文件的版本号,因为我正在使用热来收集这些文件。 – Revoluzifer

回答

2

如果MSI安装配置文件,然后自定义操作或应用程序修改它,那么由于file overwrite rules,它不会被更新替换。

如果您将其卸载并且包含升级早期的RemoveExistingProducts的主要升级,它将被删除。

当MSI安装数据文件时,它将创建日期和修改日期设置为相同,以便它可以检测文件是否在系统上安装后被修改。在安装过程中修改web.config文件(推测是在MSI将其放入系统后)是修改该文件的代码。这东西很容易测试。用MSI安装数据文件并检查日期,然后修改它并再次检查日期。同样,在安装后查看配置文件的修改和创建日期 - 它们应该不同,因此MSI更新不会像前面所述的那样替换它。

+0

该文件未被自定义操作或其他应用程序修改。使用WiX的XmlFile元素,Web.config修改发生在组件内。再次,我的步骤是:收获使用热量发布的web文件;使用WixUtilExtension:XmlFile元素修改web.config。 – Revoluzifer

+0

在这种情况下,“另一个应用程序”是在将数据文件放入系统之后更改数据文件的任何代码,包括WiX提供的Xml更新。看看更新后的解释是否有帮助。 – PhilDW