Microsoft MVP성태의 닷넷 이야기
개발환경 구성 : 10. .NET 2.0 설치 전에 사전 조사되는 항목들 [링크 복사], [링크+제목 복사],
조회: 11290
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

Pre-installation checks performed by .NET Framework 2.0 setup
; http://blogs.msdn.com/astebner/archive/2006/07/09/660808.aspx

잘 정리해 놓았군요.
만약, .NET 2.0 이 클라이언트에 어떠한 사유로 인해서 설치되지 않는 다면 이 문서를 보시면서, 하나 하나 체크해 볼 수 있겠습니다.

아예... 내용을 아래에 복사해 둡니다.


The setup wrapper for the .NET Framework 2.0 performs several system and prerequisite checks before it allows the user to start installing. This blog post will explain the implementation details of each of the checks that .NET Framework 2.0 setup performs behind the scenes so that you can implement your own checks or enforce higher prerequisite levels if necessary.

If you are planning to deploy the .NET Framework 2.0 to your network or include it as a prerequisite in your setup package, it is very important that you understand what these checks do so that you can verify that the computers on your network will meet the minimum system requirements and deployment will be able to proceed correctly.

In addition, if you are planning to install the .NET Framework 2.0 in silent mode as a part of your installation package, you must be able to check for these conditions yourself or be able to handle cases where these conditions are not met and .NET Framework 2.0 setup fails as a result.

Single instance of setup check

.NET Framework 2.0 setup attempts to acquire a mutex at the beginning of execution. If it is already owned by another process, it exits and tells the user that another instance of setup is already running.

Administrative privileges check

.NET Framework 2.0 setup uses the algorithm documented in this knowledge base article to check whether or not the setup process has the necessary administrative privileges.

OS version check

.NET Framework 2.0 setup first calls the GetVersionEx API. If the dwPlatformId member of the returned OSVERSIONINFO structure equals VER_PLATFORM_WIN32_WINDOWS, then the OS version is Windows 9x and the OS version check is done.

If dwPlatformId equals VER_PLATFORM_WIN32_NT, then setup checks the dwMajorVersion and dwMinorVersion members of the returned OSVERSIONINFO structure.

If dwMajorVersion < 5, then setup blocks installation because Windows NT 4.0 and earlier versions of Windows NT are not supported platforms for installing the .NET Framework 2.0.

If dwMajorVersion is greater than or equal to 5, then the OS is a valid OS to install the .NET Framework 2.0, and the following logic is used to determine exact OS version:

  • Windows 2000: if dwMajorVersion = 5 and dwMinorVersion = 0
  • Windows XP: if dwMajorVersion = 5 and dwMinorVersion = 1
  • Windows Server 2003: if dwMajorVersion = 5 and dwMinorVersion = 2

64-bit OS check

The .NET Framework 2.0 shipped both as 32-bit and 64-bit packages. Setup requires that the version of the .NET Framework 2.0 that matches the current processor architecture be installed, and attempting to install mismatched versions will be blocked.

The 32-bit version of .NET Framework 2.0 setup blocks the user from installing on a 64-bit OS. It does this by checking to see if the current setup process is running in the WOW64 layer. To do this, .NET Framework 2.0 setup attempts to locate the GetSystemWow64Directory API. If this API exists on the system and it returns a valid path, then setup reports that the system is a 64-bit OS and the current instance of setup is a 32-bit process running in the WOW64 layer, and it blocks the user from installing.

The 64-bit version of .NET Framework 2.0 setup will not run on a 32-bit OS. There is not a specific block implemented in setup for this. Instead, setup will display a generic error just like all 64-bit executables do when they are launched on a 32-bit OS. It could be one of the following:

  • If setup is launched from the self-extracting EXE: Error creating process <C:\DOCUME~1\username\LOCALS~1\Temp\IXP000.TMP\Install.exe>. Reason: C:\WINDOWS\system32\advpack.dll
  • If setup is launched by running install.exe directly: install.exe is not a valid Win32 application.
  • If setup is launched by running msiexec.exe /i netfx.msi: This installation package is not supported by this processor type. Contact your product vendor.

Check to see if the .NET Framework 2.0 was installed as part of the OS

.NET Framework 2.0 setup checks to see if it is being run on an OS that already has the .NET Frameowork 2.0 installed as part of the OS. To do this, it checks the following registry value:

  • Key name: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727
  • Value name: OCM
  • Value data type: REG_DWORD
  • Value data: 1

Currently, the only OS that includes the .NET Framework 2.0 is Windows Vista. However, that could change in the future, so the safest way to detect whether the .NET Framework 2.0 is installed as an OS component is to check the above registry value as opposed to trying to detect the OS version.

Microsoft Internet Explorer 5.01 version check

.NET Framework 2.0 setup verifies that the version of Internet Explorer installed on the system is at least version 5.01. To do this, it checks the following registry value:

  • Key name: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer
  • Value name: Version
  • Value data type: REG_SZ
  • Value data: greater than or equal to 5.0.2919.6307

