我在VS2010中有WIX部署項目。我的應用程序需要安裝MVC 3.0。 問題是如何在安裝程序中創建啓動條件,以便檢查服務器上是否存在MVC3?如何在WIX中編寫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)Manual RegistrySearch WIX條件。 這裏的問題是,因爲我還沒有註冊中心節點 HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\ 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搜索它。 – nickvane 2011-05-26 12:35:24
謝謝,我們也考慮過這樣的變種。但是,最好找到它是否已經instatled – 2011-05-26 14:07:30