问题描述
|
我在VS2010中有WIX部署项目。我的应用程序需要安装MVC 3.0。
问题是如何在安装程序中创建启动条件,以便检查服务器上是否存在MVC3?
这看起来是一个简单的问题,但是我知道的所有方法都存在问题:
1)使用标准属性检查应用程序安装(在http://weblogs.asp.net/jacqueseloff/archive/2009/04/17/detecting-asp-net-mvc-1-0-using-wix.aspx中显示):
<Condition Message=\'ASP.NET MVC 3.0 is required to proceed with the installation.\'>Installed OR ASP_NET_MVC_3_0</Condition>
它总是评估为false的问题。也许没有这样的属性“ ASP_NET_MVC_3_0”。
更不用说它甚至在MVC1.0检查的示例中也不起作用。
2)手动RegistrySearch WIX条件。
这里的问题是因为我还没有注册表节点
HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Microsoft \\ ASP.NET \\ ASP.NET MVC 3
这是第二个问题:为什么错过了?我肯定已经安装了MVC 3。以及之前的Mvc 1.0和2.0,但是ASP.NET分支下没有任何MVC节点(只有2.0.50727.0和4.0.30319.0子项)。
3)FileSearch查找MVC dll。
<Condition Message=\'ASP.NET MVC 3.0 is required to proceed with the installation.\'>
Installed OR ASP_NET_MVC_3_0_DLL
</Condition>
<Property Id=\'ASP_NET_MVC_3_0_DLL\'>
<DirectorySearch Id=\'MVC_DLL_DIR\' Path=\'[ProgramFilesFolder]\\Microsoft ASP.NET\\ASP.NET MVC 3\\Assemblies\'>
<FileSearch Id=\'MVC_DLL_FILE\' Name=\'System.Web.Mvc.dll\' MinVersion=\'3.0.20105.0\'/>
</DirectorySearch>
</Property>
但是不能保证MVC位于程序文件中-可以将其安装在其他位置。
我认为最好的答案将是为什么MVC安装没有进行注册表输入以及如何防止服务器出现这种情况。但是,针对主要问题(启动条件)的任何其他解决方案都将有所帮助。
PS:我的操作系统是Windows 7。
解决方法
第一个选项需要第二个选项(第一个)。您链接到的博客条目缺少该步骤。您将需要一个
RegistrySearch
元素,例如:
<Property Id=\"ASP_NET_MVC_1_0\">
<RegistrySearch Root=\"HKEY_LOCAL_MACHINE\" Key=\"SOFTWARE\\Microsoft\\ASP.NET\\ASP.NET MVC 1.0\" Name=\"InstallPath\" Type=\"raw\" />
</Property>
然后,应该填充您的媒体资源。如果缺少注册表项,则需要跟程序包的所有者进行跟进,以了解为什么未写入其注册表项。