성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
[정성태] 저렇게 조각 코드 말고, 실제로 재현이 되는 예제 프로젝트를 압...
[정성태] Modules 창(Ctrl+Shift+U)을 띄워서, 해당 Op...
[정성태] 만드실 수 있습니다. 단지, Unity 엔진 내의 스크립트와 W...
[공진영] 안녕하세요 좋은글 감사합니다. 현재 제가 wpf로 관제 모...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
닷넷
.NET 3.0
.NET 3.5
.NET 4.0
VC++
개발 환경 구성
제품 소개
VS.NET IDE
Vista
Windows 7
Windows 8
Windows 서버
Team Foundation Server
IIS
디버깅 기술
Win32
64비트
오피스
웹
기타
Phone
부모글 보이기/감추기
내용
Pre-installation checks performed by .NET Framework 2.0 setup<br /> ; <a target="_blank" href="http://blogs.msdn.com/astebner/archive/2006/07/09/660808.aspx">http://blogs.msdn.com/astebner/archive/2006/07/09/660808.aspx</a><br /> <br /> 잘 정리해 놓았군요.<br /> 만약, .NET 2.0 이 클라이언트에 어떠한 사유로 인해서 설치되지 않는 다면 이 문서를 보시면서, 하나 하나 체크해 볼 수 있겠습니다.<br /> <br /> 아예... 내용을 아래에 복사해 둡니다.<br /> <br /> <hr /> <p> <font face="Verdana" size="2">The setup wrapper for the </font><a href="http://msdn.microsoft.com/netframework/downloads/updates/"> <font face="Verdana" size="2">.NET Framework 2.0</font></a><font face="Verdana" size="2"> 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.</font></p> <p> <font face="Verdana" size="2">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.</font></p> <p> <font face="Verdana" size="2">In addition, if you are planning to install the .NET Framework 2.0 in </font><a href="http://blogs.msdn.com/astebner/archive/2006/07/02/655011.aspx#Netfx20SilentMode"> <font face="Verdana" size="2">silent mode</font></a><font face="Verdana" size="2"> 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.</font></p> <p> <strong><font face="Verdana" size="2">Single instance of setup check</font></strong></p> <p> <font face="Verdana" size="2">.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.</font></p> <p> <strong><font face="Verdana" size="2">Administrative privileges check</font></strong></p> <p> <font face="Verdana" size="2">.NET Framework 2.0 setup uses the algorithm documented in </font><a href="http://support.microsoft.com/support/kb/articles/Q118/6/26.ASP"><font face="Verdana" size="2">this knowledge base article</font></a><font face="Verdana" size="2"> to check whether or not the setup process has the necessary administrative privileges.</font></p> <p> <strong><font face="Verdana" size="2">OS version check</font></strong></p> <p> <font face="Verdana" size="2">.NET Framework 2.0 setup first calls the </font><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getversionex.asp"> <font face="Verdana" size="2">GetVersionEx</font></a><font face="Verdana" size="2"> API. If the dwPlatformId member of the returned </font><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/osversioninfo_str.asp"> <font face="Verdana" size="2">OSVERSIONINFO</font></a><font face="Verdana" size="2"> structure equals VER_PLATFORM_WIN32_WINDOWS, then the OS version is Windows 9x and the OS version check is done.</font></p> <p> <font face="Verdana" size="2">If dwPlatformId equals VER_PLATFORM_WIN32_NT, then setup checks the dwMajorVersion and dwMinorVersion members of the returned OSVERSIONINFO structure.</font></p> <p> <font face="Verdana" size="2">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.</font></p> <p> <font face="Verdana" size="2">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:</font></p> <ul> <li><font face="Verdana"><font size="2"><strong>Windows 2000:</strong> if dwMajorVersion = 5 and dwMinorVersion = 0</font></font></li> <li><font face="Verdana"><font size="2"><strong>Windows XP:</strong> if dwMajorVersion = 5 and dwMinorVersion = 1</font></font></li> <li><font face="Verdana"><font size="2"><strong>Windows Server 2003:</strong> if dwMajorVersion = 5 and dwMinorVersion = 2</font></font></li></ul> <p> <strong><font face="Verdana" size="2">64-bit OS check</font></strong></p> <p> <font face="Verdana" size="2">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.</font></p> <p> <font face="Verdana" size="2">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 </font><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog64/winprog64/wow64_implementation_details.asp"> <font face="Verdana" size="2">WOW64</font></a><font face="Verdana" size="2"> layer. To do this, .NET Framework 2.0 setup attempts to locate the </font><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsystemwow64directory.asp"> <font face="Verdana" size="2">GetSystemWow64Directory</font></a><font face="Verdana" size="2"> 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.</font></p> <p> <font face="Verdana" size="2">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:</font></p> <ul> <li><font face="Verdana"><font size="2"><strong>If setup is launched from the self-extracting EXE:</strong> Error creating process <C:\DOCUME~1\username\LOCALS~1\Temp\IXP000.TMP\Install.exe>. Reason: C:\WINDOWS\system32\advpack.dll</font></font></li> <li><font face="Verdana"><font size="2"><strong>If setup is launched by running install.exe directly:</strong> install.exe is not a valid Win32 application.</font></font></li> <li><font face="Verdana"><font size="2"><strong>If setup is launched by running msiexec.exe /i netfx.msi:</strong> This installation package is not supported by this processor type. Contact your product vendor.</font></font></li></ul> <p> <strong><font face="Verdana" size="2">Check to see if the .NET Framework 2.0 was installed as part of the OS</font></strong></p> <p> <font face="Verdana" size="2">.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:</font></p> <ul> <li><font face="Verdana"><font size="2"><strong>Key name: </strong>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727</font></font></li> <li><font face="Verdana"><font size="2"><strong>Value name:</strong> OCM</font></font></li> <li><font face="Verdana"><font size="2"><strong>Value data type:</strong> REG_DWORD</font></font></li> <li><font face="Verdana"><font size="2"><strong>Value data:</strong> 1</font></font></li></ul> <p> <font face="Verdana" size="2">Currently, the only OS that includes the .NET Framework 2.0 is </font><a href="http://www.microsoft.com/windowsvista/"><font face="Verdana" size="2">Windows Vista</font></a><font face="Verdana" size="2">. 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.</font></p> <p> <strong><font face="Verdana" size="2">Microsoft Internet Explorer 5.01 version check</font></strong></p> <p> <font face="Verdana" size="2">.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:</font></p> <ul> <li><font face="Verdana"><font size="2"><strong>Key name:</strong> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer</font></font></li> <li><font face="Verdana"><font size="2"><strong>Value name:</strong> Version</font></font></li> <li><font face="Verdana"><font size="2"><strong>Value data type:</strong> REG_SZ</font></font></li> <li><font face="Verdana"><font size="2"><strong>Value data:</strong> greater than or equal to 5.0.2919.6307</font></font></li></ul> <p> <font face="Verdana" size="2">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.</font></p> <p> <strong><font face="Verdana" size="2">Windows Installer version check</font></strong></p> <p> <font face="Verdana" size="2">.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:</font></p> <ul> <li><font face="Verdana"><font size="2"><strong>Key name:</strong> HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Installer</font></font></li> <li><font face="Verdana"><font size="2"><strong>Value name:</strong> InstallerLocation</font></font></li> <li><font face="Verdana"><font size="2"><strong>Value data type:</strong> REG_SZ</font></font></li></ul> <p> <font face="Verdana" size="2">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 </font><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/dllgetversion.asp"> <font face="Verdana" size="2">DllGetVersion</font></a><font face="Verdana" size="2"> API in msi.dll. If that API returns success, setup checks for the following return values:</font></p> <ul> <li><font face="Verdana"><font size="2"><strong>If the OS is Windows 9x:</strong> dwMajorVersion is greater than or equal to 2 and dwMinorVersion is greater than or equal to 0</font></font></li> <li><font face="Verdana"><font size="2"><strong>If the OS is Windows 2000 or later:</strong> dwMajorVersion is greater than or equal to 3 and dwMinorVersion is greater than or equal to 0</font></font></li></ul> <p> <font face="Verdana" size="2">Note that while the initial .NET Framework 2.0 setup only checks for </font><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=5fbc5470-b259-4733-a914-a956122e08e8"> <font face="Verdana" size="2">Windows Installer 3.0</font></a><font face="Verdana" size="2"> or later on Windows 2000 and later, hotfixes and service packs for the .NET Framework 2.0 will require </font><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/what_s_new_in_windows_installer_version_3_1.asp"> <font face="Verdana" size="2">Windows Installer 3.1</font></a><font face="Verdana" size="2"> or later in order to install correctly. As a best practice, your setup should enforce that Windows Installer 3.1 is present as well.</font></p> <p> <strong><font face="Verdana" size="2">Previous beta product check</font></strong></p> <p> <font face="Verdana" size="2">.NET Framework 2.0 setup uses the algorithm in </font> <a href="http://blogs.msdn.com/astebner/archive/2006/04/30/587352.aspx"><font face="Verdana" size="2">this blog post</font></a><font face="Verdana" size="2"> to check for previous beta products that are installed on the system.</font></p> <p> <strong><font face="Verdana" size="2">.NET Framework 2.0 already installed check</font></strong></p> <p> <font face="Verdana" size="2">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 </font><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/msiqueryproductstate.asp"> <font face="Verdana" size="2">MsiQueryProductState</font></a><font face="Verdana" size="2"> API and passes in this product code. If MsiQueryProductState returns INSTALLSTATE_DEFAULT, then setup enters maintenance mode. Otherwise, setup enters initial install mode.</font></p> <p> <font face="Verdana" size="2"></font> </p>
첨부파일
스팸 방지용 인증 번호
1028
(왼쪽의 숫자를 입력해야 합니다.)