Ich habe eine Anwendung und deren WiX-Installationsprogramm geschrieben und sie mithilfe von Subversion unter Versionskontrolle gestellt. Wenn das WiX-Installationsprogramm erstellt wird, soll die Versionsnummer die aktuelle Build-Version der Anwendung sein. Wie schaffe ich das? Ich habe c # verwendet, um die Anwendung zu codieren.
NB Ich verwende ccnet, um dieses Projekt zu erstellen
Ich habe dies in einem meiner Projekte getan, indem ich eine Präprozessor-Erweiterung geschrieben habe, um die Dateiversion aus meiner ausführbaren Datei zu lesen. Die WiX-Datei sieht also ungefähr so aus:
Ich habe den Code für in auf CodePlex gepostet: http://wixfileversionext.codeplex.com/
quelle
<?define ProductName="!(bind.property.ProductName)" ?><?define CompanyName="!(bind.property.Manufacturer)" ?><?define ProductVersion=!(bind.FileVersion.FileId) ?>
WoFileId
ist der Wert desId
Attributs eines IhrerFile
Elemente in einemComponent
.Wenn jemand nach einem tatsächlichen XML-Beispiel sucht, funktioniert dies mit .NET-Assemblys (und Sie müssen die Assembly- oder KeyPath-Attribute nicht ausführen). Ich habe nicht verwandten Code mit [...] Platzhaltern entfernt:
quelle
!(bind.fileVersion.MyDLL)
, verwendet sie den 3. Teil in Bezug auf den<File Id="MyDLL"...
AbschnittHier ist eine sehr einfache Möglichkeit, Ihre Bootstrapper-Bundle-Version mit einem
BeforeBuild Target
und an Ihre MyApp AssemblyVersion anzupassenDefineConstants
.Bundle.wxs:
Bootstrapper.wixproj:
quelle
var.ProductName
undvar.BuildVersion
irgendwo über deinem definiert<Bundle>
?BeforeBuild
Ziel zu ignorieren, daher muss möglicherweise explizit angegeben werden,AfterTargets="AfterResolveReferences"
ob Sie die IDESie können die Version an das MSBuild-Skript für Ihr Setup-Projekt übergeben, genauso wie Sie es für das Build-Skript der Anwendung übergeben können.
Wenn Ihr CI-System beispielsweise Variablen definiert
AppVersion
undBuildNumber
diese an Ihre MSBuild-Skripte übergibt, kann Ihr wixproj eine entsprechendeVersion
Eigenschaft erstellen, die es wie folgt an Wix weiterleitet:Die erste Definition von
Version
bietet eine Standardeinstellung für das lokale Erstellen. Was auch immer es endet, wirdVersion
in Wix zu einer Variablen. Verwenden Sie es in einer WSX-Datei wie folgt:Ich möchte die Version in die Beschreibung aufnehmen, damit Sie unabhängig vom Dateinamen problemlos im Fenster-Explorer (als Spalte in der Detailansicht oder auf der Seite Eigenschaften) nachschlagen können.
Wenn Sie die Version als Variable übergeben, haben Sie mehr Kontrolle als wenn Sie sie aus einer Datei lesen. Wenn Sie aus einer Datei lesen, erhalten Sie alle 4 Teile der programmatischen Version. Allerdings Product ist nur die ersten drei Teile verwenden entworfen.
quelle
<Version Condition=" '$(BuildVersionOfAsm)' != '' ">$(BuildVersionOfAsm)</Version>
Folgendes heraus : BuildVersionOfAsm ist eine Variable in Devops-Pipelines.Dies kommt dem, was Sie erreichen möchten, ziemlich nahe. Sehen Sie, was das Äquivalent in der Geschwindigkeitsregelung ist.
http://www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/
quelle