如何在WIX中编写MVC3的启动条件?

时间:2011-05-26 11:29:11

标签: asp.net-mvc-3 wix wix3.5

我在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)手动注册表搜索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位于Program文件中 - 它可以安装在其他地方。

我认为最好的答案是为什么MVC安装没有进行注册表输入以及如何防止服务器上的情况。但是对主要问题(启动条件)的任何其他解决方案都会有所帮助。

PS:我的操作系统是Windows 7。

1 个答案:

答案 0 :(得分:1)

第一个选项需要第二个选项(第一个)。您链接到的博客条目缺少该步骤。您需要一个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>

然后应填充您的财产。如果缺少注册表项,那么您需要跟进包的所有者,以了解为什么他们的注册表项没有被写入。