설치 컨텍스트

Windows 설치 관리자는 컴퓨터에 패키지를 설치할 수 있습니다. 두 가지 설치 컨텍스트: 컴퓨터별 및 사용자별. 컴퓨터의 모든 사용자가 애플리케이션에 액세스하고 사용할 수 있도록 하려면 컴퓨터별로 패키지를 설치해야 합니다. 컴퓨터별 설치는 모든 사용자에게 영향을 주는 시스템을 변경하므로 권한이 제한된 표준 사용자는 먼저 권한을 얻지 않고도 컴퓨터별 컨텍스트에 패키지를 설치하지 못할 수 있습니다.

사용자별 또는 컴퓨터별 설치에 대한 패키지를 작성하고 ALLUSERSMSIINSTALLPERUSER 속성을 사용하여 설치 컨텍스트를 지정할 수 있습니다. 이러한 속성에 따라 Windows Installer는 폴더 속성 및 등록 값을 사용자별 또는 컴퓨터별 컨텍스트의 위치로 자동으로 리디렉션합니다.

참고

Windows Installer 5.0 및 Windows Server 2008 R2 및 Windows 7부터 사용할 수 있는 MSIINSTALLPERUSER 속성은 컴퓨터별 또는 사용자별 컨텍스트에서 설치할 수 있는 단일 패키지를 쉽게 개발할 수 있습니다. 사용자에게 설치 시 설치 컨텍스트를 선택할 수 있는 기능을 제공하는 이중 용도 패키지를 개발하는 방법에 대한 자세한 내용은 단일 패키지 작성을 참조하세요. Windows INSTALLER는 ALLUSERS 값이 2가 아니면 MSIINSTALLPERUSER 속성을 무시합니다. Windows Installer는 컴퓨터별 컨텍스트에 설치할 때 항상 ALLUSERS 값을 1로 다시 설정하며 사용자별 컨텍스트에 설치할 때 ALLUSERS 값을 빈 문자열("")로 다시 설정합니다.

 

바로 가기 리디렉션

다음 표에서는 컴퓨터별 및 사용자별 설치 컨텍스트에 대한 바로 가기 위치를 비교합니다.

Per-Machine 설치 컨텍스트(ALLUSERS=1) Per-User 설치 컨텍스트(ALLUSERS="")
응용 프로그램은 컴퓨터의 모든 사용자에 대해 제어판 프로그램 추가/제거 아래에 표시됩니다.
애플리케이션은 애플리케이션을 설치한 사용자의 제어판 프로그램 추가/제거 아래에만 표시됩니다.
바로 가기는 모든 사용자 프로필에 설치됩니다.
바로 가기는 해당 사용자의 프로필에만 설치됩니다.
아이콘 및 변환은 %WINDOWS%\Installer\{ProductCode}에 저장됩니다.
아이콘 및 변환은 %USERPROFILE%\Application Data\Microsoft\Installer\{ProductCode GUID}에 저장됩니다.

 

레지스트리 리디렉션

다음 표에서는 컴퓨터별 및 사용자별 설치 컨텍스트에 대한 레지스트리 항목의 위치를 비교합니다.

Per-Machine 설치 컨텍스트(ALLUSERS=1) Per-User 설치 컨텍스트(ALLUSERS="")
Windows Installer는 레지스트리 테이블 및RemoveRegistry 테이블에 입력된 레지스트리 값을 작성하거나 제거하며 루트 열의 값 -1은 HKEY_LOCAL_MACHINE.
Windows Installer는 레지스트리 테이블 및RemoveRegistry 테이블에 입력된 레지스트리 값을 작성하거나 제거하며 루트 열의 값 -1은 HKEY_CURRENT_USER.
Windows Installer는 HKLMSoftwareClasses\\ 아래 루트 열의 msidbRegistryRootClassesRoot(0) 값을 사용하여 레지스트리 테이블 및 RemoveRegistry 테이블에 입력된 레지스트리 값을 작성하거나 제거합니다.
Windows Installer는 HKCUSoftwareClasses\\ 아래 루트 열의 msidbRegistryRootClassesRoot(0) 값을 사용하여 레지스트리 테이블 및 RemoveRegistry 테이블에 입력된 레지스트리 값을 작성하거나 제거합니다.
COM 등록은 HKLMSoftwareClasses\\에 기록됩니다.
COM 등록은 HKCUSoftwareClasses\\에 기록됩니다.

 

폴더 리디렉션

Windows 설치 관리자는 설치 컨텍스트에 대해 폴더 속성의 값을 해당 폴더의 전체 경로로 설정합니다.

참고

