2014-10-09 3 views
0

에 대해 다시 설치하고 REINSTALLMODE 플래그를 재설정 내가 명령 줄을 사용하는 NSIS 스크립트가 : MSI는이 윅스를 사용하여 구축됩니다주요 업그레이드

msiexec.exe /i installer.msi REINSTALL=ALL REINSTALLMODE=vdmus

합니다. 사소한 업그레이드에서는 정상적으로 작동하지만 대대적 인 업그레이드에서는 실패합니다.

그래서 우리는 우리가 주요 업그레이드를하고 있다는 것을 감지하면REINSTALLREINSTALLMODE 플래그를 다시 에 윅스의 방법이 있는지 알고 싶어?

답변

4

주요 업그레이드는 REINSTALL 또는 REINSTALLMODE를 사용하지 않습니다. 사소한 업그레이드를 위해 만들어진 MSI는 (다른 것들 중에서) 업데이트되는 제품 코드와 동일한 ProductCode를 가지며, 주요 업그레이드를 위해 만들어진 MSI는 동일한 ProductCode를 가지고 있지 않습니다. 따라서 주요 업그레이드를 수행하려면 MSI를 "정상적인"방법으로 시작하고 부 업그레이드는 REINSTALL 및 REINSTALLMODE를 사용하여 MSI 파일을 시작하십시오. 두 개의 별도 명령 행이 필요하며 수행중인 설치 유형을 알고있는 경우 적절한 명령 행을 사용하십시오. 그것은 가장 안전하고 어쩌면 할 일입니다.

BTW, 이것은 WiX와 아무 관련이 없습니다. MSI 파일을 작성하는 데 사용하는 도구는 사실입니다.

+0

답장을 보내 주셔서 감사합니다. 두 개의 별도 명령 줄을 제안했지만 NSIS의 주요 업그레이드와 보조 업그레이드를 구별 할 수있는 방법이 없습니다. 따라서 나는 Wix에서 이러한 돌발을 재설정하는 방법이 있는지 궁금해하고있었습니다. – whywhywhy

+0

귀하의 게시물에 "일단 우리가 주요 업그레이 드를하고 있음을 감지 했습니까?" 주요 업그레이드를 감지하는 방법을 이미 알고있는 것처럼 들릴 수도 있습니다. 그렇지 않으면 두 시나리오에서 모두 작동하는 msiexec 명령 줄이 없습니다. 사람들이 발사하기 전에 사소한 업그레이드인지 중요한지 여부를 감지하는 일반적인 방법은 1) 설치하려는 MSI의 ProductCode와 UpgradeCode를 알고 있어야합니다. 2) MsiEnumRelatedComponents (.... UpgradeCode ....)를 호출하면 설치하려는 제품 코드와 동일한 ProductCode를 다시 얻으십시오. 다를 경우 주요 업그레이드. – PhilDW