다음을 통해 공유


설치 및 배포 프로젝트 문제 해결

이 단원의 항목에서는 배포 프로젝트를 만들고 응용 프로그램을 배포할 때 발생할 수 있는 다양한 문제점에 대해 다룹니다.

설치 프로젝트에서 필요한 .NET Framework 버전이 응용 프로그램에서 대상으로 하는 .NET Framework 버전과 다른 경우

설치 프로젝트에는 .NET Framework의 특정 버전을 확인할 수 있는 시작 조건이 있습니다. 시작 조건에서 확인할 버전은 응용 프로그램에서 사용하는 대상 .NET Framework의 버전과 다를 수 있습니다. 예를 들어 응용 프로그램은 .NET Framework 2.0을 대상으로 하지만 설치 프로젝트의 시작 조건은 .NET Framework 3.5를 찾아 설치할 수도 있습니다. 또는 Visual Studio 프로젝트 템플릿이 .NET Framework 4 클라이언트 프로필을 대상으로 하지만 설치 프로젝트에는 .NET Framework 4인지 확인하여 설치하는 시작 조건이 있을 수도 있습니다.

이 기본 동작을 작성하려면 다음 단계를 수행하십시오.

  1. 솔루션 탐색기에서 설치 프로젝트를 클릭합니다.

  2. 보기 메뉴에서 편집기를 가리킨 다음 시작 조건을 클릭합니다.

  3. .NET Framework를 클릭합니다.

  4. 설치 프로젝트에서 확인 및 설치하도록 할 .NET Framework의 버전으로 속성 창에서 Version 속성을 변경할 수 있습니다.

Setup.exe 프로그램에서 .NET Framework의 올바른 버전을 확인하여 설치하는지도 확인합니다. 자세한 내용은 필수 구성 요소 대화 상자방법: Windows Installer 배포에서 필수 구성 요소 설치를 참조하십시오.

Windows Server 2008 R2 또는 Windows 7에 .NET Framework 3.5 SP1을 설치할 수 없음

.NET Framework 3.5 SP1을 필수 구성 요소로 포함하도록 설치 프로젝트를 구성할 수 있습니다. 하지만 이 필수 구성 요소를 Windows Server 2008 R2 또는 Windows 7 컴퓨터에 설치하면 "Microsoft .NET Framework 3.5 SP1을(를) 설치하거나 구성하려면 [역할 관리 도구]를 사용해야 합니다." 오류 메시지가 표시됩니다. Windows Server 2008 R2에는 .NET Framework 3.5 SP1이 운영 체제의 선택적인 구성 요소로 포함되어 있지만 기본적으로 이 필수 구성 요소가 해제되어 있습니다. 자세한 내용은 Which Version of .NET is Built into Windows?를 참조하십시오.

이 오류를 해결하려면 .NET Framework 3.5 SP1 부트스트래퍼 패키지를 변경합니다.

  1. 이 명령줄 "ocsetup Netfx3"을 실행하는 실행 가능한 프로그램을 만듭니다.

  2. %ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1 폴더로 이동합니다.

  3. 실행 가능한 프로그램을 DotNetFX35SP1 폴더에 복사합니다.

  4. en 폴더로 이동하고 관리자 권한으로 package.xml을 엽니다.

  5. <Commands> 섹션 내에 <Command> 요소를 추가하여 실행 가능한 프로그램을 실행합니다.

Windows 7에서 Microsoft Visual Studio 레지스트리 캡처 유틸리티를 사용할 때 오류 발생

Windows 7을 실행하는 컴퓨터에서 Microsoft Visual Studio 레지스트리 캡처 유틸리티(regcap.exe)를 사용할 경우 "Microsoft Visual Studio 레지스트리 캡처 유틸리티의 작동이 중지되었습니다." 오류가 표시될 수 있습니다. 설치 관리자 프로젝트를 빌드할 수는 있지만 나중에 dll이 설치되지 않습니다.

이 오류를 해결하려면 다음 단계를 수행합니다.

  1. %ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\Tools\Deployment로 이동합니다.

  2. regcap.exe를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.

  3. 호환성을 클릭합니다.

  4. 호환성 모드 아래의 확인란을 선택합니다.

Visual C++ 설치 프로젝트에서 종속성이 검색되지 않음

설치 프로젝트를 Visual C++ 솔루션에 추가할 경우 폴더 경로의 이름에 공백이 있으면 Visual C++ 솔루션의 종속성이 검색되지 않을 수 있습니다. 이를 해결하려면 프로젝트 이름을 바꿔서 공백을 제거하거나 종속성을 수동으로 추가합니다. 예를 들어 Documents\Visual Studio 2010\ProjectsDocuments\VisualStudio2010\Projects로 바꿉니다.

