2009-10-15 1 views
5

대형 클릭 응용 프로그램 (150MB,> 200 DLL)에서 작업 중이며 임시 디버깅 프로세스의 일부로 전체 DLL을 다시 작성하고 다시 배포 할 필요없이 DLL을 1 개만 업데이트하고 응용 프로그램을 다시 시작하고 싶습니다.ClickOnce 설치에서 하나의 DLL 만 업데이트하는 방법은 무엇입니까?

그럴 수 있습니까? 그렇다면 ... 어떻게?

질문 명확한 설명 : 2009년 9월 26일

나는 전체 응용 프로그램을 다운로드하고 로컬 캐시에서 직접 클라이언트 .EXE를 실행 한 후 수동으로 클라이언트에 DLL을 패치하는 것이 가능하다는 것을 알고있다 폴더. 그것은 요점이 아니다. 서버에서 DLL을 변경/추가하는 방법을 알고 다음에 시작할 때 모든 클라이언트에게 새 DLL을 가져오고 싶습니다. "이 폴더에 DLL 복사 및이 텍스트 파일 편집"가능한 답변을 찾고 있습니다. 내가 구체적으로 수행 하지 서버에 클릭 한번 설치를 다시 작성하거나 다시 배포하고 싶습니다 ... IDE에서 컴파일 한 단일 DLL로 손으로 패치하십시오.

+1

Visual Studio에서 응용 프로그램을 작성하고 디버깅한다고해서 일반적으로 ClickOnce 게시/배포 프로세스가 트리거되지 않습니다. 애플리케이션을 디버깅하는 방법을 명확히 할 수 있습니까? –

+0

그는 클라이언트 시스템의 라이브 환경에서 디버깅을하고 있다고 생각합니다. 때로는 유일한 옵션입니다. –

+1

단일 사용자의 컴퓨터에서 단순히 디버깅을 시도하는 경우 디버그 버전을 사용자 데스크톱의 폴더로 복사하고 ClickOnce를 완전히 건너 뛸 수 있습니까? – codeConcussion

답변

6

나는 며칠 동안이 일을 해왔다.하지만이 방법으로 해결할 수는있다.이 솔루션으로 ClickOnce는 모든 파일을 검사하고 진행률 막대를 보여 주지만 변경 사항 만 다운로드하고 업데이트한다. 여기

내가이 패치 방법을 적용하기 위해 작성한 과정입니다 ...

주이 과정은 배포 업그레이드 할 한 번 클릭의 정확한 복사본에 수행 될 필요가있다. (버전 번호

  • 이 패치 파일을 대체 mageui (버전 3.5 이상 가정 VS2010)

  • 변경을 사용하여 .exe.manifest 응용 프로그램 파일 폴더에서

    ...

    1. 개방의) 참고 : 파일 이름은 .deploy Eg로 바뀝니다. Control.DLL은 control.DLL이됩니다.

    2. 는 로그인 & 저장 당신과 함께 파일이 루트 경로에서

      1. 열기 .application 파일을 사용하여 mageui (버전 3.5 이상)
      2. 변경을

      파일 PFX 배포 버전 번호

    3. 최소 요구 버전 번호 변경
    4. 위에서 수정 한 exe.manifest를 선택하십시오.
    5. 로그인 & 저장 파일 응용 프로그램 파일 폴더에

    복사 .application * 참고 :이 단계는 꼭 필요한 것은, 그러나 다만 백업이 관련 파일을 유지합니다.

    이제 Manifest 파일 및 패치 된 라이브러리를 전개 환경으로 복사 할 수 있습니다.

  • +0

    자세한 정보를 보내 주셔서 감사합니다. 답변을 단계별로 설명 했으므로 해결책으로 표시하십시오. –

    +0

    우리 애플리케이션의 경우 부분적인 dll 업데이트의 플래그도 Full-trust 응용 프로그램을 설정해야합니다. 명명 – VMAtm

    1

    ClickOnce는 업데이트 된 dll을 결정하므로 클라이언트는 전체 150MB는 다운로드하지 않고 업데이트 된 DLL 만 다운로드합니다. 단점이라면 150MB를 모두 업로드해야합니다.

    내 고객에게 그런 방식으로 작동하는 ClickOnce 응용 프로그램이 있습니다. 약 40MB는 항상 동일하게 유지됩니다. 추가 작업이 필요하지 않습니다.

    +0

    +1 : 여기와 같습니다. 20 분의 배포이지만 내 고객이 diff를 다운로드하는 데 약 10 초가 걸립니다. –

    +0

    예, 모든 것이 항상 빨기, 특히 esp. 원격에서 배포 할 때 (클라이언트의 클릭 수가 증가하고 커지면 클라이언트의 클릭이 증가합니다 ...) –

    +0

    클라이언트에서 시작하는 것이 문제가 아닙니다. 전체 제품을 실제로 다시 빌드하거나 클릭 한번 설치 세트를 재구성하지 않고 개별적으로 컴파일 한 DLL 하나로 서버의 마스터 파일 목록을 패치하는 방법을 알고 싶습니다. "이 DLL을이 폴더에 복사하여이 텍스트 파일을 편집하고 클릭 한 번만 새 DLL을 사용하여 시작합니다"라는 답변을 찾고 있습니다. –

    0

    클라이언트 시스템의 라이브 환경에서 작업하는 중이라면 dll을 설치 폴더의 이전 dll로 복사하여 대체 할 수 있어야합니다. Windows XP에서의 clickonce 설치 위치는 C : \ Documents and Settings \ userprofile \ Local Settings \ Apps라고 생각합니다.

    +0

    이것은 단일 클라이언트에서 작동합니다. 나는 모든 클라이언트가 새 DLL을 얻을 수 있도록 (직접 액세스 할 수있는) 서버에서 수동으로 단일 DLL을 패치 할 수있는 솔루션을 찾고 있습니다. –

    2

    여기에도 같은 문제가 있습니다. 특정 파일을 clickOnce 폴더에 복사해야한다고 생각합니다. MageUI를 사용하여 .manifest 및 .application 파일을 편집합니다. 두 파일에서 버전 번호를 앞당겨 지정하십시오. 잘 모르지만 클라이언트 측의 ClickOnce는 변경된 파일을 다운로드해야합니다.

    +2

    이것은 나를 위해 일했지만 심각한 두통입니다. ClickOnce 설치를 다시 작성하고 재배포하는 것이 더 쉽다는 것을 알게되었습니다. 너무 좋지 않음 :( –