폴더는 KNOWNFOLDERIDCSIDL 상수로 식별됩니다. Windows Vista부터 애플리케이션은 SHGetKnownFolderPath 함수 및 KNOWNFOLDERID를 사용하여 특수 폴더의 전체 경로를 결정해야 합니다. SHGetFolderPath 함수 및 CSIDL(상수 특수 항목 ID)을 사용하는 기존 애플리케이션은 계속 작동합니다.

 

다음 표에서는 Windows Installer가 컴퓨터별 또는 사용자별 설치 컨텍스트에서 패키지를 설치할 때 사용되는 폴더의 위치를 비교합니다.

Per-Machine 설치 컨텍스트(ALLUSERS=1) Per-User 설치 컨텍스트(ALLUSERS="")
DesktopFolder 모든 사용자에 대한 데스크톱 폴더의 전체 경로입니다.
FOLDERID_PublicDesktop (CSIDL_COMMON_DESKTOPDIRECTORY)
DesktopFolder 현재 사용자에 대한 데스크톱 폴더의 전체 경로입니다.
FOLDERID_Desktop (CSIDL_DESKTOP, CSIDL_DESKTOPDIRECTORY)
ProgramMenuFolder 모든 사용자에 대한 프로그램 메뉴 폴더의 전체 경로입니다.
FOLDERID_CommonPrograms (CSIDL_COMMON_PROGRAMS)
ProgramMenuFolder 현재 사용자에 대한 프로그램 메뉴 폴더의 전체 경로입니다.
FOLDERID_Programs (CSIDL_PROGRAMS)
StartMenuFolder 모든 사용자에 대한 시작 메뉴 폴더의 전체 경로입니다.
FOLDERID_CommonStartMenu (CSIDL_COMMON_STARTMENU)
StartMenuFolder 현재 사용자에 대한 시작 메뉴 폴더의 전체 경로입니다.
FOLDERID_StartMenu (CSIDL_STARTMENU)
StartUpFolder 모든 사용자에 대한 시작 폴더의 전체 경로입니다.
FOLDERID_CommonStartup (CSIDL_COMMON_STARTUP)
StartUpFolder 현재 사용자에 대한 시작 폴더의 전체 경로입니다.
FOLDERID_Startup (CSIDL_STARTUP)
TemplateFolder 모든 사용자에 대한 Templates 폴더의 전체 경로입니다.
FOLDERID_CommonTemplates (CSIDL_COMMON_TEMPLATES)
TemplateFolder 현재 사용자에 대한 Templates 폴더의 전체 경로입니다.
FOLDERID_Templates (CSIDL_TEMPLATES)
AdminToolsFolder 모든 사용자에 대한 Admin Tools 폴더의 전체 경로입니다.
FOLDERID_CommonAdminTools (CSIDL_COMMON_ADMINTOOLS)
AdminToolsFolder 현재 사용자에 대한 Admin Tools 폴더의 전체 경로입니다.
FOLDERID_AdminTools (CSIDL_ADMINTOOLS)
AppDataFolder 프로그램 메뉴 폴더의 전체 경로입니다.
Windows Vista 이상: 로밍 폴더의 전체 경로입니다.

FOLDERID_RoamingAppData (CSIDL_APPDATA)
AppDataFolder 프로그램 메뉴 폴더의 전체 경로입니다.
Windows Vista 이상: 로밍 폴더의 전체 경로입니다.

FOLDERID_RoamingAppData (CSIDL_APPDATA)
CommonAppDataFolder 모든 사용자에 대한 애플리케이션 데이터를 포함하는 폴더의 전체 경로입니다.
FOLDERID_ProgramData (CSIDL_COMMON_APPDATA)
CommonAppDataFolder 모든 사용자에 대한 애플리케이션 데이터를 포함하는 폴더의 전체 경로입니다.
FOLDERID_ProgramData (CSIDL_COMMON_APPDATA)
FavoritesFolder 현재 사용자에 대한 즐겨찾기 폴더의 전체 경로입니다.
FOLDERID_Favorites (CSIDL_FAVORITES)
FavoritesFolder 현재 사용자에 대한 즐겨찾기 폴더의 전체 경로입니다.
FOLDERID_Favorites (CSIDL_FAVORITES)
PersonalFolder 현재 사용자의 내 문서 폴더 또는 개인 폴더의 전체 경로입니다.
Windows Vista 이상: 현재 사용자에 대한 Documents 폴더의 전체 경로입니다.

FOLDERID_Documents (CSIDL_PERSONAL)
PersonalFolder 현재 사용자의 내 문서 폴더 또는 개인 폴더의 전체 경로입니다.
Windows Vista 이상: 현재 사용자에 대한 Documents 폴더의 전체 경로입니다.