Visual Studio에서 소스 제어로 설치 프로젝트를 빌드할 수 없는 경우

Visual Studio 2008에서 설치 프로젝트를 빌드하는 경우 "<filename.vdproj> 파일이 소스 코드 제어에서 사용 중이고 체크 아웃할 수 없기 때문에 명령을 완료할 수 없습니다." 같은 오류가 표시될 수 있습니다. 설치 프로젝트에서는 소스 제어를 통해 파일을 자동으로 체크 아웃하지 않습니다.

운영 체제 지원

제한된 기능과 낮은 비용의 유지 관리 서버 환경을 제공하는 Windows Server 2008 Server Core 또는 Windows Server 2008 R2 Server Core에서는 Visual Studio 부트스트래퍼 및 Visual Studio Installer(설치 프로젝트)가 지원되지 않습니다. 예를 들어 Server Core 설치 옵션은 .NET Framework 3.5 Server Core 프로필만 지원하므로 전체 .NET Framework에 의존하는 Visual Studio 기능은 실행될 수 없습니다. 자세한 내용은 Server Core를 참조하십시오.

관리되는 사용자 지정 작업을 설치할 수 없는 경우

관리되는 사용자 지정 작업을 설치하는 경우 .installstate 파일이 누락되어 있음을 나타내는 오류 메시지가 표시될 수 있습니다. 이 오류 메시지는 관리되는 사용자 지정 작업에서 설치 작업을 구현하지 않는 경우에 나타납니다. 설치 작업은 .installstate 파일을 만들고 다른 작업은 이 파일을 업데이트합니다.

이 오류를 해결하려면 사용자 지정 작업에서 설치, 제거, 커밋 및 롤백 작업을 구현합니다.

Visual Studio 2008에서 다른 로캘이 사용 중이면 특정 로캘에 적합한 .NET Framework 3.5 SP1 언어 팩을 설치할 수 없는 경우

설치 프로젝트에서 .NET Framework 3.5 SP1을 필수 구성 요소로 선택하면 Visual Studio에서는 다른 로캘에 적합한 언어 팩을 설치하기 위해 부트스트래퍼 또는 설치 프로그램을 생성하지 않습니다. 예를 들어, 일본어 버전이 아닌 Visual Studio를 사용하는 경우 설치 프로젝트에는 .NET Framework 3.5 SP1 일본어 언어 팩이 포함되지 않습니다.

이 오류를 해결하고 재배포 가능한 .NET Framework 3.5 SP1용 일본어 패키지를 만들려면 %ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX35SP1 디렉터리에 새로운 ja 디렉터리를 만듭니다. 이 ja 디렉터리에는 eula.rtf 및 package.xml 파일이 있어야 합니다.

.NET Framework 3.5 SP1이 이미 설치되어 있으면 언어 팩을 설치할 수 없는 경우

컴퓨터에 핵심 .NET Framework 3.5 SP1이 이미 설치되어 있는 경우에는 .NET Framework 3.5 SP1 언어 팩을 설치할 수 없습니다. 예를 들어, 컴퓨터에 .NET Framework 3.5 SP1이 이미 설치되어 있으면 다른 응용 프로그램 설치 관리자에서 .NET Framework 3.5 SP1 일본어 언어 팩을 필수 구성 요소로 설치할 수 없습니다.

이 문제를 해결하려면 해당 언어 팩에서만 필요한 부트스트래퍼 패키지를 만듭니다. 부트스트래퍼 패키지에서 .NET Framework 3.5 SP1에 대한 종속성을 추가하여 핵심 .NET Framework가 이미 설치되어 있는 경우에만 언어 팩이 설치되도록 합니다. 또는 언어 팩을 수동으로 설치할 수도 있습니다.

관리되는 64비트 사용자 지정 작업에서 System.BadImageFormatException 예외를 throw하는 경우

관리되는 64비트 사용자 지정 작업을 설치 프로젝트에 추가하면 Visual Studio 빌드 프로세스에서 32비트 버전의 InstallUtilLib.dll을 MSI에 InstallUtil로 포함합니다. 그런 다음 관리되는 64비트 사용자 지정 작업을 실행하기 위해 32비트 .NET Framework가 로드되어 BadImageFormatException 예외를 발생시킵니다.

