Windows RT Installer: add buildno to version
authorDavid Pinedo <david@lunarg.com>
Tue, 12 Jan 2016 23:14:53 +0000 (16:14 -0700)
committerDavid Pinedo <david@lunarg.com>
Tue, 12 Jan 2016 23:19:33 +0000 (16:19 -0700)
windowsRuntimeInstaller/ConfigLayersAndVulkanDLL.ps1
windowsRuntimeInstaller/InstallerRT.nsi
windowsRuntimeInstaller/README.txt

index e506047..5dbcbec 100644 (file)
@@ -39,27 +39,28 @@ $vulkandll = "vulkan-"+$majorabi+".dll"
 \r
 # The name of the versioned vulkan dll file is one of the following:\r
 #\r
-#   vulkan-<majorabi>-<major>-<minor>-<patch>-<prerelease>-<buildno>.dll\r
-#   vulkan-<majorabi>-<major>-<minor>-<patch>-<prerelease>.dll\r
+#   vulkan-<majorabi>-<major>-<minor>-<patch>-<buildno>-<prerelease>-<prebuildno>\r
+#   vulkan-<majorabi>-<major>-<minor>-<patch>-<buildno>-<prerelease>\r
+#   vulkan-<majorabi>-<major>-<minor>-<patch>-<buildno>-<prebuildno>\r
 #   vulkan-<majorabi>-<major>-<minor>-<patch>-<buildno>.dll\r
-#   vulkan-<majorabi>-<major>-<minor>-<patch>.dll\r
 #\r
-# <majorabi>, <major>, <minor>, <patch>, and <buildno> are 1 to 10 digits.\r
-# <prerelease> is [A-Za-z0-9]*\r
-# If <buildno> is present, it identifies a prerelease, and will be\r
-# considered less recent than one with the same <major>, <minor>, and\r
-# <patch> numbers without the <buildno>.\r
+# <major>, <minor>, <patch>, <buildno> and <prebuildno> are 1 to 10 numeric digits.\r
+# <prerelease> is any combination of alpha and numeric characters.\r
+# If <prerelease> and/or <prebuildno> are present, this identifies a prerelease,\r
+# and the vulkan dll file will be considered less recent than one with the same\r
+# <major>, <minor>, <patch>, <buildno> numbers without the <prerelease> and/or\r
+# <prebuildno>.\r
 \r
 \r
 # We first create an array, with one array element for each vulkan-*dll in\r
 # C:\Windows\System32, with each element containing:\r
-#     <major>=<minor>=<patch>=<prerelease>=<buildno>=\r
+#    <major>=<minor>=<patch>=<buildno>=<prerelease>=<prebuildno>=\r
 #     filename\r
-#     @<major>@<minor>@<patch>@<prerelease>@<buildno>@\r
+#    @<major>@<minor>@<patch>@<buildno>@<prerelease>@<prebuildno>@\r
 # [Note that the above three lines are one element in the array.]\r
 # The build identifiers separated by "=" are suitable for sorting, i.e.\r
-# expanded to 10 digits with leading 0s. If <prerelease> or <buildno> are\r
-# not specified, 10 z characters are substituted for them, so that they sort\r
+# expanded to 10 digits with leading 0s. If <prerelease> or <prebuildno> are\r
+# not specified, "zzzzzzzzzz" is substituted for them, so that they sort\r
 # to a position after those that do specify them.\r
 # The build identifiers separated by "@" are the original values extracted\r
 # from the file name. They are used later to find the path to the SDK\r
@@ -74,50 +75,52 @@ dir -name vulkan-$majorabi-*.dll |
        $minor=$_.Split('-')[3]\r
        $minorOrig=$minor\r
        $patch=$_.Split('-')[4]\r
+       $patchOrig=$patch\r
+       $buildno=$_.Split('-')[5]\r
 \r