Note that this check requires splitting the Version registry value into 4 different parts by splitting on the period and comparing each part of the version against the minimum values 5, 0, 2919 and 6307. A simple string comparison will not work because, for example, version 2.0.0.0 would be greather than 10.0.0.0 when using a string comparison.

Windows Installer version check

.NET Framework 2.0 setup validates the Windows Installer version installed on the system. To do this, it first determines the location of msi.dll by checking the following registry value:

  • Key name: HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Installer
  • Value name: InstallerLocation
  • Value data type: REG_SZ

The InstallerLocation value will contain a folder path. .NET Framework 2.0 setup then appends msi.dll to the value of the InstallerLocation value, and loads and attempts to call the DllGetVersion API in msi.dll. If that API returns success, setup checks for the following return values:

  • If the OS is Windows 9x: dwMajorVersion is greater than or equal to 2 and dwMinorVersion is greater than or equal to 0
  • If the OS is Windows 2000 or later: dwMajorVersion is greater than or equal to 3 and dwMinorVersion is greater than or equal to 0

Note that while the initial .NET Framework 2.0 setup only checks for Windows Installer 3.0 or later on Windows 2000 and later, hotfixes and service packs for the .NET Framework 2.0 will require Windows Installer 3.1 or later in order to install correctly. As a best practice, your setup should enforce that Windows Installer 3.1 is present as well.

Previous beta product check

.NET Framework 2.0 setup uses the algorithm in this blog post to check for previous beta products that are installed on the system.

.NET Framework 2.0 already installed check

In order to determine whether or not to enter maintenance (repair/uninstall) mode or not, .NET Framework 2.0 setup checks to see if the .NET Framework 2.0 MSI is already installed on the system. It retrieves the product code for netfx.msi, then calls the MsiQueryProductState API and passes in this product code. If MsiQueryProductState returns INSTALLSTATE_DEFAULT, then setup enters maintenance mode. Otherwise, setup enters initial install mode.








[최초 등록일: ]
[최종 수정일: 7/25/2006]


비밀번호

댓글 작성자
 




... 31  32  33  34  35  36  37  38  39  40  41  42  43  44  [45]  ...
NoWriterDateCnt.TitleFile(s)
65정성태2/15/200510500Office 2003: XML Reference Schemas
64정성태2/14/200511678MFC 및 ATL 컨트롤을 위한 서명된 CAB 파일 만들기
63정성태2/15/200510198[CodeProject] Overriding MFC's Default Client Site to Implement IServiceProvider파일 다운로드1
62정성태11/14/200510549간략 소개 - 64bit Windows
61정성태1/29/200510635XP SP2 팝업창을 코드로 띄우는 것이 가능하군요.
60정성태1/28/20058980MSDN Chat : VS.NET 2005 Team System public chats파일 다운로드1
59정성태1/27/200511117Error 1034. Error writing to file" when installing Visual Studio .NET 2005 CTP December 2004 - error code is 2350
57정성태1/17/200510431Microsoft .NET: Implement a Custom Common Language Runtime Host for Your Managed App파일 다운로드1
56정성태1/12/200510798.NET Framework 2.0 설치 후, InfoPath 폼이 VS.NET 2003 에서 디버깅이 안되는 경우.
55정성태1/10/200510920Management (WMI) Extensions for Visual Studio .NET 2003 Server Explorer
54정성태1/11/200510152WSE 2.0 및 Sun JWSDP 1.4를 사용한 WS-Security 상호 운용성
76정성태3/10/200510608    답변글 [추가]: Web Services Security Interoperability using WSE 2.0 and Systinet Server 5.0 for Java
94정성태5/12/200510375    답변글 [추가]: JWSDP 1.5 버전이 나왔군요.
148정성태12/12/20058694    답변글 [추가]: WS-Security Interoperability with .NET/WSE and WebLogic Workshop 8.1파일 다운로드1
53정성태1/6/200511038버퍼 오버런 해결!
58정성태1/23/200511762    답변글 VS.NET 2005 : 새롭게 소개되는 버퍼 오버런 방지 CRT 함수들
52정성태1/6/20059912Visual C# .NET Code Samples
51정성태1/6/200510039Visual C++ .NET 2003 Code Samples
50정성태1/6/200510058Visual Studio .NET 2003 Automation Samples
49정성태1/3/200599222005년 올 한 해 릴리스 될 MS 제품
48정성태1/2/200510230.NET 2.0 : 연결 문자열 및 기타 .config 내용 암호화
47정성태12/31/200410397뉴스그룹: Microsoft Whidbey Private 뉴스 그룹
46정성태12/31/200410180MSDN Magazine: Comparing the Timer Classes in the .NET Framework Class Library
45정성태12/31/20049687MSDN Magazine: Updating the UI from a Secondary Thread
44정성태12/30/200410842NewSID : 사용자 계정의 보안 식별자를 변경해 주는 프로그램파일 다운로드1
43정성태12/28/200410166VSMT 소개: Physical Server to Virtual Server
... 31  32  33  34  35  36  37  38  39  40  41  42  43  44  [45]  ...