이 문제를 해결하려면 32비트 InstallUtilLib.dll을 64비트 버전으로 바꿉니다.

  1. 결과로 만들어진 .msi 파일을 Windows Installer SDK의 Orca에서 엽니다.

  2. Binary 테이블을 선택합니다.

  3. InstallUtil 레코드가 있는 [Binary Data] 셀을 두 번 클릭합니다.

  4. "Read binary from filename"이 선택되어 있는지 확인하고 Browse 단추를 클릭합니다.

  5. %WINDIR%\Microsoft.NET\Framework64\v2.0.50727로 이동합니다.

    참고

    Framework64 디렉터리는 64비트 플랫폼에서만 설치되고 64비트 프로세서 유형에 부합됩니다.

  6. InstallUtilLib.dll을 선택합니다.

  7. Open 단추를 클릭합니다.

  8. OK 단추를 클릭합니다.

자세한 내용은 64-bit Managed Custom Actions with Visual Studio를 참조하십시오.

사용자 지정 대화 상자 및 텍스트 상자에 필요한 경로 만들기

텍스트 상자가 있는 사용자 지정 대화 상자를 만드는 경우 "설치 폴더" 대화 상자는 사용자 지정 대화 상자 뒤에 표시되어야 합니다. 이 경우 디렉터리 값은 자동으로 채워집니다. 이와 달리 사용자 지정 대화 상자와 "설치 폴더" 대화 상자의 순서가 뒤바뀌면 디렉터리 값을 수동으로 채워야 합니다.

출력 창에 표시되는 기타 빌드 오류

특정 빌드 오류가 있는 경우 "부트스트래퍼를 빌드하는 동안 일반 오류가 발생했습니다" 또는 "복구할 수 없는 빌드 오류입니다" 같은 일반 오류 메시지가 표시될 수도 있습니다. 이 경우 이러한 일반 오류 메시지는 무시하고 특정 오류를 해결합니다.

이전에 제외한 파일이 솔루션을 다시 열 때 다시 포함되어 있는 경우

설치 프로젝트에서 파일을 제외한 경우 솔루션을 닫고 다시 열면 제외한 파일이 다시 포함되어 있을 수도 있습니다. 이 문제는 동일한 DLL 파일의 두 복사본이 서로 다른 두 소스 위치에서 복사된 경우에 발생할 수 있습니다.

이 오류를 해결하려면 두 파일 중 하나의 로컬 복사 속성을 변경합니다.

  1. 솔루션 탐색기에서 제거할 DLL 참조를 클릭합니다.

  2. 보기 메뉴에서 속성 창을 클릭합니다.

  3. 로컬 복사 속성을 False로 변경합니다.

'사용 가능한 저장소가 부족하여 이 작업을 완료할 수 없습니다'라는 오류를 표시하며 설치 프로젝트 빌드에 실패하는 경우

설치 프로젝트에 큰 파일을 추가하고 설치 프로젝트를 빌드하려고 하면 로컬 하드 디스크에 사용 가능한 디스크 공간이 있는 경우에도 "사용 가능한 저장소가 부족하여 이 작업을 완료할 수 없습니다"라는 오류가 나타날 수 있습니다. 또한 빌드 프로세스 중에 가상 메모리 사용량이 증가할 수도 있습니다.

이 오류를 해결하려면 빌드 컴퓨터에 RAM을 추가하거나 다음 해결 방법을 시도해 봅니다.

  1. 프로젝트에서 큰 파일과 이름이 동일한 파일을 추가합니다.

  2. 프로젝트 속성 페이지에서 느슨하게 압축되지 않은 파일로 패키지 설치 관리자를 설정합니다.

  3. 빌드합니다.

  4. 전체 크기의 큰 파일을 빌드 위치로 복사합니다.

설치 프로젝트에서 수정된 파일을 업데이트하지 않는 경우

이전 버전의 파일을 제거하도록 설치 프로젝트를 구성한 경우에도 사용자가 수정하거나 바꾼 파일을 Windows Installer에서 대체하지 않습니다. 자세한 내용은 Neither File Has a Version with File Hash Check을 참조하십시오.

시작 조건을 사용하여 .NET Framework 3.5 SP1을 확인할 수 없는 경우

MSI 전용 시나리오에서는 .NET Framework 3.5 SP1용 필수 구성 요소에 대한 검색이 지원되지 않습니다. 따라서 .NET Framework 3.5 SP1을 확인 및 설치하도록 Setup.exe 부트스트래퍼를 구성해야 합니다. 자세한 내용은 필수 구성 요소 대화 상자를 참조하십시오.

.NET Framework를 포함하는 64비트 부트스트래퍼를 만드는 방법

.NET Framework 3.0을 필수 구성 요소로 포함하고 Setup.exe 부트스트래퍼를 64비트 컴퓨터에 설치하면 64비트 운영 체제가 지원되지 않는다는 오류 메시지가 나타납니다.

