2013-07-25 8 views
0

설치 프로그램에서 이전에 설치 프로그램을 찾으면 다시 설치하기 전에 모두 제거해야합니다. 지금까지이 코드를 가지고 있습니다 :마지막 버전 WiX를 다시 설치하지 않음

<Product Id="GUID1" Name="MyName" Language="1033" 
    Version="1.0.0.0" Manufacturer="MyManufacturer" UpgradeCode="GUID2"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

    <InstallExecuteSequence> 
    <RemoveExistingProducts Before="InstallInitialize" /> 
    </InstallExecuteSequence> 

    <Feature Id="ProductFeature" Title="MyTitle" Level="1"> 
    <ComponentGroupRef Id="MyFeatures" /> 
    </Feature> 
</Product> 

그러나 설치 프로그램을 실행하면 다음 메시지가 나타납니다 이 설치는 계속 될 수 없습니다. (또는 이와 비슷한 것, 내 창문은 영어가 아닙니다).

수정 방법은 무엇입니까? 당신이 원하는 경우

답변

1

, 당신은이 작업을 수행하기 위해 업그레이드 코드와 버전 관리 시스템을 사용할 수

<Product Id="*" 
     Name="MyApp" 
     Language="1033" 
     Version="1.0.0" 
     Manufacturer="Me" 
     UpgradeCode="bf35a656-3e28-4f40-9ebd-566174c9c948"> 

     <MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A later version of MyApp is already installed. Setup will now exit."/> 

     <!-- other stuff --> 
    </Product> 

키 항상에 "*"과 "UpgradeCode"지속적인 제품 코드를 유지합니다. 이렇게하면 버전을 1.0.1로 변경하면 이전 버전이 모두 제거됩니다. 그러나 사용자가 이미 최신 버전을 사용하는 경우 이전 버전을 설치하려고 시도하면 수동으로 제거하지 않는 한 해당 버전을 사용할 수 없습니다.

면책 조항 : 동일한 버전으로 업데이트가 실행되지 않습니다. 또한 네 번째 숫자 (1.0.0. *)를 변경해도 업데이트가 트리거되지 않습니다. 그것은 3 번호 버전 관리 체계로 잘 작동합니다. 네 가지 버전의 버전을 사용하려면 소프트웨어의 부트 스트 래퍼 (setup.exe)를 설계해야합니다.

+0

이것은 사실이 아닙니다. '1.0.0.0'을'1.0.0.0'으로 바꾸고 이전 버전을 제거하고 새로운 버전을 설치하면 msi는 새로운 버전을 만듭니다. 이제는 같은 컴퓨터에 두 가지 프로그램을 설치했습니다. 그러나'1.0.0.0'을'1.0.1.0'으로 변경하면 이제는 잘 동작합니다. 따라서 네 개의 숫자 버전으로 작업하는 방법을 알고 있습니까? –

+2

@JonnyPiazzi Windows Installer는 Windows Installer 패키지의 버전 체계를 정의합니다. [docs] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa370859(v=vs.85) .aspx)에서 형식이 분명하다고 말할 때 왜 4 자리 숫자 버전을 사용하려고합니까? "major.minor.build"에 각각 범위 제한이 있습니까? –

+0

@Tom Blodget 이전에 버전이 'major.minor.error-correct.build'라고 정의 된 프로젝트에서 작업하고 있지만 게시 한이 문서를 보여주고 방법이 변경 될 것입니다. 감사. –