【问题标题】:How to write launch condition for MVC3 in WIX?如何在 WIX 中编写 MVC3 的启动条件?
【发布时间】:2011-05-26 11:29:10
【问题描述】:

我在 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>

它总是评估为假的问题。也许没有这样的属性“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。

【问题讨论】:

  • 我们将 mvc dll 与我们的应用程序一起分发,而不依赖于它的安装。更容易和更简单,然后您不必使用 WiX 搜索它。
  • 谢谢,我们也考虑过这种变体。不过最好先查一下是否已经安装

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


【解决方案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>

然后您的属性应该被填充。如果注册表项丢失,那么您需要跟进包的所有者,以了解他们的注册表项未写入的原因。

【讨论】:

  • 谢谢,这实际上是 WIX 条件不起作用的答案。我认为关于注册表项的问题真的不在这个话题范围内......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 2014-10-06
  • 1970-01-01
  • 2012-01-08
  • 2017-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多