MSI는 업그레이드 설치시 필요한 어셈블리를 제거하지만 수리시 교체합니다.

StackOverflow https://stackoverflow.com/questions/1889422

  •  19-09-2019
  •  | 
  •  

문제

나는 MSI 설치 업그레이드와 관련하여 약간의 이상 함을 경험하고 있습니다. 아마도 누군가가 나를 도울 수있을 것입니다.

원본과 업그레이드의 두 MSI가 있습니다.

  • MSI 버전 1.0
    • GAC에 설치할 .NET 어셈블리, foo.dll이 포함되어 있습니다.
    • foo.dll은 MSI 파일 시스템 GUI 내에서 "어셈블리"( "출력"이 아님)입니다.
  • MSI 버전 2.0
    • 또한 foo.dll (동일한 버전)과 추가 어셈블리가 포함되어 있습니다.
    • MSI 2.0이 1.0을 완전히 교체하기를 원하므로 removePerviousVersion을 False로 설정했습니다.

이제 두 개의 설치 시나리오 :

  1. MSI 1.0을 실행합니다. foo.dll은 GAC에 올바르게 설치됩니다. 그런 다음 MSI 2.0을 실행합니다 foo.dll은 GAC에서 제거 된 것 같습니다, 그러나 추가 어셈블리가 있습니다. 나는 전혀 모른다. 그러나 프로그램을 추가/제거하고 "수리"를 클릭하면 foo.dll이 들어갑니다.

  2. MSI 1.0은 설치되지 않았으며 MSI 2.0을 실행합니다. foo.dll (및 추가 어셈블리) ~이다 예상대로.

업그레이드 중에 foo.dll이 제거되는 이유는 무엇입니까 ?? 미리 감사드립니다!

-시야

업데이트 상쾌한/재건 후 지금은 효과가있는 것 같습니다. 그러나 이제는 "영구"속성이 거짓으로 설정되어 있어도 MSI를 제거 할 때 foo.dll을 제거하지 않습니다. 큰 문제는 아니지만 무슨 일이 있었는지 아는 것이 좋을 것입니다.

도움이 되었습니까?

해결책

기묘함을 바로 잡으려면 다음을 수행했습니다.

  1. Windows SDK의 일부인 orca.exe를 설치했습니다.
  2. ORCA, Post Build를 통해 Propery 테이블에 reinstallMode = AMUS를 추가했습니다.

이것은 즉각적인 문제를 해결하고 내가 겪고있는 설치/제거 문제를 수정했습니다. 유일한 문제는 이것이 수동 프로세스라는 것입니다. 다음 단계에서, 이것을 어떻게 든 자동 구축 후 이벤트의 일부로 만드십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top