Question

Les mises à niveau fonctionnent correctement si aucun composant n'a été modifié, mais chaque fois qu'un composant change, la mise à niveau échoue et oblige l'utilisateur à désinstaller et à réinstaller manuellement.

Quelques extraits:

<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>

De plus, vous rencontrez parfois des problèmes avec la clé de registre suivante, qui ne supprime parfois pas lors de la désinstallation et je ne comprends pas pourquoi:

      <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>

C’est ce que le programme d’installation vérifie pour savoir s’il faut lancer msiexec avec " REINSTALL = ALL REINSTALLMODE = vamus " ou pas, donc si elle a été désinstallée mais que la clé de registre n’a pas été supprimée, l’installation essaierait d’effectuer une mise à niveau et échouerait en silence.

Indiquez-moi si d'autres informations sont nécessaires

Modifier: Il y a eu un autre problème par la suite, seuls certains fichiers ayant été mis à jour. Modification de RemoveExistingProducts en After = " InstallValidate " et cela a résolu cela. Cela ralentit un peu, car cela supprime complètement l'installation précédente au lieu de simplement mettre à niveau les fichiers modifiés (ce que cela ne semble pas détecter correctement pour moi), mais le travail est fait.

Était-ce utile?

La solution

FWIW, vous n'avez besoin d'aucun argument de ligne de commande pour effectuer une mise à niveau majeure.

Le code me convient, alors le numéro de version n’est-il pas modifié? (N'oubliez pas que Windows Installer ne se soucie que des trois premières parties si vous utilisez un numéro de version en 4 parties)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top