2 Stimmen

Wix Major Upgrade, was mache ich falsch?

Upgrades funktionieren problemlos, wenn sich keine Komponenten geändert haben, aber sobald sich eine Komponente ändert, schlägt das Upgrade fehl und der Benutzer muss es manuell deinstallieren und neu installieren.

Einige Auszüge:

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

Außerdem gibt es ein Problem mit dem folgenden Registrierungsschlüssel, der bei der Deinstallation manchmal nicht entfernt wird, und ich verstehe nicht, warum:

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

Das ist es, was der Bootstrapper prüft, um zu wissen, ob er msiexec mit "REINSTALL=ALL REINSTALLMODE=vamus" starten soll oder nicht. Wenn es also deinstalliert wurde, aber der Registrierungsschlüssel nicht entfernt wurde, würde das Setup versuchen, ein Upgrade durchzuführen und stillschweigend fehlschlagen.

Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.


Edit: Es gab danach noch ein anderes Problem, bei dem nur einige Dateien aktualisiert wurden. Ich änderte RemoveExistingProducts in After="InstallValidate" und das hat das Problem gelöst. Das macht es ein wenig langsamer, da es die vorherige Installation vollständig entfernt, anstatt nur die Dateien zu aktualisieren, die sich geändert haben (was es bei mir nicht richtig zu erkennen schien), aber es erledigt die Aufgabe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X