1This folder contains the files required for building the Windows Vulkan
2Runtime Installer Package.
3
4To build the Vulkan Runtime Installer:
5
6    1. Install Nullsoft Install System version 3.0b1 or greater. (Available
7       from http://nsis.sourceforge.net/Download.)
8
9    2. Install the NSIS AccessControl plug-in. (Available from
10       http://nsis.sourceforge.net/AccessControl_plug-in.)
11
12    3. Build Vulkan-LoaderAndValidationLayers as described in ../BUILD.md.
13
14    4. Edit the InstallerRT.nsi file in this folder and modify the following
15       lines to match the version of the Windows Vulkan Runtime you wish to
16       build:
17
18          !define VERSION_ABI_MAJOR
19          !define VERSION_API_MAJOR
20          !define VERSION_MINOR
21          !define VERSION_PATCH
22          !define VERSION_BUILDNO
23          !define PUBLISHER
24
25    5. Edit the CreateInstaller.sh file and replace SIGNFILE with your
26       command and necessary args for signing an executable. If you don't
27       wish to sign the uninstaller, you can comment out that line.
28
29    6. Run the CreateInstaller.sh script from a Cygwin bash command prompt.
30       The Cygwin bash shell must be running as Administrator.  The Windows
31       Vulkan Runtime Installer package file will be created in this folder.
32       The name of the installer file is VulkanRT-<version>-Installer.exe.
33
34
35Some notes on the behavior of the Windows Vulkan Runtime Installer:
36
37   o  When VulkanRT-<version>-Installer.exe is run on a 64-bit version
38      of Windows, it will install both the 32 and 64 bit versions of
39      the Vulkan runtime.  When it is run on a 32-bit version of
40      Windows, it will install the 32 bit version of the Vulkan runtime.
41
42   o  The VulkanRT-<version>-Installer.exe created with the above steps
43      can be run in silent mode by using the /S command line option when
44      invoking the installer.
45
46   o  If the Vulkan Runtime is already installed on the system,
47      subsequent installs of the same version of the Vulkan Runtime
48      will be installed to the same folder to which it is was
49      previously installed.
50
51   o  The Vulkan Runtime Installer uses "counted" installs. If the
52      same version of the Vulkan Runtime is installed multiple times
53      on a system, the Vulkan Runtime must be uninstalled the same
54      number of times before it is completely removed from the system.
55
56   o  If the Vulkan Runtime is already installed on a system and a
57      different version is subsequently installed, both versions will
58      then co-exist on the system. The Vulkan Runtime Installer does
59      not remove prior versions of the Vulkan Runtime when a newer
60      version is installed.
61
62   o  The Vulkan Runtime can be uninstalled from Control Panel ->
63      Programs and Features. It can also be uninstalled by running
64      UninstallVulkanRT.exe in the install folder. The uninstall can
65      be run in silent mode by using the /S command line option
66      when invoking the uninstaller. The location of the the
67      UninstallVulkanRT.exe can be found in the registry value
68      HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\
69      VulkanRT<version>\UninstallString
70
71   o  The Vulkan Runtime Installer installs the Vulkan loader as
72      C:\Windows\System32\vulkan-<version>.dll. It then compares all
73      versions of the loader in C:\Windows\System32 that have the
74      same VERSION_ABI_MAJOR as the version being installed. It selects
75      the most recent one of these loader files and copies it to
76      C:\Windows\System32\vulkan-<VERSION_ABI_MAJOR>.dll.  For example,
77      during the install of Vulkan Runtime version 2.0.1.1, the
78      following files might be present in C:\Windows\System32:
79
80           vulkan-1-1-0-2-3.dll
81           vulkan-1-2-0-1-0.dll
82           vulkan-1-2-0-1-1.dll
83
84     [Note that the first "1" in the above files is VERSION_ABI_MAJOR.
85     The other numbers identify the release version.] The installer
86     will copy the most recent one of these files (in this case
87     vulkan-1-2-0-1-1.dll) to vulkan-1.dll. This is repeated for
88     C:\Windows\SYSWOW64 on 64-bit Windows systems to set up the
89     32-bit loader.
90
91   o The Vulkan Runtime Installer returns an exit code of 0-9
92     to indicate success. All other exit codes indicate failure.
93     If the Installer returns a failure exit code, the Installer
94     will have attempted to uninstall whatever it installed before
95     it detected an error.
96
97   o The Vulkan Runtime Uninstaller returns an exit code of 0-9
98     to indicate success. An exit code of 3 indicates success, but
99     a reboot is required to complete the uninstall.  All other
100     exit codes indicate failure.  If the Uninstaller returns a
101     failure exit code, it will have simply exited when the failure
102     was detected and will not have attempted to do further uninstall
103     work.
104
105   o The ProductVersion of the installer executable (right click on
106     the executable, Properties, then the Details tab) can be used
107     by other installers/uninstallers to find the path to the
108     uninstaller for the Vulkan Runtime in the Windows registry.
109     This ProductVersion should always be identical to <version> in:
110
111       HKLM\Software\Microsoft\Windows\CurrentVersion\Uininstall\VulkanRT<version>\UinstalString
112