A light installer for High Fidelity VR. Built using NSIS.
This section of the README is current as of 2017-06-26 1:30 PM PDT. It'll be updated as the installer logic matures.
When a user runs High Fidelity Jaws Event.exe
, the following behavior occurs:
- We ask for administrator permissions so that it can perform various operations (like reading from the registry and creating files).
- We **copy the Jaws Event installer EXE file to
%AppData%\High Fidelity\Jaws\High Fidelity Jaws Event.exe
, then create shortcuts to that file on the desktop and in the Start menu. - We verify that the "correct" version of High Fidelity Interface is installed on the user's computer.
- We read from the registry at
HKEY_CLASSES_ROOT\hifi\DefaultIcon
to determine the path ofinterface.exe
that the user installed most recently- (FYI:
HKCR\<protocol>\shell\open\command\(Default)
is where the registry keys go that determine what to do when you click on, say, ahifi://
oritunes://
link)
- (FYI:
- If Interface is found at that path:
- We check if Interface or Sandbox is running, and kill those processes if they are
- We run that
interface.exe
with the--protocolVersion
command-line switch - If the version matches the valid version number hard-coded into the installer (currently dev-download / master):
- We set the
$MustInstallHiFi
flag tofalse
and move on to the steps below...
- We set the
- If the version does not match:
- If we determine that the
interface.exe
does come from Steam:- We alert the user that Interface is out of date. We tell them to update High Fidelity through Steam, then press "Retry" in the installer to continue.
- If the user presses "Retry", we go back to the top-level verification step above.
- If we determine that
interface.exe
does not come from Steam:- We set the
$MustInstallHiFi
flag totrue
and move on to the steps below...
- We set the
- If we determine that the
- We read from the registry at
- We verify that the user has the "correct" custom content cached on their hard drive.
- If the user does have the "correct" custom content cached on their hard drive:
- We continue to the next step.
- If the user does not have the "correct" custom content cached on their hard drive:
- We will download the correct set of custom content from the High Fidelity website and place it in the proper directory.
- If the user does have the "correct" custom content cached on their hard drive:
- If the
$MustInstallHiFi
flag is set totrue
:- We will start downloading the correct version of the High Fidelity installer to the user's
TEMP
directory. The installer will display download status. - Once the download is complete, we will silently run the full High Fidelity Interface installer while displaying some messaging to the user.
- No questions are asked of the user. The values from previous installations are used, if any (for installing sandbox, creating start menus, etc.). However,
- If there is no previous installation, we do not install Sandbox. (If there was a previous installation that specifically included Sandbox, we do update it.)
- Regardless of whatever was done before, we do not run Interface or Sandbox at the end of this step.
- Once the full High Fidelity Interface installer completes, the light installer will re-verify that the correct version of Interface is installed on the system.
- If, at this point, the correct version of Interface is not installed, the light installer will fail and instruct the user to restart the light installer.
- If the correct version of Interface is installed, we continue.
- We will start downloading the correct version of the High Fidelity installer to the user's
- We, again determine the (possibly new) path of
interface.exe
, then runinterface.exe
using the following command:interface.exe --url hifi://dev-playa/event --suppress-settings-reset --skipTutorial --cache <content_set_dir> --scripts <content_set_dir>\scripts
.- The cache part doesn't work yet, so we're not yet getting that acceleration. But that's Interface issue, not a micro-installer issue.
- Now that the user has gotten this far in the installer, the path to
interface.exe
should be either the one installed by the installer in the steps above, OR the path the installer verified to be up-to-date enough for the event.
Please see TESTS.md for a cumulative test plan of the High Fidelity Express installer.