summaryrefslogtreecommitdiffhomepage
path: root/installer/opentrack-installer.iss
diff options
context:
space:
mode:
authorXavier Hallade <xavier.hallade@intel.com>2016-04-27 09:50:36 +0200
committerXavier Hallade <xavier.hallade@intel.com>2016-04-27 09:50:36 +0200
commitf3d62b23b02bb27cbb0f0f0302001f0710992df2 (patch)
treeada631f9bb767c2f55fd46b422cf83a1d2ba32fb /installer/opentrack-installer.iss
parentfb7e86d02e1d9a15dedad048aa477c1985423057 (diff)
installer: propose install of RealSense runtime on compatible systems
When an user installs opentrack on a system which has RealSense F200 or SR300 camera drivers installed, the installer now proposes to install the proper runtime after having displayed its EULA.
Diffstat (limited to 'installer/opentrack-installer.iss')
-rw-r--r--installer/opentrack-installer.iss94
1 files changed, 93 insertions, 1 deletions
diff --git a/installer/opentrack-installer.iss b/installer/opentrack-installer.iss
index c29bc4a3..cf963bed 100644
--- a/installer/opentrack-installer.iss
+++ b/installer/opentrack-installer.iss
@@ -8,6 +8,8 @@
#define MyAppURL "http://github.com/opentrack/opentrack"
#define MyAppExeName "opentrack.exe"
+#include "non-ui-blocking-exec.iss"
+
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
@@ -49,4 +51,94 @@ Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
[Run]
-Filename: "{app}\{#MyAppExeName}"; Flags: nowait postinstall skipifsilent; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"
+Filename: "timeout.exe"; Parameters: "/t 0"; Flags: runhidden; StatusMsg: Installing RealSense Runtime. This may take several minutes.; Check: RSCameraDriverDetectedAndEulaAccepted
+Filename: "{app}\{#MyAppExeName}"; Flags: nowait postinstall skipifsilent; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}";
+
+[Code]
+var
+ EulaAccepted:Boolean;
+ RSCameraDriverDetected:Boolean;
+ EULAPage: TOutputMsgMemoWizardPage;
+ EULAAcceptRadioButton: TNewRadioButton;
+ EULARefuseRadioButton: TNewRadioButton;
+
+function IsRSCameraDriverPresent():Boolean;
+var
+ Version:String;
+begin
+ result := RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Intel\RSSDK\Components\ivcam',
+ 'Version', Version) or RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Wow6432Node\Intel\RSDCM\SR300',
+ 'Version', Version)
+end;
+
+procedure EULAAcceptRefuseButtonStateUpdated(Sender: TObject);
+begin
+ EulaAccepted := EULAAcceptRadioButton.Checked
+end;
+
+
+function RSCameraDriverDetectedAndEulaAccepted():Boolean;
+begin
+result := RSCameraDriverDetected and EulaAccepted;
+end;
+
+procedure DoPostInstall();
+var
+ Version: String;
+ ExecInfo: TShellExecuteInfo;
+begin
+if RSCameraDriverDetectedAndEulaAccepted then
+ begin
+ NonUiBlockingExec(ExpandConstant('{app}\contrib\intel_rs_sdk_runtime_websetup_8.0.24.6528.exe'),
+ '--silent --no-progress --acceptlicense=yes --front --finstall=core,face3d --fnone=all');
+ end
+end;
+
+procedure CurStepChanged(CurStep: TSetupStep);
+ begin
+ if CurStep = ssPostInstall then
+ begin
+ DoPostInstall()
+ end
+end;
+
+procedure InitializeWizard();
+var
+ EULAText: String;
+begin
+
+EulaAccepted := false
+RSCameraDriverDetected := IsRSCameraDriverPresent()
+
+if RSCameraDriverDetected then
+ begin
+ ExtractTemporaryFile('RS_EULA.rtf');
+ if LoadStringFromFile(ExpandConstant('{tmp}\RS_EULA.rtf'), EULAText) then
+ begin
+ EULAPage := CreateOutputMsgMemoPage(wpLicense,
+ 'Information', 'Intel RealSense End-User License agreement',
+ 'Opentrack may use the Intel RealSense SDK Runtime on your compatible system. To get it installed, please accept its EULA:',
+ EULAText);
+ EULAPage.RichEditViewer.Height := ScaleY(148);
+ EULAAcceptRadioButton := TNewRadioButton.Create(EULAPage);
+ EULAAcceptRadioButton.Left := EULAPage.RichEditViewer.Left;
+ EULAAcceptRadioButton.Top := EULAPage.Surface.ClientHeight - ScaleY(41);
+ EULAAcceptRadioButton.Width := EULAPage.RichEditViewer.Width;
+ EULAAcceptRadioButton.Parent := EULAPage.Surface;
+ EULAAcceptRadioButton.Caption := SetupMessage(msgLicenseAccepted);
+ EULARefuseRadioButton := TNewRadioButton.Create(EULAPage);
+ EULARefuseRadioButton.Left := EULAPage.RichEditViewer.Left;
+ EULARefuseRadioButton.Top := EULAPage.Surface.ClientHeight - ScaleY(21);
+ EULARefuseRadioButton.Width := EULAPage.RichEditViewer.Width;
+ EULARefuseRadioButton.Parent := EULAPage.Surface;
+ EULARefuseRadioButton.Caption := SetupMessage(msgLicenseNotAccepted);
+
+ // Set the states and event handlers
+ EULAAcceptRadioButton.OnClick := @EULAAcceptRefuseButtonStateUpdated;
+ EULARefuseRadioButton.OnClick := @EULAAcceptRefuseButtonStateUpdated;
+ EULARefuseRadioButton.Checked := true;
+ EulaAccepted := EULAAcceptRadioButton.Checked
+ //TODO: if camera is detected, activate RS EULA page and RSSDK install, save if it was accepted or not.
+ end
+ end
+end; \ No newline at end of file