2010-08-06 4 views
8

Ich versuche, eine Funktion zu meiner Winforms-App hinzuzufügen, die die Versionsnummer auf dem Hauptbildschirm ausgibt. Ich habe dies derzeit:.NET-Versionsnummer (Installer-Version)

txtVersion.Text = ProductVersion.ToString(); 

Welche sagt mir die Version des Programms - alles gut und gut.

Was ich jedoch am liebsten tun würde, ist die Version des Installer-Programms, das zum Erstellen der MSI verwendet wurde. Gibt es eine Möglichkeit, dies entweder innerhalb des installierten Programms abzufragen oder die Informationen während der Installation irgendwie zu übertragen?

Antwort

3

Es klingt, als ob Sie die ProductVersion property möchten. Sie können das zur Laufzeit erhalten, indem Sie die ::MsiGetProductInfo() function aufrufen, die den ProductCode für das MSI bereitstellt, das Sie installiert hat.

Wenn für Sie nicht funktioniert, dann ist das Schreiben der ProductVersion in einen Registrierungsschlüssel und das Lesen dieser zur Laufzeit ziemlich populär. Sie können diesen Registrierungsschlüssel auch verwenden, um die hier beschriebenen ICE38-Probleme zu beheben: http://robmensching.com/blog/posts/2007/4/27/How-to-create-an-uninstall-shortcut-and-pass-all-the

+0

Wird der ProductCode nicht jedes Mal aktualisiert, wenn die Versionsnummer erhöht wird? –

+0

Wenn Sie größere Upgrades machen, ja. Wenn Sie größere Upgrades verwenden, können Sie :: MsiEnumRelatedProducts() verwenden und Ihren UpgradeCode (der sich nicht ändern sollte) an den ProductCode übergeben und dann die anderen APIs verwenden. Wiederum nicht trivial, aber auch nicht wirklich schwer. –

0

Sie können die Version während der Installation in einem Registrierungsschlüssel speichern und dann den Registrierungsschlüssel aus dem Programm abfragen.

0

Sie können sehr gut tun von Ihrem Installationsprogramm (MSI) durch benutzerdefinierte Aktionen Wix3 mit

Nach Links können Sie den Einstieg

WIX at Sourceforge

Wix Tutorial

+1

Benutzerdefinierte Aktion ist hierfür nicht erforderlich, da [ProductVersion] eingebaut ist. Benutzerdefinierte Aktionen sollten um jeden Preis vermieden werden. –

1

Es ist besser, nicht app nehmen Version aus dem Installer, aber nehmen Installer-Version aus der App (AssemblyInfo.cs), IMO.