.NET Framework 3.5에서는 32비트 및 64비트 운영 체제를 모두 지원합니다. 응용 프로그램에서 32비트 및 64비트 운영 체제 모두를 대상으로 할 경우 필수 구성 요소 대화 상자에서 .NET Framework 3.5를 선택합니다. 자세한 내용은 필수 구성 요소 대화 상자를 참조하십시오.

SQL 2008 및 .NET Framework 3.5 SP1용 부트스트래퍼 패키지를 설치하는 방법

SQL 2008 및 .NET Framework 3.5 SP1용 부트스트래퍼 패키지는 Visual Studio Express Edition을 설치하여 개발 컴퓨터에 설치할 수 있습니다. Visual Studio 2010의 경우 SQL 2008 및 .NET Framework 3.5 SP1 부트스트래퍼 패키지가 포함되어 있으므로 이 해결 방법이 필요하지 않습니다.

텍스트 상자의 백슬래시로 인해 잘못된 디렉터리 또는 URL 예외가 발생하는 경우

사용자가 입력한 설치 폴더의 경로를 사용자 지정 작업에서 사용하는 경우 ArgumentException 오류 메시지가 표시될 수 있습니다. 이 오류 메시지는 잘못된 디렉터리 또는 URL과 관련되어 있을 수 있습니다.

이 오류 메시지가 나타나지 않도록 하려면 Edit1 속성 및 Edit1Value 텍스트 상자에서 백슬래시를 공백: /name="[TARGETDIR] "로 바꿉니다. 그런 다음 값을 구문 분석하고 Combine 메서드를 사용하여 정규화된 경로를 만듭니다.

설치 프로젝트의 오류 메시지에 줄 바꿈(\n) 문자를 추가할 수 없는 경우

설치 프로젝트에서 오류 메시지를 작성할 경우 설치 프로젝트에서 또는 Orca.exe를 사용하여 줄 바꿈 문자를 추가할 수 없습니다. 그러나 "INSERT INTO `Property` (`Property`, `Value`) VALUES 'ERRORMESSAGELINES', 'first\r\nnext\r\nlast')" 명령으로 빌드 후 작업에서 Windows Installer API를 사용하면 줄 바꿈 문자를 추가할 수 있습니다. 빌드 후 작업의 사용에 대한 자세한 내용은 https://go.microsoft.com/fwlink/?LinkId=150770을 참조하십시오.

필수 구성 요소 대화 상자에서 .NET Framework 2.0 SP1 또는 .NET Framework 3.0 SP1을 선택할 수 없는 경우

.NET Framework 2.0 SP1 또는 .NET Framework 3.0 SP1이 아직 설치되어 있지 않으면 필수 구성 요소 대화 상자의 설치할 응용 프로그램 목록에서 .NET Framework 2.0 SP1 또는 .NET Framework 3.0 SP1이 표시되지 않습니다. 이 둘은 재배포 가능한 독립 실행형 파일로 사용할 수 없습니다. 이 둘을 최종 사용자 컴퓨터에 필수 구성 요소로 설치하려면 필수 구성 요소 대화 상자에서 .NET Framework 3.5를 선택합니다. 자세한 내용은 필수 구성 요소 대화 상자를 참조하십시오.

텍스트 상자에서 기본값이 명령줄 매개 변수를 덮어쓰는 경우

\qb 플래그를 사용하여 설치 관리자를 실행하고 명령줄 매개 변수를 전달하여 사용자 대화 상자에서 속성을 설정하는 경우 명령줄 매개 변수가 덮어쓰일 수 있습니다. 속성의 기본값이 고객에 의해 덮어쓰이지 않게 하려면 Orca.exe를 사용하여 msi 파일을 변경합니다.

  1. 대화 상자에서 편집 필드 값을 해당 속성 이름으로 설정합니다. 예를 들어, Edit1Value 속성을 [EDITB1]로 설정합니다.

  2. Visual Studio에서 MSI를 빌드합니다.

  3. ORCA를 사용하여 MSI를 편집하고 속성의 기본값을 Property 테이블에 배치합니다.

  4. MSI를 저장합니다.

빌드 후 작업을 사용하여 이와 같이 변경할 수도 있습니다. 빌드 후 작업의 사용에 대한 자세한 내용은 https://go.microsoft.com/fwlink/?LinkId=150770을 참조하십시오.

어셈블리 종속성이 감지되지 않는 경우