-       if ($patch -match ".dll") {\r
-           # <prerelease> and <buildno> are not in the name\r
-           $patch=$patch -replace ".dll",""\r
-           $patchOrig=$patch\r
+       if ($buildno -match ".dll") {\r
+           # <prerelease> and <prebuildno> are not in the name\r
+           $buildno=$buildno -replace ".dll",""\r
+           $buildnoOrig=$buildno\r
            $prerelease="z"*10\r
            $prereleaseOrig=""\r
-           $buildno="z"*10\r
-           $buildnoOrig=""\r
+           $prebuildno="z"*10\r
+           $prebuildnoOrig=""\r
        } else {\r
 \r
           # We assume we don't have more than 5 dashes\r
 \r
           $f=$_ -replace ".dll",""\r
-          $patch=$f.Split('-')[4]\r
-          $prerelease=$f.Split('-')[5]\r
-          $buildno=$f.Split('-')[6]\r
-          if ($buildno.Length -eq 0) {\r
+          $buildno=$f.Split('-')[5]\r
+          $prerelease=$f.Split('-')[6]\r
+          $prebuildno=$f.Split('-')[7]\r
+          if ($prebuildno.Length -eq 0) {\r
               if ($prerelease -match "^[0-9]") {\r
-                  # prerelease starts with a digit, it must be the buildno\r
-                  $buildno=$prerelease\r
+                  # prerelease starts with a digit, it must be the prebuildno\r
+                  $prebuildno=$prerelease\r
                   $prerelease=""\r
               }\r
           }\r
-          $patchOrig=$patch\r
           $prereleaseOrig=$prerelease\r
-          $buildnoOrig=$buildno\r
+          $prebuildnoOrig=$prebuildno\r
 \r
           if ($prerelease.Length -eq 0) {\r
               $prerelease="z"*10\r
           }\r
-          if ($buildno.Length -eq 0) {\r
-              $buildno="z"*10\r
+          if ($prebuildno.Length -eq 0) {\r
+              $prebuildno="z"*10\r
           }\r
        }\r
 \r
        $major = $major.padleft(10,'0')\r
        $minor = $minor.padleft(10,'0')\r
        $patch = $patch.padleft(10,'0')\r
-       $prerelease = $prerelease.padleft(10,'0')\r
        $buildno = $buildno.padleft(10,'0')\r
+       $prerelease = $prerelease.padleft(10,'0')\r
+       $prebuildno = $prebuildno.padleft(10,'0')\r
 \r
        # Add a new element to the $VulkanDllList array\r
-       $VulkanDllList+="$major=$minor=$patch=$prerelease=$buildno= $_ @$majorOrig@$minorOrig@$patchOrig@$prereleaseOrig@$buildnoOrig@"\r
+       $VulkanDllList+="$major=$minor=$patch=$buildno=$prerelease=$prebuildno= $_ @$majorOrig@$minorOrig@$patch@$buildnoOrig@$prereleaseOrig@$prebuildnoOrig@"\r
    }\r
 \r
 \r
@@ -146,14 +149,15 @@ if ($VulkanDllList.Length -gt 0) {
     $major=$VulkanDLLList[-1].Split('@')[1]\r
     $minor=$VulkanDLLList[-1].Split('@')[2]\r
     $patch=$VulkanDLLList[-1].Split('@')[3]\r
-    $prerelease=$VulkanDLLList[-1].Split('@')[4]\r
-    $buildno=$VulkanDLLList[-1].Split('@')[5]\r
+    $buildno=$VulkanDLLList[-1].Split('@')[4]\r
+    $prerelease=$VulkanDLLList[-1].Split('@')[5]\r
+    $prebuildno=$VulkanDLLList[-1].Split('@')[6]\r
     $sdkname="VulkanSDK"+$major + "." + $minor + "." + $patch\r
     if ($prerelease -ne "") {\r
         $sdkname=$sdkname + "." + $prerelease\r
     }\r
-    if ($buildno -ne "") {\r
-        $sdkname=$sdkname + "." + $buildno\r
+    if ($prebuildno -ne "") {\r
+        $sdkname=$sdkname + "." + $prebuildno\r
     }\r
 }\r
 \r
index 553959b..27dab40 100644 (file)
 
 
 # Version information
-# Set VERSION_PATCH to:
-#    x.pre.y for prereleases
-#    a single number for releases
+# Set VERSION_BUILDNO to:
+#    x.pre.z for prereleases
+#    x for releases
+#
 !define PRODUCTNAME "VulkanRT"
 !define VERSION_ABI_MAJOR "1"
-!define VERSION_API_MAJOR "0"
-!define VERSION_MINOR "10"
-!define VERSION_PATCH "3.pre.1"
-#!define VERSION_PATCH "1"
-!define PRODUCTVERSION "${VERSION_API_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
+!define VERSION_API_MAJOR "1"
+!define VERSION_MINOR "0"
+!define VERSION_PATCH "1"
+!define VERSION_BUILDNO "0.pre.1"
+#!define VERSION_BUILDNO "0"
+!define PRODUCTVERSION "${VERSION_API_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_BUILDNO}"
 
 # Includes
 !include LogicLib.nsh
@@ -195,8 +197,8 @@ Section
     SetRegView 64
 
     # Set up version number for file names
-    ${StrRep} $0 ${VERSION_PATCH} "." "-"
-    StrCpy $FileVersion ${VERSION_ABI_MAJOR}-${VERSION_API_MAJOR}-${VERSION_MINOR}-$0
+    ${StrRep} $0 ${VERSION_BUILDNO} "." "-"
+    StrCpy $FileVersion ${VERSION_ABI_MAJOR}-${VERSION_API_MAJOR}-${VERSION_MINOR}-${VERSION_PATCH}-$0
 
     # Libraries
     SetOutPath $WINDIR\System32
@@ -243,7 +245,7 @@ Section
     WriteRegDword HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCTNAME}${PRODUCTVERSION}" "VersionABIMajor" ${VERSION_ABI_MAJOR}
     WriteRegDword HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCTNAME}${PRODUCTVERSION}" "VersionAPIMajor" ${VERSION_API_MAJOR}
     WriteRegDword HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCTNAME}${PRODUCTVERSION}" "VersionMinor" ${VERSION_MINOR}
