Voraussetzung
Ich verwende WiX Toolset 3.5.Mein letzter Patch ging mit dem falschen UpgradeCode aus. Wie kann ich das in einem späteren Patch beheben?
Ich habe erfolgreich mehrere Patches für mein Produkt veröffentlicht, die denselben UpgradeCode und ProductCode verwenden. Die letzten beiden Patches wurden jedoch fälschlicherweise mit einem anderen UpgradeCode ausgegeben. Diese Patches wurden erfolgreich installiert, aber mein letzter Patch verweigert die Installation.
Hier ist meine Release Geschichte seit der letzten Version MSI:
- Installer (10.0.20935.0) mit Upgrade A.
- Patch (10.0.21069.0) mit Upgrade A.
- Patch (10.0 .21188.0) mit Upgrade A.
- Patch (10.0.21334.0) mit Upgrade A.
- Patch (10.0.21671.0) mit Upgrade A.
- Patch (10 .1.0.264) mit UpgradeCode B.
- Patch (10.1.0.21682) mit UpgradeCode C.
- Patch (10.2.0.0), die neueste Patch schlägt fehl, unabhängig davon, ob ich Upgrade A, B oder C.
Unten ist die Fehlermeldung, die angezeigt wird, wenn ich versuche 10.2.0.0 zu installieren Patch:
Der Aktualisierungspatch kann nicht vom Windows Installer-Dienst installiert werden, da das zu aktualisierende Programm fehlt oder der Aktualisierungspatch möglicherweise eine andere Version des Programms aktualisiert. Stellen Sie sicher, dass das zu aktualisierende Programm auf Ihrem Computer vorhanden ist und Sie über den richtigen Aktualisierungspatch verfügen.
Der Benutzer darf den Patch nicht installieren.
Frage
ich einen Patch veröffentlichen müssen, die
- erfolgreich auf die Produktion installiert (10.1.0.21682).
- ermöglicht mir, weiterhin Patches in der Zukunft zu veröffentlichen.
Wie erreiche ich das?
Was habe ich versucht?
Ich habe folgendes versucht, ohne Erfolg:
- die Upgradecode an eine sich wandelnde, das heißt derjenige von 10.0.21671.0 und früher.
- Ändern des UpgradeCode zu B, d. H. Der von 10.1.0.264.
- Ändern des UpgradeCode zu C, d. H. Der von 10.1.0.21682.
- Ändern des ProductCode.
- Erstellen eines Patches direkt von 10.0.21671.0 zu 10.2.0.0 (obwohl natürlich in der Produktion wird es auf 10.1.0.21682 ausgeführt werden).
Alle oben genannten Szenarien führen zu der gleichen Fehlermeldung (in der Prämisse angegeben). Ich habe auch die folgende Frage auf Stackoverflow:
Dies führte zu mir OnlyDetect="no"
zum <UpgradeVersion>
Elemente eines neuen <Upgrade>
Elements in meinem Produkt .wxs Datei hinzufügen:
<Upgrade Id="UpgradeCode C">
<UpgradeVersion Property="OLD_PRODUCT_FOUND"
IncludeMaximum="yes"
Maximum="10.2.0.0"
MigrateFeatures="yes"
OnlyDetect="no" />
</Upgrade>
Allerdings hatte dies genau das gleiche Ergebnis wie zuvor.
Beispielcode
ich ein kleines Projekt erstellt haben, die ich mein Szenario zu replizieren.
Unten ist die .wxs Datei für die Version 10.2.0.0 des Produkts aus meinem Testprojekt:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Patch
AllowRemoval="no"
Manufacturer="Sample Corp"
MoreInfoURL="http://www.dynamocorp.com/"
DisplayName="Sample Patch"
Description="Small Update Patch"
Classification="Update"
OptimizedInstallMode="yes">
<Media Id="8000" Cabinet="RTM.cab" CompressionLevel="none">
<PatchBaseline Id="RTM">
</PatchBaseline>
</Media>
<PatchFamilyRef Id="SamplePatchFamily"/>
</Patch>
<Fragment>
<PatchFamily Id='SamplePatchFamily' Version='10.2.0.0' Supersede='no'>
</PatchFamily>
</Fragment>
</Wix>
:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="{8CB0CC73-82B1-495E-B768-D1C38372678A}"
Name="Sample Application"
Language="1033"
Version="10.2.0.0"
Manufacturer="Sample Corporation"
UpgradeCode="{7E72848F-FC99-4737-87DE-91C738B7C5EE}">
<Package Description="Installs a file that will be patched."
Comments="This Product does not install any executables"
InstallerVersion="200"
Compressed="yes" />
<Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
<FeatureRef Id="SampleProductFeature"/>
</Product>
<Fragment>
<Feature Id="SampleProductFeature" Title="Sample Product Feature" Level="1">
<ComponentRef Id="Sample.txt" />
</Feature>
</Fragment>
<Fragment>
<DirectoryRef Id="SampleProductFolder">
<Component Id="Sample.txt" Guid="{d738b2a9-0dbc-4381-9efd-5801723b1569}" DiskId="1">
<File Id="Sample.txt" Name="Sample.txt" Source=".\$(var.Version)\Sample.txt" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="SampleProductFolder" Name="Patch Sample Directory">
</Directory>
</Directory>
</Directory>
</Fragment>
</Wix>
Unterhalb der .wxs Datei für den Patch auf Version 10.2.0.0 ist
In meinem Testprojekt ändert sich nur der UpgradeCode und die Version zwischen den Patches. Dies gilt auch für den Patch 7, der das Problem einführte. – Stephan