1 | <?xml version="1.0" encoding="UTF-8"?>
|
---|
2 | <!--
|
---|
3 | #
|
---|
4 | # Copyright (C) 2008-2020 Oracle Corporation
|
---|
5 | #
|
---|
6 | # This file is part of VirtualBox Open Source Edition (OSE), as
|
---|
7 | # available from http://www.virtualbox.org. This file is free software;
|
---|
8 | # you can redistribute it and/or modify it under the terms of the GNU
|
---|
9 | # General Public License (GPL) as published by the Free Software
|
---|
10 | # Foundation, in version 2 as it comes in the "COPYING" file of the
|
---|
11 | # VirtualBox OSE distribution. VirtualBox OSE is distributed in the
|
---|
12 | # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
|
---|
13 | #
|
---|
14 | -->
|
---|
15 | <installer-gui-script minSpecVersion="1.0">
|
---|
16 | <title>VirtualBox_title</title>
|
---|
17 | <options customize="allow" allow-external-scripts="yes" rootVolumeOnly="true" hostArchitectures="i386"/>
|
---|
18 | <installation-check script="checkPrerequisite()"></installation-check>
|
---|
19 | <domains enable_anywhere="false" enable_currentUserHome="false" enable_localSystem="true"/>
|
---|
20 | <script>
|
---|
21 | //<![CDATA[
|
---|
22 | /* js:pkmk:start */
|
---|
23 | function checkPrerequisite()
|
---|
24 | {
|
---|
25 | try
|
---|
26 | {
|
---|
27 | test = system.version['ProductVersion'];
|
---|
28 | system.log("OS version detected: " + test);
|
---|
29 | result = (system.compareVersions(test, '10.9') >= 0);
|
---|
30 | } catch (e) { system.log(e); result = false; }
|
---|
31 |
|
---|
32 | if (!result)
|
---|
33 | {
|
---|
34 | my.result.type = 'Fatal';
|
---|
35 | my.result.title = system.localizedString('UNSUPPORTED_OS_TLE');
|
---|
36 | my.result.message = system.localizedString('UNSUPPORTED_OS_MSG');
|
---|
37 | return result;
|
---|
38 | }
|
---|
39 |
|
---|
40 | try
|
---|
41 | {
|
---|
42 | test = system.sysctl('hw.machine');
|
---|
43 | system.log("Hardware architecture detected: " + test);
|
---|
44 | result = (test == 'x86_64');
|
---|
45 | } catch (e) { system.log(e); result = false; }
|
---|
46 |
|
---|
47 | if (!result)
|
---|
48 | {
|
---|
49 | my.result.type = 'Fatal';
|
---|
50 | my.result.title = system.localizedString('UNSUPPORTED_HW_MACHINE_TLE');
|
---|
51 | my.result.message = system.localizedString('UNSUPPORTED_HW_MACHINE_MSG');
|
---|
52 | return result;
|
---|
53 | }
|
---|
54 |
|
---|
55 | try
|
---|
56 | {
|
---|
57 | /* The following shell script uses tools which were added in 10.8
|
---|
58 | (Mountain Lion) and later, in particular pgrep and pkill. */
|
---|
59 | if (system.compareVersions(system.version['ProductVersion'], '10.8') >= 0)
|
---|
60 | {
|
---|
61 | /* Embedded scripts are not available here. So, just do a
|
---|
62 | command line checking if any VBoxXPCOMIPCD has more than one
|
---|
63 | client, and if there are none, kill all the usual suspects to
|
---|
64 | get a clean slate. This is done because the VirtualBox event
|
---|
65 | handling had a bug which allowed no longer present passive
|
---|
66 | event listeners to block VBoxSVC processes from exiting until
|
---|
67 | the waiting time was elapsed. In the extreme case this was
|
---|
68 | infinitely long, blocking updates. */
|
---|
69 | system.run('/bin/sh', '-c', 'pids=`/usr/bin/pgrep VBoxXPCOMIPCD` rc=0; [ -z "$pids" ] && rc=1; for i in $pids; do c=`/usr/sbin/lsof -p $i | /usr/bin/grep -E \'^[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+ +unix\' | wc -l`; [ $c -le 2 ] || rc=1; done; if [ $rc -eq 0 ]; then /usr/bin/pkill -KILL \'^(VirtualBox)|(VBoxNetDHCP)|(VBoxNetNAT)|(VBoxHeadless)|(VBoxXPCOMIPCD)|(VBoxSVC)$\'; sleep 1; fi');
|
---|
70 | }
|
---|
71 | } catch (e) { system.log(e); }
|
---|
72 |
|
---|
73 | try
|
---|
74 | {
|
---|
75 | /* Embedded scripts are not available here. So, just do a command
|
---|
76 | line checking for running VMs instead. */
|
---|
77 | rcScript = system.run('/bin/sh', '-c', '/bin/ps -e | /usr/bin/grep -E \'[V]irtualBox.*startvm|[V]BoxNetDHCP|[V]BoxNetNAT|[V]BoxHeadless|[V]BoxSVC\'');
|
---|
78 | result = (rcScript != 0);
|
---|
79 | system.log("system.run /bin/sh .. returned: " + rcScript + " result=" + result);
|
---|
80 | } catch (e) { system.log(e); result = false; }
|
---|
81 |
|
---|
82 | if (!result)
|
---|
83 | {
|
---|
84 | /* Temporary instrumentation for finding out with some probability
|
---|
85 | * who keeps VBoxSVC busy (unix socket to VBoxXPCOMIPCD open). Needs
|
---|
86 | * very little time (unlike a full lsof) and causes bearable amount
|
---|
87 | * of messages to install.log so that it can stay in for a while. */
|
---|
88 | try
|
---|
89 | {
|
---|
90 | system.run('/usr/sbin/lsof', '-l', '-U');
|
---|
91 | } catch (e) { system.log(e); }
|
---|
92 |
|
---|
93 | my.result.type = 'Fatal';
|
---|
94 | my.result.title = system.localizedString('RUNNING_VMS_TLE');
|
---|
95 | my.result.message = system.localizedString('RUNNING_VMS_MSG');
|
---|
96 | return result;
|
---|
97 | }
|
---|
98 |
|
---|
99 | system.log("result:" + result);
|
---|
100 | return result;
|
---|
101 | }
|
---|
102 | /* js:pkmk:end */
|
---|
103 | //]]>
|
---|
104 | </script>
|
---|
105 | <background file="background.tif" alignment="topleft" scaling="none"/>
|
---|
106 | <welcome file="Welcome.rtf" mime-type="text/rtf" uti="public.rtf"/>
|
---|
107 | <choices-outline>
|
---|
108 | <line choice="choiceVBoxKEXTs"></line>
|
---|
109 | <line choice="choiceVBox"></line>
|
---|
110 | <line choice="choiceVBoxCLI"></line>
|
---|
111 | <line choice="choiceOSXFuseCore"></line>
|
---|
112 | </choices-outline>
|
---|
113 | <choice id="choiceVBoxKEXTs" title="choiceVBoxKEXTs_title" description="choiceVBoxKEXTs_msg" start_selected="true" start_enabled="false" start_visible="true">
|
---|
114 | <pkg-ref id="org.virtualbox.pkg.vboxkexts"></pkg-ref>
|
---|
115 | </choice>
|
---|
116 | <choice id="choiceVBox" title="choiceVBox_title" description="choiceVBox_msg" start_selected="true" start_enabled="false" start_visible="true">
|
---|
117 | <pkg-ref id="org.virtualbox.pkg.virtualbox"></pkg-ref>
|
---|
118 | </choice>
|
---|
119 | <choice id="choiceVBoxCLI" title="choiceVBoxCLI_title" description="choiceVBoxCLI_msg" start_selected="true" start_enabled="true" start_visible="true">
|
---|
120 | <pkg-ref id="org.virtualbox.pkg.virtualboxcli"></pkg-ref>
|
---|
121 | </choice>
|
---|
122 | <choice id="choiceOSXFuseCore" title="choiceOSXFuseCore_title" description="choiceOSXFuseCore_msg" start_selected="true" start_enabled="true" start_visible="true">
|
---|
123 | <pkg-ref id="com.github.osxfuse.pkg.Core"></pkg-ref>
|
---|
124 | </choice>
|
---|
125 | <pkg-ref id="org.virtualbox.pkg.vboxkexts" auth="Root">file:./Contents/Packages/VBoxKEXTs.pkg</pkg-ref>
|
---|
126 | <pkg-ref id="org.virtualbox.pkg.virtualbox" auth="Root">file:./Contents/Packages/VirtualBox.pkg</pkg-ref>
|
---|
127 | <pkg-ref id="org.virtualbox.pkg.virtualboxcli" auth="Root">file:./Contents/Packages/VirtualBoxCLI.pkg</pkg-ref>
|
---|
128 | <pkg-ref id="com.github.osxfuse.pkg.Core" auth="Root">file:./Contents/Packages/OSXFuseCore.pkg</pkg-ref>
|
---|
129 | </installer-gui-script>
|
---|
130 |
|
---|