프로젝트 출력 그룹, 어셈블리 또는 병합 모듈이 배포 프로젝트에 추가될 때 종속 어셈블리는 자동으로 감지되어 프로젝트에 추가됩니다. 배포 도구가 프로젝트 출력 그룹에 대한 종속성을 보다 쉽게 감지할 수 있기 때문에 어셈블리를 포함하는 프로젝트 출력 그룹을 추가하는 것이 좋습니다.

코드를 사용하여 런타임에 종속 어셈블리를 로드한 경우에는 배포 도구로 검색할 수 없습니다. 가능하면 코드에서 어셈블리를 로드하는 것을 피하거나 종속 어셈블리를 배포 프로젝트에 수동으로 추가해야 합니다. 다음 표에는 종속성을 감지할 수 없는 문제 및 해당 문제의 해결책이 나와 있습니다.

종속성 문제

해결책

다른 제품의 일부로만 설치되어야 하는 구성 요소를 프로젝트에서 참조합니다.

  • 해당 구성 요소를 배포 프로젝트에서 제외합니다.

  • 대상 컴퓨터에서 구성 요소를 확인하는 시작 조건을 추가합니다. 구성 요소를 찾지 못하면 설치를 중지합니다.

종속성을 일부만 노출하는 비관리 구성 요소를 프로젝트에서 참조합니다.

비관리 구성 요소에 대한 종속성을 가지는 어셈블리를 프로젝트에서 참조합니다.

로캘이 영어가 아닌 컴퓨터에 설치할 때 MFC 응용 프로그램이 지역화되지 않는 경우

Visual Studio 배포 프로젝트를 사용하여 MFC 응용 프로그램을 배포할 때, 지역화된 병합 모듈인 Mfc_loc_e.msm 및 Mfc_loc_fe.msm의 종속성은 감지되지 않습니다. 병합 모듈은 Visual C++에 포함되어 있으며, 기본 설치 위치는 \Program Files\Common\Merge Modules입니다. 지역화된 MFC 응용 프로그램을 배포하기 위해서는 두 병합 모듈을 배포 프로젝트에 수동으로 추가해야 합니다.

설치 후 웹 서버에서 파일을 찾을 수 없는 경우

웹 설치 프로젝트를 웹 서버에 설치할 경우, 웹 응용 프로그램 폴더 및 웹 사용자 지정 폴더의 VirtualDirectory 속성은 해당 폴더에 포함된 파일이 웹 루트를 기준으로 어느 위치에 설치될지를 결정합니다. 이 속성이 공백으로 되어 있으면 파일이 웹 루트 폴더(inetpub\wwwroot)에 설치됩니다. 자세한 내용은 VirtualDirectory 속성을 참조하십시오.

웹 응용 프로그램을 웹 서버 루트 디렉터리에 설치하는 방법

기본적으로 웹 설치 배포 프로젝트를 사용하여 웹 응용 프로그램을 설치할 때는 파일이 웹 루트 폴더 바로 아래에 있고 배포 프로젝트와 이름이 같은 폴더에 설치됩니다. 웹 응용 프로그램 폴더의 VirtualDirectory 속성은 파일의 설치 위치를 결정합니다. 웹 루트 디렉터리에 설치하려면 VirtualDirectory 속성을 null(기본값 삭제)로 변경합니다. 자세한 내용은 VirtualDirectory 속성을 참조하십시오.

종속성 분석을 해제하는 방법

종속성 분석 검색 및 확인을 해제하는 직접적인 방법은 없지만 SearchPath 속성을 클릭하면 나타나는 대화 상자에서 표준 검색 경로 포함 옵션의 선택을 취소하는 방법을 사용할 수는 있습니다.

다음과 같은 몇 가지 사항을 추가로 고려할 수도 있습니다.

  • 프로젝트 메뉴에서 추가를 선택하고 파일을 선택하여 파일 추가 명령으로 파일을 추가해야 합니다. 프로젝트 메뉴에서 추가를 선택하고 프로젝트 출력을 선택하여 프로젝트 출력 추가를 사용하는 경우 코드 프로젝트에서 보고되는 종속성이 포함됩니다.

  • 빌드할 때 종속성을 찾을 수 없습니다. 경고가 한 번 이상 나타날 수 있으나 이 경우에는 무시해도 됩니다.

  • 일부 파일에 대해서만 종속성 분석을 해제하려는 경우 표준 검색 경로를 해제한 상태로 병합 모듈 프로젝트에 해당 파일을 넣습니다. 그런 다음 병합 모듈 추가(프로젝트 메뉴에서 추가를 선택하고 병합 모듈 추가 선택)를 사용하여 표준 검색 경로를 설정한 상태로 일반 설치 프로젝트에 .msm을 포함시킵니다.

사용자가 수정하거나 삭제해야 하는 파일에 대한 복구를 해제하는 방법

