2009-04-30 7 views
11

WinForms 프로젝트에 기본 .exe 파일 하나가 기본 출력으로 있습니다. 배포 프로젝트를 사용하여 배포하지만 새 버전이 설치 될 때 .exe 파일이 업데이트되지 않습니다. 즉, 사용자에게 수동으로 제거한 다음 새 버전을 설치해야한다는 의미입니다. 배포 프로젝트가 업데이트되지 않음 .exe

  • 내가
  • 내가 배포 프로젝트 버전을 증가 (배포 프로젝트의 기본 출력) 출력 프로젝트에 어셈블리 버전을 증가 (그리고 업데이트 : 여기

    내가 뭘하는지입니다 배포 프로젝트가 이전 버전
  • 한 .exe의 '영구'속성을 제거하도록 설정되어
  • 하라는 메시지가 제품 코드)가 거짓
,536로 설정

나는 성공적으로하기 전에 이것을 해봤지만 지금은 그렇게 할 수 없다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집 : this answer

+0

+1 좋은 해결책입니다. 도움이됩니다. –

답변

9

그것은이 원인이 될 수 무슨 말을하기 어렵다 같이 프로젝트 속성에서 파일 버전을 변경하여 작업을 얻었다. 이전 버전을 제거하지 않는 MSI는 어떻게 설치합니까? 자세한 로깅을 사용하지 않는 설치를 실행하는 것이 좋습니다. * 모든 로그를 알려줍니다

msiexec /i "project.msi" /l*v "c:\install.log" 

/L은 로그를 생성 (설치 서비스 인)에 msiexec를 알려줍니다 및 v는 상세 모드를 사용하도록 알려줍니다 :이 같은 명령 줄에서 실행됩니다.

실행하여 로그 파일을 살펴보고 실패한 이유와 이유를 알려줍니다. 이 로그 파일을 여기에 게시 할 수도 있고 함께 찾을 수도 있습니다.

추가 질문 : 로그 파일은 설치 프로그램이 아무 것도 할 수 없다고 생각하는 것처럼 보입니다. 파일 버전을 업데이트한다고 말하면 무엇을 업데이트하나요? 배포 할 파일을 어떻게 포함 시켰습니까? 설치 프로젝트에서 "기본 출력"으로 포함 시켰습니까? 아니면 어셈블리를 직접 포함하고 있습니까? 의존성을 결정하고 자동으로 포함 시키거나 프로젝트 산출물을 포함 시켰습니까?

업데이트 MSI를 자동으로 업그레이드하려면 무엇을 변경해야하는지에 대한 설명을 보려면이 게시물을 참조하십시오. Question 511789

+1

로그에서이 파일을 발견했습니다 : 파일 : C : \ Program Files (x86) \ Company \ Project \ Project.exe; \t 덮어 쓰지 않습니다. \t 패치되지 않습니다. \t \t 기존 파일의 파일 크기가 같습니다. 파일이 변경되었음을 확인하려면 어떻게해야합니까? – stuartd

+0

지금 파일을보고 있습니다. 원래 질문을 편집하고 다른 사람이 더 쉽게 찾을 수 있도록 로그 링크를 배치하십시오. –

+0

도움을 주셔서 감사합니다. 지금은 제대로 작동하고 있습니다. 나는 당신이 언급 한 질문에 다음과 같은 사실을 알았습니다. "업그레이드 코드는 변경해서는 안됩니다." – stuartd

1

응용 프로그램이 실행되는 동안 업데이트를 시도하고 있습니까? 그렇다면 불가능합니다. 작은 외부 앱을 사용하여 현재 실행중인 프로세스를 종료하고 업데이트를 설치하고 새 버전을 다시 시작하는 등 더 나은 방법을 생각해 볼 필요가 있습니다.

+0

아니요, 앱이 실행되고 있지 않습니다. – stuartd

1

솔루션을 다시 빌드 해보십시오. 당신이 그것에있는 동안 당신은 또한 그것을 청소할 수 있습니다. 변경된 내용이 모두 콘텐츠 파일 일 경우 어떻게 될지 알 수 있습니다. 그렇지 않다면 무시하십시오.

5

MFC 프로젝트에서 VERSION 정보 리소스를 증가시키지 않았기 때문에 응용 프로그램의 실행 파일이 업데이트되지 않을 수 있습니다.

설치 프로젝트 버전을 증가시키는 것만으로는 충분하지 않습니다.아래를 참조

http://msdn.microsoft.com/en-us/library/6fkzft86.aspx

"버전 정보도 설정 API에서 사용됩니다."

+0

MFC 프로젝트가 있습니까? C# – stuartd

5

마침내 몇 시간 동안 내 머리를 벽에 치고 나서 이것을 알아 냈습니다.

내 문제는이 문제와 동일하며 해결하기가 매우 간단했습니다. 위의 두 가지 대답은 올바른 방향으로 나를 이끌어 내 문제를 파악하는 데 도움이되었지만 요컨대 여기에 있습니다.

RemovePreviousVersion을 true로 설정하면 어셈블리 정보 단추 아래의 응용 프로그램 설정에서 문제가 발생할 가능성이 큽니다. , 같은 응답 결국 :

나는 mohlsen위, 에 msiexec/I "project.msi"/ L *의 V "\ INSTALL.LOG C"이 질문에 대해 보여 으로 로그를 실행 덮어 쓰지 않습니다. 패치하지 않습니다. 파일을 기존의 것은

가 올바른 방향으로 절 지적뿐만 아니라 MFC 참조에 나를 조금을 던졌다 동일한 버전이다. 나는 윈도우 응용 프로그램을 작성하고 마침내 두 개와 두 개를 합친 다음 응용 프로그램 탭에서 작성중인 응용 프로그램의 속성으로 이동했습니다. 조립품 버전 및 파일 버전으로 연결되는 조립품 정보라는 버튼이 있습니다. 나는 이것들을 증분했고 .exe 파일을 갱신했다.

따라서 두 가지 작업을 수행해야합니다. 작성중인 앱의 실제 어셈블리 버전과 설치 패키지의 버전을 증가시켜야합니다.

+0

증가하는 어셈블리 버전이 도움이되었습니다. –

5

하나 추가 팁 : 당신은 AssemblyInfo.cs에이 프로젝트의 파일 및

에 AssemblyVersion을 변경 열면 [어셈블리 : AssemblyVersion (". 1.0 *")]

다음 어셈블리의 버전 정보는 프로젝트를 빌드 할 때마다 자동으로 업데이트됩니다. 그런 다음 동일한 파일에서 AssemblyFileVersion 항목을 주석 처리하거나 제거하여 파일 버전이 조립품 버전과 동일하게 기본값이되도록하십시오. 즉, 파일 버전을 빌드 할 때마다 파일 버전이 자동으로 업데이트되므로 설치 프로그램 버전을 업데이트하면 원하는대로 덮어 쓸 파일을 얻을 수 있습니다.

관련 문제