2010-04-19 27 views
12

我的應用程序需要.NET Framework 3.5版。我最近碰到一個客戶是對Windows Vista中的.NET框架安裝,但turned off(也適用於Windows 7)。如何在Windows 7/Vista中檢測.NET Framework功能何時「關閉」?

在這種情況下,我的安裝程序(的InstallShield 2009)不提示用戶安裝框架(因爲它已經被安裝)和我的應用程序運行時,它會立即崩潰。我嘗試了另一個.NET應用程序,它也立即崩潰。

有什麼方法來檢測這種情況,並更加妥善地處理它?只需在安裝過程中檢測到這一點就不是很理想,因爲.NET Framework可以隨時關閉。理想情況下,應用程序將能夠檢查並向用戶顯示一條友好的消息,告訴他們需要打開.NET Framework。

編輯:在Windows Vista或Windows 7「關閉」 .NET框架是不一樣卸載它。該框架可以簡單地重新打開而無需重新安裝:http://windows.microsoft.com/en-US/windows-vista/Turn-Windows-features-on-or-off

+4

我從來沒有聽說過了.NET Framework可以關閉。您需要更好地描述情況,可能來自客戶。 – 2010-04-19 18:37:22

+2

我一直認爲(假設)這樣做與卸載相同。 – dkackman 2010-04-19 18:37:57

+1

@John,@dkackman。關閉Windows 7中的功能不會卸載該功能,它只是關閉或禁用。 – 2010-04-19 18:41:17

回答

8

當我關閉該功能時,表示安裝框架的註冊表中的值被刪除。你可以檢查這個值。

看看: HKLM \ SOFTWARE \微軟\ NET Framework安裝\ NDP \ v3.5版本

+0

謝謝,所以我可以檢查該註冊表項,但是我必須從無管理的啓動程序執行此操作,對不對? – 2010-04-19 19:22:55

+0

是的,不幸的是,不會有任何解決方法,因爲該功能可以隨意關閉和開啓。 – KevinH 2010-04-19 19:32:02

3

看起來你會寫你的應用程序的非管理啓動。捲起你的袖子,有一個很好的C++潛水:)

1

活泉,我覺得這個URL可能有你的答案:

http://blogs.msdn.com/astebner/archive/2008/04/04/8358995.aspx

參見「如何安裝.NET Framework 3.0的操作系統組件中部署場景「。據我所知,它描述了使用ocsetup觸發Windows打開該功能。祝你好運。

另外,我很好奇,如果的ClickOnce安裝是很聰明的知道,如果功能是關閉的(我想他們會)。但因爲你是使用InstallShield,你可能需要一個功能更全面的安裝比的ClickOnce; O)

+0

我提到的解決方案是針對.NET 3,但我敢打賭你可以對3.5使用相同的方法。 – 2010-04-19 18:56:07