Visual Studio에서는 프로그램이 시작될 때 해당 파일이 모두 있는지 확인하도록 보급 바로 가기를 만듭니다. 이 동작을 변경하여 파일이 복구되지 않도록 하려면 설치 프로젝트에서 해당 파일을 선택한 다음 Condition 속성을 NOT REINSTALL로 변경하여 복구할 때 해당 파일이 다시 설치되지 않도록 하고 Transitive 속성을 TRUE로 변경하여 해당 조건이 다시 확인되도록 합니다. 이렇게 하면 처음으로 파일이 삭제된 후에 설치 관리자가 화면에 잠시 나타나고 해당 파일을 다시 설치하지 않아도 되는지 확인합니다. 이후부터 설치 관리자는 나타나지 않습니다.

사용자 지정 작업/설치 관리자 클래스를 디버깅하는 방법

다음 방법 중 하나를 사용할 수 있습니다.

  • 코드의 호출을 System.Diagnostics.Debugger.Launch에 추가합니다. 이 방법을 사용하면 Just-In-Time 디버깅을 열고 코드에 새 디버거를 연결할 수 있습니다.

  • 코드의 호출을 MessageBox.Show("Debug Me")에 추가합니다. 메시지 상자가 표시되면 Visual Studio를 사용하여 MessageBox 프로세스에 연결합니다. 그런 다음 코드에 break(Visual C# 프로젝트의 경우) 또는 stop(Visual Basic 프로젝트의 경우)을 추가합니다.

  • %windir%\Microsoft. net\Framework\version\InstallUtil.exe를 외부 프로그램으로 시작하도록 프로젝트 디자이너의 디버그 페이지에서 디버깅 기본 설정을 지정합니다. 사용자 지정 작업 어셈블리의 이름은 명령줄 인수입니다. F5 키를 누르면 중단점이 적중됩니다. InstallUtil.exe는 MSI와 같은 방식으로 사용자 지정 작업을 실행합니다.

COM 인터페이스를 사용하여 어셈블리를 등록할 수 없는 경우

이 문제는 알려진 RegAsm 버그입니다. 예를 들어, 어셈블리의 종속성이 다른 클래스 라이브러리에 있는 경우 등록 정보를 가져오도록 RegAsm이 호출되므로 RegisterCOM이 작동되지 않을 수 있습니다. RegAsm이 \obj 디렉터리에서 호출되기 때문에 종속성을 찾을 수 없고 RegAsm은 알림 없이 실패합니다. \bin 디렉터리에서 수동으로 어셈블리를 추가하는 것이 가장 좋은 해결 방법입니다. 다른 해결 방법으로 RegisterSelfReg를 사용할 수 있습니다.

이 경우에도 RegAsm/Codebase를 사용하여 수동으로 등록해야 합니다. 어셈블리가 공유된 위치에 있지 않는 경우 호출 코드와 같은 디렉터리에 있지 않으면 해당 어셈블리를 찾을 수 없습니다. /Codebase는 디렉터리를 레지스트리로 입력합니다.

로그 파일을 사용하여 Windows Installer 설치 문제를 해결하는 방법

Windows Installer에서는 프로그램을 설치하는 동안 수행되는 작업을 로그 파일에 기록합니다. 로그 파일은 .msi 파일이 상주하는 디렉터리에 있습니다.

설치 로그 파일을 가져오는 방법

다음과 같은 두 가지 방법이 있습니다.

  • 로깅 스위치를 사용하여 명령줄에서 다음 명령을 실행합니다.

    misexec /i mysetup.msi /l*v mylog.txt
    
  • 다음을 .reg 파일로 저장하고 레지스트리에 로드합니다.

    REGEDIT4
    
    [HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer]
    "Logging"="voicewarmup"
    "Debug"=dword:00000007
    

    그런 다음 \temp 디렉터리를 열고 날짜순으로 정렬합니다. 최신 msi*.log 파일에는 가장 최근의 설치 또는 제거부터 표시됩니다.

이전에 설치한 제품의 하위 디렉터리에 설치하는 방법

  1. 이전에 설치한 Product 1이라는 제품이 설치되어 있고 MyFile.txt라는 이름의 파일이 있다고 가정합니다.

  2. Windows Installer SDK의 Orca.exe를 사용하여 File 테이블을 보고 MyFile.txt를 나타내는 행을 찾습니다.

  3. Component_ column의 값을 확인하고 Component 테이블을 엽니다.

  4. Component 테이블에서 Component 열에 Component_ value가 있는 행을 찾아서 ComponentID를 확인합니다. 이 값을 클립보드에 복사합니다. Orca.exe를 닫습니다.

  5. 설치 프로젝트에서 시작 조건 편집기를 열고 Windows Installer 구성 요소 검색을 추가합니다. 새 검색의 ComponentID 속성에 복사한 ComponentID를 붙여넣습니다.

  6. Property 속성을 복사합니다. 이 속성은 COMPONENTEXISTS1과 유사해야 합니다.

  7. 파일 시스템 편집기를 열고 응용 프로그램 폴더를 선택합니다.

  8. DefaultLocation 속성이 [COMPONENTEXISTS1]MySubFolder(COMPONENTEXISTS1의 경로에 후행 '\'가 포함되므로)와 유사하도록 편집합니다.

이전 절차의 6단계를 수행한 후 시작 조건 편집기에 조건을 추가하여 구성 요소가 있는지 확인하고, 구성 요소가 없는 경우 설치를 차단하고 메시지가 표시되도록 할 수 있습니다. 해당 조건은 COMPONENTEXISTS1(COMPONENTEXISTS1이 비어 있지 않은 경우 설치 관리자를 실행할 수 있음을 나타냄)이 됩니다.

기본 포트 이외의 포트에 사용자 지정 웹 폴더를 설치하는 방법

기본적으로 지정되지 않은 포트에 사용자 지정 웹 폴더를 설치하려면 명령줄에서 설치를 실행합니다. 명령줄에는 각 웹 사용자 지정 폴더에 대한 Property 속성 값을 포함해야 합니다. 일반적으로 값은 NEWWEBPROPERTY1과 유사합니다. 웹 응용 프로그램 폴더에 대해서도 TARGETPORT를 포함시켜야 합니다.

예를 들어, 웹 서버가 포트 20에 있는 경우 명령줄은 다음과 같습니다.

msiexec /i mywebsetup.msi TARGETPORT=20 NEWWEBPROPERTY1PORT=20

위의 명령은 하나의 웹 폴더에 대한 명령입니다. 웹 폴더가 둘 이상인 경우 각 폴더에 대해 이전에 지정한 것과 같은 PROPERTY=VALUE 쌍을 더 추가하여 나열된 각 폴더의 포트를 지정된 포트로 리디렉션합니다.

설치하는 동안 사용자 인터페이스의 포트가 변경되면 사용자 지정 웹 폴더에서는 명령줄 값이 사용되므로 설치 위치 대화 상자를 제거할 수도 있습니다.

웹 사이트 루트에 설치하는 방법

웹 사이트 루트(예: c:\inetpub\wwwroot)에 설치하려면 웹 설치 프로젝트에서 또는 설치하는 동안 VirtualDirectory를 빈 문자열로 설정합니다.

ServicedComponent를 GAC에 설치하고 COM+ 카탈로그에서 구성하는 방법

ServicedComponent를 GAC에 설치하고 COM+ 카탈로그에서 구성하는 경우 다음 컴파일 오류가 발생할 수 있습니다.

"Unable to build custom action named 'Primary output from RegServer (Active)' because the file's Folder property is set to Global Assembly Cache."

GAC의 어셈블리가 사용자 지정 작업이 실행될 때마다 항상 사용할 수 있는 것이 아니므로(GAC로 커밋됨) 이 설치는 지원되지 않습니다.

이 문제를 해결하려면 코드를 다른 파일에 넣고, GAC로 이동하지 않는 파일에 사용자 지정 작업 코드를 넣습니다. 코드를 이런 방식으로 배포할 수 없는 경우도 있습니다.

바로 가기에서 제거 링크를 만드는 방법

  1. 설치 프로젝트의 디렉터리에서 새 Uninstall.bat 파일을 만듭니다.

  2. 설치 프로젝트에서 ProductCode 속성(예: [12345678-1234-1234-1234-123412341234] 값)을 복사합니다.

  3. Uninstall.bat을 편집하여 다음 내용이 들어 있는 줄을 포함합니다. 여기서 ProductCode는 2단계에서 복사한 값입니다.

    Msiexec /x ProductCode

  4. 설치 프로젝트의 응용 프로그램 폴더에 Uninstall.bat을 추가합니다.

  5. Uninstall.bat을 마우스 오른쪽 단추로 클릭하고 바로 가기 만들기를 선택하여 바로 가기를 만듭니다.

  6. 설정 프로젝트의 해당 시작 메뉴 폴더에 바로 가기를 넣습니다.

  7. 바로 가기의 이름을 "<Application Name> 제거" 등으로 바꿉니다.

설치 프로젝트의 사용 방법에 대한 예제가 있는 위치

설치 프로젝트 사용 방법의 예제를 보려면 배포 작업 및 연습을 참조하십시오.

.NET Framework 기반 응용 프로그램의 배포를 계획하는 방법

Deploying .NET Framework-based Applications 가이드에서는 .NET Framework 기반 응용 프로그램의 효율적인 배포를 계획하고 구현하기 위해 알아야 할 정보를 제공합니다.

Windows Installer SDK를 다운로드하는 방법

Windows Installer SDK는 Microsoft 다운로드 센터에서 다운로드할 수 있습니다.

https://go.microsoft.com/fwlink/?LinkId=161393.

Crystal Reports에 대한 업데이트와 도움말을 가져오는 방법

업데이트된 소프트웨어와 병합 모듈은 BusinessObjects.com 웹 사이트의 "Downloads & Updates" 페이지에서 설치할 수 있습니다.

https://websmp102.sap-ag.de/~sapidp/002006825000000234912001e

"복구할 수 없는 빌드 오류입니다." 오류 메시지를 해결하는 방법

설치 및 배포 프로젝트를 빌드할 때 "복구할 수 없는 빌드 오류입니다." 오류 메시지가 나타나는 경우 다음 문서를 참조하십시오.

https://support.microsoft.com/?id=329214의 "PRB: 설치 및 배포 프로젝트를 구축하는 경우 "복구할 수 없는 빌드 오류입니다" 오류 메시지 발생"

유효성 검사 오류 메시지를 해결하는 방법

An error occurred when validating. HRESULT = '80040155' 같은 오류 메시지가 나타나는 경우 https://support.microsoft.com/?id=329214에서 "PRB: 설치 및 배포 프로젝트를 구축하는 경우 "복구할 수 없는 빌드 오류입니다" 오류 메시지 발생"을 참조하고 "등록되지 않은 경우"의 단계를 수행하십시오.

사용자 지정 작업으로 배포하는 동안 IIS를 수정하는 방법

https://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchUsingCustomActionsToModifyInternetInformationServerDuringDeployment.asp?frame=true에 나오는 "Modifying Internet Information Services During Deployment with Custom Actions" 문서에 몇 가지 일반적인 문제의 해결 방법이 설명되어 있습니다. 예를 들면 다음과 같은 요소입니다.

  • 파일 시스템 편집기의 웹 폴더에서 사용할 수 없는 IIS 폴더의 설정을 수정하는 방법

  • Visual Basic 6 및 Visual Basic .NET 이상 버전을 모두 사용하는 혼합 응용 프로그램을 배포하는 방법

  • Visual Basic 6 응용 프로그램과 Visual Studio .NET 이상 버전으로 작성한 응용 프로그램 간 배포 변경 사항

ASP.NET 응용 프로그램을 배포하는 방법

Visual Studio .NET을 사용하여 ASP.NET 응용 프로그램을 배포하는 방법에 대한 자세한 내용은 Deploying an ASP.NET App Using Visual Studio .NET을 참조하십시오.

Windows 2000에 설치한 후 응용 프로그램에 MDAC 2.8이 필요하다는 경고가 나타나면서 실패하는 경우

System.Data 네임스페이스를 참조하는 모든 응용 프로그램은 MDAC(Microsoft Data Access Components) 버전 2.8 이상에 종속됩니다. 대부분의 경우 필요한 파일은 운영 체제의 일부로 이미 설치되어 있습니다. 그러나 Windows 2000 서비스 팩 3 이하 버전에서는 응용 프로그램과 함께 이 구성 요소를 설치해야 할 수도 있습니다. 부트스트래퍼 패키지에 파일을 추가하거나 설치를 진행하는 동안 Microsoft에서 파일을 다운로드하여 이 구성 요소를 설치할 수 있습니다. 자세한 내용은 응용 프로그램 배포 필수 구성 요소를 참조하십시오.

사용자 지정 작업에 필요한 사용 권한 수준을 변경하는 방법

기본적으로 사용자 지정 작업은 SYSTEM 권한으로 실행되지만 작업 완료를 위해 사용자 지정 작업에 보다 많은 권한이 필요할 수도 있습니다. 이 기본 동작을 변경하려면 사용자 지정 작업에서 "noimpersonate" 플래그가 사용되지 않도록 설정합니다. 자세한 내용은 Custom Action In-Script Execution Options을 참조하십시오.

관련 기술 자료 문서

다음 기술 자료 문서에서는 Windows Installer 배포 문제에 대한 정보를 제공합니다.

참고 항목

참조

VirtualDirectory 속성

기타 리소스

응용 프로그램 및 구성 요소 배포

배포 작업 및 연습