FOLDERID_Documents (CSIDL_PERSONAL)
SendToFolder SendTo 폴더의 전체 경로입니다.
FOLDERID_SendTo (CSIDL_SENDTO)
SendToFolder SendTo 폴더의 전체 경로입니다.
FOLDERID_SendTo (CSIDL_SENDTO)
FontsFolder 시스템 글꼴 폴더의 전체 경로입니다.
FOLDERID_Fonts (CSIDL_FONTS)
FontsFolder 시스템 글꼴 폴더의 전체 경로입니다.
FOLDERID_Fonts (CSIDL_FONTS)
programFilesFolder32비트 버전의 Windows: 속성 값은 모든 사용자에 대한 Program Files 폴더의 전체 경로입니다(예: %ProgramFiles%). 이 폴더의 식별자가 FOLDERID_ProgramFiles(CSIDL_PROGRAM_FILES.) 식별자 FOLDERID_ProgramFilesFOLDERID_ProgramFilesX86 동일한 폴더를 나타냅니다. 이 폴더의 파일은 모든 사용자가 액세스할 수 있습니다.
64비트 버전의 Windows: 속성 값은 모든 사용자(예: %ProgramFiles(x86)%)에 대한 Program Files(x86) 폴더의 전체 경로입니다. 이 폴더의 식별자가 FOLDERID_ProgramFilesX86 (CSIDL_PROGRAM_FILESX86.) 이 폴더의 파일은 모든 사용자가 액세스할 수 있습니다.
ProgramFilesFolderWindows Server 2008 R2 및 Windows 7: 속성 값은 현재 사용자에 대한 Programs 폴더의 전체 경로입니다(예: %LocalAppData%\Programs). 이 폴더의 식별자는 32비트 및 64비트 시스템에서 FOLDERID_UserProgramFiles. FOLDERID_UserProgramFiles 해당하는 CSIDL 식별자가 없습니다. 이 폴더의 파일은 이 폴더를 설치한 사용자만 액세스할 수 있습니다.
Windows Server 2008 이전 버전 및 Windows Vista 및 이전 버전: 사용자별 지원 폴더를 사용할 수 없습니다. 경로는 컴퓨터별 컨텍스트와 동일합니다(예: %ProgramFiles% 또는 %ProgramFiles(x86)%).) 이 폴더의 파일은 모든 사용자가 액세스할 수 있습니다.

CommonFilesFolder32비트 버전의 Windows: 속성 값은 모든 사용자에 대한 Common Files 폴더의 전체 경로입니다(예: %ProgramFiles%\Common Files). 이 폴더의 식별자는 FOLDERID_ProgramFilesCommon(CSIDL_PROGRAM_FILES_COMMON.) 식별자 FOLDERID_ProgramFilesCommonFOLDERID_ProgramFilesCommonX86 동일한 폴더를 나타냅니다. 이 폴더의 파일은 모든 사용자가 액세스할 수 있습니다.
64비트 버전의 Windows: 속성 값은 모든 사용자의 Common Files 폴더에 대한 전체 경로입니다(예: %ProgramFiles(x86)%\Common Files.) 이 폴더의 식별자는 FOLDERID_ProgramFilesCommonX86 (CSIDL_PROGRAM_FILES_COMMONX86.) 이 폴더의 파일은 모든 사용자가 액세스할 수 있습니다.
CommonFilesFolderWindows Server 2008 R2 및 Windows 7: 속성 값은 현재 사용자에 대한 Common 폴더의 전체 경로입니다(예: %LocalAppData%\Programs\Common). 이 폴더의 식별자는 32비트 및 64비트 시스템에서 FOLDERID_UserProgramFilesCommon. FOLDERID_UserProgramFilesCommon 해당하는 CSIDL 식별자가 없습니다. 이 폴더의 파일은 이 폴더를 설치한 사용자만 액세스할 수 있습니다.
Windows Server 2008 이전 버전 및 Windows Vista 및 이전 버전: 사용자별 지원 폴더를 사용할 수 없습니다. 경로는 컴퓨터별 컨텍스트(예: %ProgramFiles%\Common Files 또는 %ProgramFiles(x86)%\Common Files))와 같습니다. 이 폴더의 파일은 모든 사용자가 액세스할 수 있습니다.

