2009-06-09 2 views
8

Crystal Reports를 사용하는 .NET 프로젝트가 있습니다. 응용 프로그램은 ClickOnce를 사용하여 배포됩니다. 사용자가 Crystal을 컴퓨터에 설치 한 경우 유용합니다. 그러나 모든 최종 사용자가 자신의 컴퓨터에 Crystal Reports를 설치 한 것은 아닙니다. 이러한 사용자는 다음 오류를 수신하고 있습니다 ....NET ClickOnce는 필수 구성 요소 파일을 설치하지 않으십니까?

"응용 프로그램을 설치할 수 없거나 응용 프로그램을 실행할 수 없습니다. 응용 프로그램에서 먼저 CrystalDecisions.ReportAppServer.XmlSerialize 버전 10.5.3700.0 어셈블리를 GAC (전역 어셈블리 캐시)에 설치해야합니다."

필수 구성 요소가 설치되도록 ClickOnce 설치를 강제하는 방법이 있습니까?

+0

Crystal Reports를 ClickOnce 게시 설정의 필수 구성 요소로 포함 시켰습니까? –

답변

11

아니요. ClickOnce 및 전제 조건에 대한 혼란이 많습니다.

ClickOnce는 을 지정하지 않습니다.과 사전 조건이 있습니다. 아무것도. ClickOnce는 서버에서 클라이언트 컴퓨터로 파일을 복사하고 서버 파일이 업데이트 될 때 해당 파일을 동기화 상태로 유지합니다. GAC에 물건을 넣거나 dll을 등록하거나 msi 파일을 설치할 수 없습니다.

Visual Studio에서 배포 할 때 혼동이 따릅니다. VS는 게시 할 때 ClickOnce와는 아무런 관련이없는 몇 가지 작업을 수행합니다. 하나는 배포에 대한 링크가 포함 된 좋은 html 페이지를 만듭니다. 또한, 그것은 당신이 몇 가지 prereqs에서 선택할 수 있으며 당신을 위해 부트 스트 래퍼 exe를 생성합니다. 나는 당신이 Crystal Reports 설치를 위해 이것을했다고 가정합니다. 부트 스트 래퍼는 여러 가지 기본 조건을 관리하는 간단한 방법 일뿐입니다. 사용자에게 앱을 설치하기 전에 X, Y, Z를 차례로 설치하는 대신 부트 스트 래퍼가 세 번의 설치를 "끊김없는"상태로 만들어 대형 설치처럼 보이게합니다. 사용자가 이미 설치되어있는 경우 사전 설치를 건너 뛸 수도 있습니다.

VS가 생성하는 HTML 페이지에주의를 기울이면 두 개의 링크가 표시됩니다. 하나는 .application 파일 (ClickOnce 배포)이고 하나는 부트 스트 래퍼 exe입니다. 당신은 사용자의 자비를 거의 짊어지고 있으며 필요할 경우 페이지를 읽고 부트 스트 래퍼를 실행하기 위해 의존해야합니다. HTML 페이지가 UserAgent 문자열을 통해 확인할 수 있기 때문에 그 중 하나의 예외는 .Net Framework입니다.

을 실행하지 않으면 부트 스트 래퍼를 실행하면 요청한 것과 매우 유사한 오류가 발생합니다.

하나의 가능한 솔루션은 설치되어 있는지 확인하기 위해 코드를 작성하는 것입니다. 레지스트리 또는 "Program Files"폴더를 확인할 수 있습니다. 그것이 설치되었는지 확인하기 위해 당신이해야 할 일은 무엇이든지. 그런 다음 정상적으로 종료하고 사용자에게 알려줍니다. Crystal 어셈블리를로드하고 사용하기 전에 검사를 수행하는 동안 작동합니다.

행운을 빈다. 더 나은 해결책을 생각해 내면 대응하십시오.

+1

Whatknott, 다른 게시물 몇 개를 읽고 더 잘 이해하고 있다고 생각합니다. 이 주제를 확인하고 설명해 주셔서 감사합니다. – proudgeekdad

+0

환영합니다. ClickOnce와 동일한 질문과 불만을 겪었던 것을 기억합니다. 나는 당신에게 _ 고통을 덜어 주었으면 좋겠다. :) – codeConcussion

+0

대단한 설명! –

-1

Prerequistes에서 .Net Framework 용 Crystal Reports (Visual Studio 용 Crystal Report 아님)를 선택하고 게시하십시오.