From 0a3d75677ffbb1164f29d22b6c4d866bb9920246 Mon Sep 17 00:00:00 2001 From: Marc-André Lureau Date: Fri, 12 Apr 2013 03:48:39 +0200 Subject: Set installer version depending on arch --- tools/wixl/builder.vala | 14 ++++++++++---- tools/wixl/msi.vala | 15 ++++++++++++--- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/tools/wixl/builder.vala b/tools/wixl/builder.vala index 924672b..b3da2e9 100644 --- a/tools/wixl/builder.vala +++ b/tools/wixl/builder.vala @@ -239,7 +239,7 @@ namespace Wixl { } public MsiDatabase build () throws GLib.Error { - db = new MsiDatabase (); + db = new MsiDatabase (arch); foreach (var r in roots) { root = r; @@ -281,8 +281,14 @@ namespace Wixl { if (package.Keywords != null) db.info.set_keywords (package.Keywords); - if (package.InstallerVersion != null) - db.info.set_property (Libmsi.Property.VERSION, int.parse (package.InstallerVersion)); + if (package.InstallerVersion != null) { + var version = int.parse (package.InstallerVersion); + + if (arch != Arch.X86 && version < 200) + warning ("InstallerVersion >= 200 required for !x86 builds"); + + db.info.set_property (Libmsi.Property.VERSION, version); + } } @@ -349,7 +355,7 @@ namespace Wixl { var cs = new Checksum (ChecksumType.SHA1); uint8 buffer[20]; size_t buflen = buffer.length; - + cs.update (uuid_namespace.data, 16); cs.update (s.data, s.length); cs.get_digest (buffer, ref buflen); diff --git a/tools/wixl/msi.vala b/tools/wixl/msi.vala index ed3c949..f1de726 100644 --- a/tools/wixl/msi.vala +++ b/tools/wixl/msi.vala @@ -673,6 +673,8 @@ namespace Wixl { } class MsiDatabase: Object { + public Arch arch { get; construct set; } + public MsiSummaryInfo info; public MsiTableProperty table_property; public MsiTableIcon table_icon; @@ -701,6 +703,13 @@ namespace Wixl { public HashTable tables; + int get_default_version () { + if (arch == Arch.X86) + return 100; + else + return 200; + } + construct { info = new MsiSummaryInfo (); try { @@ -713,7 +722,7 @@ namespace Wixl { time_to_filetime (now ())); info.set_property (Libmsi.Property.LASTSAVED_TM, time_to_filetime (now ())); - info.set_property (Libmsi.Property.VERSION, 100); + info.set_property (Libmsi.Property.VERSION, get_default_version ()); info.set_property (Libmsi.Property.SOURCE, 2); info.set_property (Libmsi.Property.APPNAME, Config.PACKAGE_STRING); info.set_property (Libmsi.Property.SECURITY, 2); @@ -779,8 +788,8 @@ namespace Wixl { } } - public MsiDatabase () { - // empty ctor + public MsiDatabase (Arch arch) { + Object (arch: arch); } public void build (string filename) throws GLib.Error { -- cgit