이중 용도 패키지는 사용자별 또는 컴퓨터별 설치 컨텍스트애플리케이션을 설치할 수 있도록 작성된 Windows Installer 5.0 패키지입니다. 애플리케이션에 이중 용도 패키지를 사용하는 설치 개발자는 설치 시 사용자에게 설치 컨텍스트를 선택할 수 있으며 Windows 7 또는 Windows Server 2008 R2의 사용자별 설치에서 UAC 자격 증명 프롬프트를 제거할 수 있습니다. Windows 7 및 Windows Server 2008 R2에 설치하기 위한 이중 용도의 Windows Installer 5.0 패키지 개발을 단일 패키지 제작이라고 합니다.
Windows Installer 5.0, MSIINSTALLPERUSER 속성, ALLUSERS 속성 및 Windows Shell사용자별로 지원되는 알려진 폴더 및 등록을 사용하여 Windows 7 및 Windows Server 2008 R2용 이중 용도 패키지를 개발할 수 있습니다. Windows Installer 5.0이 Windows 7 또는 Windows Server 2008 R2의 사용자별 컨텍스트에 이중 용도 패키지를 설치하는 경우 설치 관리자는 파일 및 레지스트리 항목을 사용자별 위치로 전달하고 자격 증명에 대한 UAC 프롬프트를 표시하지 않습니다. Windows Installer 5.0이 컴퓨터별 컨텍스트에서 이중 용도 패키지를 설치하는 경우 설치 관리자는 파일 및 레지스트리 항목을 컴퓨터별 위치로 전달하고 UAC 자격 증명을 요청하여 사용자에게 컴퓨터의 모든 사용자에 대한 소프트웨어를 설치할 수 있는 충분한 권한이 있음을 확인합니다. Windows Installer 5.0에서 애플리케이션을 설치하면 애플리케이션의 모든 후속 업데이트, 복구 또는 제거에 동일한 설치 컨텍스트를 사용합니다.
Windows Installer 4.5 이전:MSIINSTALLPERUSER 속성 및 ProgramFilesFolder, CommonFilesFolder, ProgramFiles64Folder, CommonFiles64Folder 속성으로 참조된 폴더의 사용자별 버전은 지원되지 않습니다. FOLDERID_UserProgramFiles 및 FOLDERID_UserProgramFilesCommon 폴더는 Windows 7 및 Windows Server 2008 R2부터 사용할 수 있습니다. 즉, Windows Installer 4.5 이하를 위해 개발된 설치 프로그램은 파일 및 레지스트리 항목을 FOLDERID_ProgramFiles, FOLDERID_ProgramFilesCommon, FOLDERID_ProgramFilesX64 및 FOLDERID_ProgramFilesCommonX64로 지정합니다. 이러한 위치는 컴퓨터의 다른 사용자가 액세스할 수 있는 위치이므로 Windows Vista 이상 시스템에서는 자격 증명에 대한 UAC 프롬프트를 표시해야 합니다.
사용자가 Windows Installer 4.5 이하의 Windows Installer 5.0용으로 작성된 이중 용도 패키지를 설치하는 경우 설치 관리자는 MSIINSTALLPERUSER 속성을 무시합니다. 이 경우 설치는 파일 및 레지스트리 항목을 다른 사용자가 액세스할 수 있는 위치로 보낼 수 있으며 시스템에서 자격 증명에 대한 UAC 프롬프트를 표시하도록 요구할 수 있습니다. Windows Installer 5.0은 Windows Installer 4.5 이하용으로 개발된 패키지를 설치할 수 있지만 설치 시 파일 및 레지스트리 항목을 다른 사용자가 액세스할 수 있는 위치로 전달하고 시스템에서 자격 증명에 대한 UAC 프롬프트를 표시해야 합니다.
개발 지침
다음 단일 패키지 작성 지침을 준수하여 사용자별 또는 컴퓨터별 컨텍스트에서 패키지를 설치할 수 있는지 확인합니다. 사용자가 설치 시 사용자별 또는 컴퓨터별 설치 시 선택하고 사용자별 설치에서 UAC 프롬프트를 제거할 수 있도록 하려면 다음 지침을 따릅니다.
사용자별로 설치하려면 Windows 7 또는 Windows Server 2008 R2에서 Windows Installer 5.0이 필요합니다. 패키지가 이전 버전의 시스템에서 애플리케이션의 컴퓨터별 설치를 지원한다는 것을 사용자에게 알려야 합니다.
이중 용도 패키지의 속성 테이블에서 ALLUSERS 및 MSIINSTALLPERUSER 속성의 값을 초기화하십시오. ALLUSERS 값 2 및 MSIINSTALLPERUSER 값 1을 초기 값으로 사용합니다. 이는 사용자별 설치를 이중 용도 패키지의 기본값으로 지정합니다.
사용자가 설치 시 컨텍스트를 선택할 수 있도록 하는 이중 용도 패키지의 사용자 인터페이스에 대한 대화 상자를 작성하는 것이 좋습니다. 사용자 지정 대화 상자의 컨트롤을 구성하여 ALLUSERS 및 MSIINSTALLPERUSER 속성의 값을 설정합니다. ALLUSERS 값 2의 경우 MSIINSTALLPERUSER 값 1로 설정하여 사용자별 설치를 지정하고 MSIINSTALLPERUSER 빈 문자열("")로 설정하여 컴퓨터별 설치를 지정합니다. 사용자는 명령줄에서 패키지를 설치하는 경우 ALLUSERS 및 MSIINSTALLPERUSER을(를) 설정할 수 있습니다.
내부 일관성 계산기 - ICE사용하여 패키지의 유효성을 검사합니다. 패키지는 유효한 이중 용도 패키지로 인정받기 위해 ICE105 유효성 검사를 통과할 수 있어야 합니다.
Registry 테이블 및 RemoveRegistry 테이블을(를) 사용하여 사용자별 설치 중에 레지스트리 항목을 사용자별 레지스트리 부분으로 리디렉션합니다. 사용자별 설치에서는 루트 열에 -1이 있는 레지스트리 항목이 HKEY_CURRENT_USER로 리디렉션되며, 컴퓨터별 설치에서는 이러한 항목이 HKEY_LOCAL_MACHINE로 리디렉션됩니다. 사용자별 설치에서 Root 열에 msidbRegistryRootClassesRoot(0)가 있는 레지스트리 항목은 HKCU\Software\Classes으로 리디렉션되며, 컴퓨터별 설치에서는 HKLM\Software\Classes으로 리디렉션됩니다.
32비트 Windows Installer 패키지디렉터리 테이블ProgramFilesFolder 속성을 사용하여 애플리케이션 간에 공유되지 않는 32비트 구성 요소가 포함된 디렉터리의 위치를 지정합니다. 사용자가 컴퓨터별 컨텍스트를 사용하여 이중 용도 패키지를 설치하면 이러한 구성 요소는 32비트 버전의 Windows의 Program Files 폴더와 64비트 버전의 시스템의 Program Files(x86) 폴더에 저장됩니다. 이러한 디렉터리에 있는 구성 요소는 모든 사용자가 액세스할 수 있습니다. 사용자가 사용자별 컨텍스트를 사용하여 Windows 7 또는 Windows Server 2008 R2에 이중 용도 패키지를 설치하는 경우 이러한 구성 요소는 현재 사용자의 Programs 폴더(예: %LocalAppData%\Programs)에 저장되며 해당 사용자만 액세스할 수 있습니다.
32비트 Windows Installer 패키지디렉터리 테이블CommonFilesFolder 속성을 사용하여 애플리케이션 간에 공유되는 32비트 구성 요소가 포함된 디렉터리의 위치를 지정합니다. 사용자가 컴퓨터별 컨텍스트를 사용하여 이중 용도 패키지를 설치하는 경우 이러한 구성 요소는 Common Files 폴더에 저장되고 모든 사용자가 액세스할 수 있습니다. 사용자가 사용자별 컨텍스트를 사용하여 Windows 7 또는 Windows Server 2008 R2에 이중 용도 패키지를 설치하는 경우 이러한 구성 요소는 현재 사용자의 Common 폴더(예: %LocalAppData%\Programs\Common)에 저장되며 해당 사용자만 액세스할 수 있습니다.
64비트 Windows Installer 패키지디렉터리 테이블ProgramFiles64Folder 속성을 사용하여 애플리케이션 간에 공유되지 않는 64비트 구성 요소가 포함된 디렉터리의 위치를 지정합니다. 사용자가 컴퓨터별 컨텍스트를 사용하여 이중 용도 패키지를 설치하면 이러한 구성 요소가 Program Files 폴더에 저장됩니다. 이러한 디렉터리에 있는 구성 요소는 모든 사용자가 액세스할 수 있습니다. 사용자가 사용자별 컨텍스트를 사용하여 Windows 7 또는 Windows Server 2008 R2에 이중 용도 패키지를 설치하는 경우 이러한 구성 요소는 현재 사용자의 Programs 폴더(예: %LocalAppData%\Programs)에 저장되며 해당 사용자만 액세스할 수 있습니다. 64비트 운영 체제에 애플리케이션을 설치하는 패키지를 작성하는 방법에 대한 자세한 내용은 64비트 운영 체제 Windows Installer참조하세요.
64비트 Windows Installer 패키지디렉터리 테이블CommonFiles64Folder 속성을 사용하여 애플리케이션 간에 공유되는 64비트 구성 요소가 포함된 디렉터리의 위치를 지정합니다. 사용자가 컴퓨터별 컨텍스트를 사용하여 이중 용도 패키지를 설치하는 경우 이러한 구성 요소는 Common Files 폴더에 저장되고 모든 사용자가 액세스할 수 있습니다. 사용자가 사용자별 컨텍스트를 사용하여 Windows 7 또는 Windows Server 2008 R2에 이중 용도 패키지를 설치하는 경우 이러한 구성 요소는 현재 사용자의 Common 폴더(예: %LocalAppData%\Programs\Common)에 저장되며 해당 사용자만 액세스할 수 있습니다.
64비트 Windows Installer 패키지디렉터리 테이블ProgramFilesFolder 및 CommonFilesFolder 속성을 사용하여 32비트 구성 요소가 포함된 디렉터리의 위치를 지정합니다. 동일한 이름으로 제공된 구성 요소의 32비트 및 64비트 버전에 다른 이름을 사용하거나 다른 폴더에 버전을 저장합니다. 예를 들어 디렉터리 테이블에 정보를 추가하여 32비트 버전이 포함된 디렉터리의 위치를 [ProgramFilesFolder]\ISV 이름\애플리케이션 이름\x86으로 지정하고 64비트 버전을 [Program64FilesFolder]\ISV 이름\애플리케이션 이름\x64로 포함하는 디렉터리의 위치를 지정합니다. 컴퓨터별 설치는 32비트 버전을 Program Files(x86)\ISV Name\애플리케이션 이름\x86에 저장하고 64비트 버전을 Program Files\ISV Name\애플리케이션 이름\x64에 저장합니다. 사용자별 설치는 32비트 버전을 %LocalAppData%\Programs\ISV Name\애플리케이션 이름\x86에 저장하고 %LocalAppData%\Programs\ISV 이름\응용 프로그램 이름\x64에 64비트 버전을 설치합니다.
\Users\사용자 이름\AppData 아래에 애플리케이션에 대한 사용자별 구성 데이터를 저장합니다.
애플리케이션에서 생성된 템플릿 및 파일을 \Users\사용자 이름하위 폴더에 저장합니다.
애플리케이션에서 셸 확장을 사용하는 경우 Windows 7 또는 Windows Server 2008 R2부터 사용할 수 있는 사용자별 셸 확장성 지점을 사용해야 합니다.
실행하려면 상승된 권한이 필요한 사용자 지정 작업을 패키지에서 사용하지 마세요. CustomAction 테이블에는 관리자 권한으로 실행되도록 표시된 사용자 지정 작업이 없어야 합니다. 사용자 권한 상승이 필요한 사용자 지정 작업에 대한 자세한 내용은 Custom Action Security을 참조하세요.
전역 시스템 폴더에는 쓰지 마십시오. 디렉터리 테이블에는 다음 시스템 폴더 속성에 대한 참조가 포함되어서는 안 됩니다.
관리도구폴더
CommonAppDataFolder
FontsFolder
System16Folder
System64Folder
시스템폴더
임시폴더
WindowsFolder
WindowsVolume
- GAC(전역 어셈블리 캐시)에 공용 언어 런타임 어셈블리를 설치하지 마세요. 전역 어셈블리 캐시에 어셈블리를 설치하는 방법에 대한 자세한 내용은 패키지 어셈블리 추가 및 공용 언어 런타임 어셈블리 설치를 참조하세요.
- ODBC 데이터 원본을 설치하지 마세요. ODBCDataSource 테이블을 사용하여 데이터 원본을 설치하지 마세요.
- 서비스를 설치하지 마세요. ServiceInstall 테이블을 사용하여 서비스를 설치하지 마세요.
예시
이중 용도 패키지의 예는 Windows Installer Developers를 위한 Windows SDK 구성 요소의 파일 PUASample1.msi로 제공됩니다. 현재 SDK가 있는 경우 샘플 설치 패키지를 재현하는 데 필요한 모든 도구와 데이터에 액세스할 수 있습니다. 이 예제에 대한 자세한 내용은 단일 패키지 작성 예제참조하세요.