Как записать условие запуска MVC3 в WIX? - PullRequest
2 голосов
/ 26 мая 2011

У меня есть проект развертывания WIX в VS2010. Моему приложению нужен установленный 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) Условие WIX для RegistrySearch. Проблема здесь в том, что у меня нет узла реестра HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ 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.

1 Ответ

1 голос
/ 14 июня 2011

Первый вариант требует второй вариант (первый). В записи блога, на которую вы ссылаетесь, отсутствует этот шаг. Вам понадобится элемент 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>

Тогда ваше имущество должно быть заполнено. Если раздел реестра отсутствует, вам необходимо связаться с владельцем пакета, чтобы понять, почему его раздел реестра не записывается.

...