문제

구성 요소가 변경되지 않은 경우 업그레이드가 잘 작동하지만 구성 요소가 업그레이드가 변경 될 때마다 업그레이드가 실패하고 사용자가 수동으로 제거하고 다시 설치해야합니다.

일부 스 니펫 :

<Product Id="*" Name="My Application" Language="1033" Version="!(bind.FileVersion.ClientEXE)" Manufacturer="My Company" UpgradeCode="MYGUID-b94a-44eb-8e92-9286f1d89bbd">
    <Package Id="*" Description="My Installer" Comments="Copyright My Company 2008" InstallerVersion="200" Compressed="yes" />
    <Upgrade Id="MYGUID-b94a-44eb-8e92-9286f1d89bbd">
      <UpgradeVersion Language="1033" Property="UPGRADEFOUND" Minimum="0.0.0.0" Maximum="99.99.99.99" IncludeMinimum="yes" IncludeMaximum="yes" />
    </Upgrade>


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

또한 다음 레지스트리 키에 약간의 문제가있어 때때로 제거를 제거하지 않아야하며 그 이유를 이해하지 못합니다.

      <Component Id="InstalledRegistry" Guid="SOMEGUID-0a17-4c6b-983d-8f3feb3a7724">
        <RegistryKey Id="InstalledRegKey" Root="HKMU" Key="SOFTWARE\MyCompany\Client" Action="createAndRemoveOnUninstall">
          <RegistryValue Name="Version" Type="string" Value="!(bind.FileVersion.ClientEXE)" KeyPath="yes"/>
        </RegistryKey>
      </Component>

이것이 바로 Bootstrapper가 "Renestall = All RenestallMode = Vamus"로 MSIEXEC를 시작할지 여부를 확인하는 것입니다. 따라서 제거되지 않았지만 레지스트리 키가 제거되지 않은 경우 업그레이드를 시도하고 조용히 실패합니다.

더 많은 정보가 필요한지 알려주세요


편집 : 나중에 일부 파일 만 업데이트 된 다른 문제가있었습니다. remove -existingProducts를 After = "installValidate"로 변경했습니다. 변경된 파일을 업그레이드하는 대신 이전 설치를 완전히 제거하기 때문에 약간 느리게 만듭니다 (나에게 제대로 감지하지 않은 것 같습니다).

도움이 되었습니까?

해결책

FWIW, 주요 업그레이드를 수행하기 위해 명령 선수가 필요하지 않습니다.

코드는 나에게 괜찮아 보이므로 버전 번호가 변경되지 않았을 수 있습니까? (Windows Installer는 4 부 버전 번호를 사용하는 경우 3 개의 첫 번째 부품에만 관심이 있음을 명심하십시오).

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