Asp.net mvc 3 如何在WIX中编写MVC3的启动条件?

Asp.net mvc 3 如何在WIX中编写MVC3的启动条件?,asp.net-mvc-3,wix,wix3.5,Asp.net Mvc 3,Wix,Wix3.5,我在VS2010中有WIX部署项目。我的应用程序需要安装MVC3.0。 问题是如何在安装程序中创建启动条件,以便它检查服务器上是否存在MVC3? 这看起来是一个简单的问题,但我知道所有实现这一点的方法都存在问题: 1)使用标准属性检查应用程序安装(如所示): 已安装或ASP\U NET\U MVC\U 3\U 0 问题是它的计算结果总是错误的。也许没有这样的属性“ASP\U NET\U MVC\U 3\U 0”。 更重要的是,在MVC1.0检查的示例中,它甚至不起作用 2)手动注册表搜索WIX

我在VS2010中有WIX部署项目。我的应用程序需要安装MVC3.0。 问题是如何在安装程序中创建启动条件,以便它检查服务器上是否存在MVC3?

这看起来是一个简单的问题,但我知道所有实现这一点的方法都存在问题:

1)使用标准属性检查应用程序安装(如所示):

已安装或ASP\U NET\U MVC\U 3\U 0
问题是它的计算结果总是错误的。也许没有这样的属性“ASP\U NET\U MVC\U 3\U 0”。 更重要的是,在MVC1.0检查的示例中,它甚至不起作用

2)手动注册表搜索WIX条件。 这里的问题是因为我没有注册表节点 HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\ASP.NET\ASP.NET MVC 3 这是第二个问题:为什么遗漏了??我肯定安装了MVC3。以及之前的MVC1.0和2.0,但ASP.NET分支下没有任何Mvc节点(只有2.0.50727.0和4.0.30319.0子键)

3)文件搜索以查找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>

已安装或ASP\U NET\U MVC\U 3\U 0\U DLL
但不能保证MVC位于程序文件中——它可以安装在其他地方

我认为最好的答案应该是为什么MVC安装并没有设置注册表项,以及如何防止服务器出现这种情况。但对于主要问题(发射条件)的任何其他解决方案都会有所帮助


注:我的操作系统是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>


然后您的属性应该被填充。如果注册表项丢失,则您需要与软件包的所有者联系,以了解其注册表项未被写入的原因。

我们将mvc dll与应用程序一起分发,不依赖于它的安装。更简单更容易,然后你就不必用WiX搜索了。谢谢,我们也考虑过这种变体。但最好是找出它是否已经安装好了,这实际上就是为什么WIX条件不起作用的答案。关于注册表项的问题,我认为这真的超出了这个话题。。。
<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>