ProgramFiles64Folder 속성 값은 모든 사용자에 대한 Program Files 폴더의 전체 경로입니다(예: %ProgramFiles%). 이 폴더의 식별자가 FOLDERID_ProgramFilesX64. FOLDERID_ProgramFilesX64 동일한 CSIDL 식별자가 없습니다. 64비트 구성 요소에 대해 미리 정의된 폴더이며 64비트 시스템에 적용됩니다. 이 폴더의 파일은 모든 사용자가 액세스할 수 있습니다.
ProgramFiles64FolderWindows Server 2008 R2 및 Windows 7: 속성 값은 현재 사용자의 Programs 폴더 전체 경로입니다(예: %LocalAppData%\Programs). 이 폴더의 식별자가 FOLDERID_UserProgramFiles. FOLDERID_UserProgramFiles 해당하는 CSIDL 식별자가 없습니다. 이 폴더의 파일은 이 폴더를 설치한 사용자만 액세스할 수 있습니다.
Windows Server 2008 이전 버전 및 Windows Vista 및 이전 버전: 사용자별 지원 폴더를 사용할 수 없습니다. 경로는 컴퓨터별 컨텍스트(예: %ProgramFiles%)와 동일합니다. 이 폴더의 파일은 모든 사용자가 액세스할 수 있습니다.

CommonFiles64Folder 속성 값은 모든 사용자에 대한 Common Files 폴더의 전체 경로입니다(예: %ProgramFiles%\Common Files). 64비트 구성 요소에 대해 미리 정의된 폴더이며 64비트 시스템에 적용됩니다. 이 폴더의 식별자는 FOLDERID_ProgramFilesCommonX64. FOLDERID_ProgramFilesCommonX64 동일한 CSIDL 식별자가 없습니다. 이 폴더의 파일은 모든 사용자가 액세스할 수 있습니다.
CommonFiles64FolderWindows Server 2008 R2 및 Windows 7: 속성 값은 현재 사용자에 대한 Common 폴더의 전체 경로입니다(예: %LocalAppData%\Programs\Common.) 이 폴더의 식별자가 FOLDERID_UserProgramFilesCommon. FOLDERID_UserProgramFilesCommon 해당하는 CSIDL 식별자가 없습니다. 이 폴더의 파일은 이 폴더를 설치한 사용자만 액세스할 수 있습니다.
Windows Server 2008 이전 버전 및 Windows Vista 및 이전 버전: 사용자별 지원 폴더를 사용할 수 없습니다. 경로는 컴퓨터별 컨텍스트(예: %ProgramFiles%\Common Files)와 동일합니다. 이 폴더의 파일은 모든 사용자가 액세스할 수 있습니다.

WindowsFolder Windows 폴더의 전체 경로입니다.
FOLDERID_Windows (CSIDL_WINDOWS)
WindowsFolder Windows 폴더의 전체 경로입니다.
FOLDERID_Windows (CSIDL_WINDOWS)
SystemFolder 시스템 폴더의 전체 경로입니다.
FOLDERID_SystemX86 (CSIDL_SYSTEMX86)
SystemFolder 시스템 폴더의 전체 경로입니다.
FOLDERID_SystemX86 (CSIDL_SYSTEMX86)
LocalAppDataFolder 로컬(비로밍) 애플리케이션이 포함된 폴더의 전체 경로입니다.
FOLDERID_LocalAppData (CSIDL_LOCAL_APPDATA)
LocalAppDataFolder 로컬(비로밍) 애플리케이션이 포함된 폴더의 전체 경로입니다.
FOLDERID_LocalAppData (CSIDL_LOCAL_APPDATA)
MyPicturesFolder 그림 또는 내 그림 폴더의 전체 경로입니다.
FOLDERID_Pictures (CSIDL_MYPICTURES)
MyPicturesFolder 그림 또는 내 그림 폴더의 전체 경로입니다.
FOLDERID_Pictures (CSIDL_MYPICTURES)
PrintHoodFolder PrintHood 폴더의 전체 경로입니다.
FOLDERID_PrintHood (CSIDL_PRINTHOOD)
PrintHoodFolder PrintHood 폴더의 전체 경로입니다.
FOLDERID_PrintHood (CSIDL_PRINTHOOD)
NetHoodFolder NetHood 폴더의 전체 경로입니다.
FOLDERID_NetHood (CSIDL_NETHOOD)
NetHoodFolder NetHood 폴더의 전체 경로입니다.
FOLDERID_NetHood (CSIDL_NETHOOD)
RecentFolder 최근 폴더의 전체 경로입니다.
FOLDERID_Recent (CSIDL_RECENT)
RecentFolder 최근 폴더의 전체 경로입니다.
FOLDERID_Recent (CSIDL_RECENT)

 

참고

애플리케이션은 MsiEnumProducts 또는 MsiEnumProductsEx 함수를 호출하여 시스템에 설치된 모든 제품을 열거할 수 있습니다. 그런 다음, 애플리케이션은 MsiGetProductInfoEx 또는 MsiGetProductInfo 함수를 호출하여 이러한 제품의 설치 컨텍스트 에 대한 정보를 검색할 수 있습니다. 자세한 내용은 설치 컨텍스트를 확인하는 것을 참조하세요.