2013-08-16 6 views
16

Das Attribut "Version" in einem WiX-Bundle wird in Programme und Funktionen angezeigt. Daher sollte dies die Versionsnummer meiner tatsächlichen Anwendung sein, oder?Wie die WiX Bundle-Version der Version meiner Anwendung entspricht

In der Annahme, sie sollten gleich sein, es scheint nicht sofort offensichtlich, wie Sie dieses Update automatisch haben. Ich habe die MSI dabei nach this question, aber nicht das Bundle/Bootstrapper-Bit. Wie kann ich das Bootstrapper Bundle dazu bringen, dasselbe zu tun und die MSI-Versionsnummer zu lesen?

Antwort

22

Um Ihre erste Frage zu beantworten, gibt es keine festen Regeln dafür. Es ist also kein Muss, Ihre WIX-Bundle-Version zu aktualisieren und diese mit Ihrer MSI-Version abzugleichen.

Wie für die zweite Frage bin ich nicht wirklich sicher. Aber Sie können diese Mappe Variable versuchen:

!(bind.packageVersion.PackageID) 

EDIT ersetzen PackageID mit dem Element "ID" Attribut des Programms, das Sie installieren. Etwas wie: Version="!(bind.packageVersion.MyAppName)"

<MsiPackage SourceFile="SomePath\MyAppName.msi" Id="MyAppName"/> 

wie in diesem POST erwähnt. Überprüfen Sie auch die WIX documentation für mehr Bindemittel Variablen.

EDIT 2017.05.11 - sieht aus wie es Verwirrung um das, was die PackageID sein sollte, und ich habe die Antwort basierend auf Bob Lutz beantworten unten bearbeitet.

+3

Für Besucher, ersetzen Sie 'PackageID' durch den * Namen * des Programms, das Sie installieren. Es sollte etwa so aussehen wie "Version ="! (Bind.packageVersion.MyAwesomeApp) "' (zumindest für mich funktioniert ..) – Default

+0

Eigentlich ist es nicht der Name der App, sondern ihre ID. Siehe Bobs Antwort auf dieselbe Frage: http://stackoverflow.com/a/25828610/118878 – DenNukem

+0

'! (Bind.packageVersion.PackageID)' ruft die Paketversionsnummer der msi-Datei ab, die durch 'PackageID' repräsentiert wird. Um diese Nummer mit der Versionsnummer Ihrer Anwendung zu vergleichen, benötigen Sie auch "Version ="! (Bind.FileVersion.MyAppID) "' in Ihrer * msi Konfigurationsdatei * (Attribut des 'Product' Elements). –

11

Zur Ergänzung Isaiah4110 Antwort (ich kann noch nicht und meine bearbeiten Kommentar wurde abgelehnt):

Die PackageID für eines der Pakettypen aus dem ID-Wert kommt (zB MsiPackage, ExePackage ...) in Ihrem Kette. Um also die Versionsnummer von <MsiPackage SourceFile="SomePath\MyMsi.msi" Id="MyMsi"/> zu referenzieren, würden Sie! (Bind.packageVersion.MyMsi) verwenden!

Wenn Sie keine ID haben (wie ich), müssen Sie eine definieren.

+1

Dies sollte die akzeptierte Antwort sein. –

Verwandte Themen