Domanda

Gli aggiornamenti funzionano correttamente se nessun componente è cambiato, ma ogni volta che un componente cambia l'aggiornamento non riesce e richiede all'utente di disinstallare e reinstallare manualmente.

Alcuni frammenti:

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

Inoltre, alcuni problemi con la seguente chiave di registro a volte non vengono rimossi durante la disinstallazione e non capisco perché:

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

Ecco cosa controlla il bootstrapper per sapere se avviare msiexec con " REINSTALL = ALL REINSTALLMODE = vamus " oppure no, quindi se è stato disinstallato ma la chiave di registro non è stata rimossa, l'installazione proverebbe a fare un aggiornamento e fallirà silenziosamente.

Fammi sapere se sono necessarie ulteriori informazioni


Modifica: si sono verificati altri problemi in seguito con l'aggiornamento solo di alcuni file. Modificato RemoveExistingProducts in After = " InstallValidate " e questo lo ha risolto. Lo rende un po 'più lento poiché rimuove completamente l'installazione precedente invece di aggiornare solo i file che sono cambiati (che non sembra rilevare correttamente per me) ma fa il lavoro.

È stato utile?

Soluzione

FWIW, non è necessario alcun argomento della riga di comando per eseguire un aggiornamento importante.

Il codice mi sembra ok, quindi potrebbe essere che il numero di versione non sia cambiato? (tenendo presente che Windows Installer si preoccupa solo delle tre prime parti se si utilizza un numero di versione in 4 parti)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top