Saya menulis sebuah aplikasi dan penginstal WiX-nya dan meletakkannya di bawah kendali versi menggunakan subversi. Ketika penginstal WiX membangun, saya ingin nomor versinya menjadi versi build aplikasi saat ini. Bagaimana saya mencapai ini? Saya menggunakan c # untuk kode aplikasi.
NB Saya menggunakan ccnet untuk membangun proyek ini
Saya melakukan ini di salah satu proyek saya dengan menulis ekstensi preprocessor untuk membaca versi file dari executable saya. Jadi file WiX terlihat seperti:
Saya telah memposting kode untuk di pada CodePlex: http://wixfileversionext.codeplex.com/
sumber
<?define ProductName="!(bind.property.ProductName)" ?><?define CompanyName="!(bind.property.Manufacturer)" ?><?define ProductVersion=!(bind.FileVersion.FileId) ?>
Di manaFileId
nilaiId
atribut salah satuFile
elemen Anda di dalam aComponent
.Jika seseorang mencari contoh XML yang sebenarnya, ini berfungsi dengan .NET assemblies (dan Anda tidak harus melakukan atribut Assembly atau KeyPath). Saya menghapus kode yang tidak terkait dengan tempat tempat [...]:
sumber
!(bind.fileVersion.MyDLL)
itu menggunakan bagian ke-3 dalam referensi ke<File Id="MyDLL"...
bagianBerikut adalah cara yang sangat sederhana untuk mendapatkan Versi Bundel Bootstrapper Anda agar sesuai dengan MyApp AssemblyVersion Anda menggunakan a
BeforeBuild Target
danDefineConstants
.Bundle.wxs:
Bootstrapper.wixproj:
sumber
var.ProductName
danvar.BuildVersion
suatu tempat di atas Anda<Bundle>
?BeforeBuild
target sehingga mungkin perlu untuk menentukan secara eksplisitAfterTargets="AfterResolveReferences"
jika Anda sedang membangun di IDEAnda bisa meneruskan versi ke skrip MSBuild untuk proyek setup Anda sama seperti Anda bisa lulus untuk skrip build aplikasi.
Misalnya, jika sistem CI Anda mendefinisikan variabel
AppVersion
danBuildNumber
, dan meneruskannya ke skrip MSBuild Anda, wixproj Anda dapat membuatVersion
properti terkait yang meneruskannya ke Wix seperti ini:Definisi pertama dari
Version
memberikan default ketika Anda membangun secara lokal. Apapun itu akhirnya menjadiVersion
variabel di Wix. Gunakan dalam file wsx seperti ini:Saya ingin memasukkan versi dalam deskripsi sehingga mudah untuk mencari dari Window Explorer (sebagai kolom dalam tampilan Detail atau pada halaman Properties) terlepas dari nama file.
Melewati versi sebagai variabel memberi Anda lebih banyak kontrol daripada membacanya dari file. Ketika Anda membaca dari file, Anda mendapatkan semua 4 bagian dari versi program. Namun, ProductVersion hanya dirancang untuk menggunakan 3 bagian pertama.
sumber
<Version Condition=" '$(BuildVersionOfAsm)' != '' ">$(BuildVersionOfAsm)</Version>
sementara BuildVersionOfAsm adalah variabel dalam pipa-pipa devops.Ini terlihat cukup dekat dengan apa yang ingin Anda capai. Lihat apa yang setara dalam kontrol pelayaran.
http://www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/
sumber