2010-12-14 53 views
0

我创建了一个WiX安装程序,以在客户站点上部署一组网站,并使用xmlfile将正确的主机名和连接字符串值插入我们的web.config文件。虽然更新执行正确的XMLFILE行动插上因为UI不是空运行值使用Wix安装程序执行升级时,Web.config定制丢失

msiexec /i Websites.msi /l*vx Website.log REINSTALL=ALL REINSTALLMODE=vomus 

:由于这些值进行升级时,来自我碰到的一个问题,安装程序UI安装使用。

有没有办法让这些值进入安装程序而不解析XML或者再次提示安装工程师值?

干杯, 达明

回答

2

您需要Remember Property模式只适用于XML而不是Regisry。 WiX没有XML peek模式,因此您必须编写自定义操作。

另一个值得注意的问题是,由于您正在修改XML,因此未来的升级默认情况下不会安装XML的更新版本,因为它现在拥有用户数据。

+0

这可能不适用于IIS/ASP.NET(可悲的是没有新东西),但是如果将XML分成2个XML,安装将变得更容易。基本上一个文件,用户不会修改安装程序可以安全地替换一遍又一遍,另一个用户/应用程序/安装程序修改的XML文件具有您的变化点。基本上认为stock.xml和覆盖/ transform.xml。 – 2010-12-14 19:22:02

+0

这基本上就是我所做的。我希望永远不必写出自定义操作,但无法绕过它。 我放在一起(很肮脏)的C#DLL来读取我需要从任何当前web.config和web.constants.config文件中的值,并将它们存储为现有的WiX变量。 不理想,我必须密切关注开发团队的工作,但这足以让我们继续。 – 2011-01-06 15:23:31

0

如果你想你的web.config修改过程中只安装,您可以调节包含XMLFILE元素与Not Installed条件的组成部分。在这种情况下,修改XML文件的操作将不会在升级过程中针对这些组件运行。

+0

不幸的是,我们将需要更新web.config,并且将原先赋予安装程序的值插入到connectionStrings中。 我得到一个不好的感觉,我不得不写一些连接字符串解析器作为自定义操作或强制更新以某种方式弹出配置屏幕。 – 2010-12-14 10:43:44