-    WriteRegDword HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCTNAME}${PRODUCTVERSION}" "VersionMinor" ${VERSION_PATCH}
+    WriteRegDword HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCTNAME}${PRODUCTVERSION}" "VersionMinor" ${VERSION_PATCH}.${VERSION_BUILDNO}
     WriteRegDword HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCTNAME}${PRODUCTVERSION}" "EstimatedSize" ${ESTIMATEDSIZE}
     WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCTNAME}${PRODUCTVERSION}" "DisplayIcon" "$\"$INSTDIR\${ICOFILE}$\""
 
@@ -267,8 +269,8 @@ Section "uninstall"
     SetOutPath "$INSTDIR"
 
     # Set up version number for file names
-    ${StrRep} $0 ${VERSION_PATCH} "." "-"
-    StrCpy $FileVersion ${VERSION_ABI_MAJOR}-${VERSION_API_MAJOR}-${VERSION_MINOR}-$0
+    ${StrRep} $0 ${VERSION_BUILDNO} "." "-"
+    StrCpy $FileVersion ${VERSION_ABI_MAJOR}-${VERSION_API_MAJOR}-${VERSION_MINOR}-${VERSION_PATCH}-$0
 
     # Decrement the number of times we have been installed.
     ReadRegDword $1 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCTNAME}${PRODUCTVERSION}" "IC"
@@ -286,9 +288,8 @@ Section "uninstall"
         Delete /REBOOTOK $WINDIR\System32\vulkaninfo.exe
         Delete /REBOOTOK "$WINDIR\System32\vulkaninfo-$FileVersion.exe"
 
-        # Delete vullkan dll files: vulkan-<majorabi>.dll and vulkan-<majorabi>-<major>-<minor>-<patch>.dll
+        # Delete vullkan dll files: vulkan-<majorabi>.dll and vulkan-<majorabi>-<major>-<minor>-<patch>-<buildno>.dll
         Delete /REBOOTOK $WINDIR\System32\vulkan-${VERSION_ABI_MAJOR}.dll
-        ${StrRep} $0 ${VERSION_PATCH} "." "-"
         Delete /REBOOTOK $WINDIR\System32\vulkan-$FileVersion.dll
 
         # Run the ConfigLayersAndVulkanDLL.ps1 script to:
index e1ec989..b8cf2d3 100644 (file)
@@ -14,6 +14,7 @@ To build the Installer:
          !define VERSION_API_MAJOR\r
          !define VERSION_MINOR\r
          !define VERSION_PATCH\r
+         !define VERSION_BUILDNO\r
    \r
    4. Right click on the InstallerRT.nsi file and select "Compile NSIS Script".\r
       The Windows Vulkan Runtime Installer package file will be created in this\r