mirror of
https://github.com/LizardByte/libvirtualhid.git
synced 2026-10-24 12:07:24 +09:00
72 lines
3.7 KiB
Bash
Executable File
72 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
image_root="$(cd "$(dirname "$0")" && pwd)"
|
|
bundle_id="dev.lizardbyte.app.libvirtualhid"
|
|
support_directory="/Library/Application Support/libvirtualhid"
|
|
launchd_plist="${bundle_id}.plist"
|
|
broker_app="${image_root}/VirtualHIDBroker.app"
|
|
control_app="${image_root}/VirtualHIDControl.app"
|
|
installed_broker_app="/Applications/VirtualHIDBroker.app"
|
|
installed_control_app="/Applications/VirtualHIDControl.app"
|
|
legacy_broker_app="${support_directory}/VirtualHIDBroker.app"
|
|
service_plist="/Library/LaunchDaemons/${launchd_plist}"
|
|
|
|
if [[ ! -d "${broker_app}" ]]; then
|
|
echo "The virtual HID broker is missing from this disk image." >&2
|
|
exit 1
|
|
fi
|
|
if [[ ! -d "${control_app}" ]]; then
|
|
echo "The virtual HID control app is missing from this disk image." >&2
|
|
exit 1
|
|
fi
|
|
|
|
/usr/bin/codesign --verify --deep --strict "${broker_app}"
|
|
/usr/bin/codesign --verify --deep --strict "${control_app}"
|
|
/usr/bin/sudo -v
|
|
if [[ -L "${support_directory}" ]]; then
|
|
echo "The libvirtualhid state directory must not be a symbolic link." >&2
|
|
exit 1
|
|
fi
|
|
/usr/bin/sudo /bin/mkdir -p "${support_directory}" /usr/local/lib /usr/local/include /usr/local/share/licenses
|
|
/usr/bin/sudo /usr/sbin/chown root:wheel "${support_directory}"
|
|
/usr/bin/sudo /bin/chmod 700 "${support_directory}"
|
|
/usr/bin/sudo /bin/launchctl bootout "system/${bundle_id}" 2>/dev/null || true
|
|
/usr/bin/sudo /bin/rm -rf "${legacy_broker_app}" "${installed_broker_app}" "${installed_control_app}"
|
|
/usr/bin/sudo /usr/bin/ditto "${broker_app}" "${installed_broker_app}"
|
|
/usr/bin/sudo /usr/bin/ditto "${control_app}" "${installed_control_app}"
|
|
/usr/bin/sudo /usr/sbin/chown -R root:wheel "${installed_broker_app}" "${installed_control_app}"
|
|
/usr/bin/sudo /bin/chmod -R a+rX "${installed_broker_app}" "${installed_control_app}"
|
|
/usr/bin/sudo /bin/chmod -R go-w "${installed_broker_app}" "${installed_control_app}"
|
|
/usr/bin/sudo /usr/bin/codesign --verify --deep --strict "${installed_broker_app}"
|
|
/usr/bin/sudo /usr/bin/codesign --verify --deep --strict "${installed_control_app}"
|
|
/usr/bin/sudo /usr/bin/install -m 0644 \
|
|
"${image_root}/${launchd_plist}" "${service_plist}"
|
|
/usr/bin/sudo /usr/sbin/chown root:wheel "${service_plist}"
|
|
|
|
if [[ -d "${image_root}/usr/local/include/libvirtualhid" ]]; then
|
|
/usr/bin/sudo /usr/bin/ditto "${image_root}/usr/local/include/libvirtualhid" /usr/local/include/libvirtualhid
|
|
fi
|
|
if [[ -f "${image_root}/usr/local/lib/libvirtualhid.a" ]]; then
|
|
/usr/bin/sudo /usr/bin/install -m 0644 "${image_root}/usr/local/lib/libvirtualhid.a" /usr/local/lib/libvirtualhid.a
|
|
fi
|
|
if [[ -f "${image_root}/usr/local/bin/libvirtualhid-license" ]]; then
|
|
/usr/bin/sudo /bin/mkdir -p /usr/local/bin
|
|
/usr/bin/sudo /usr/bin/install -m 0755 "${image_root}/usr/local/bin/libvirtualhid-license" /usr/local/bin/libvirtualhid-license
|
|
fi
|
|
if [[ -d "${image_root}/usr/local/lib/cmake/libvirtualhid" ]]; then
|
|
/usr/bin/sudo /bin/mkdir -p /usr/local/lib/cmake
|
|
/usr/bin/sudo /usr/bin/ditto "${image_root}/usr/local/lib/cmake/libvirtualhid" /usr/local/lib/cmake/libvirtualhid
|
|
fi
|
|
if [[ -d "${image_root}/usr/local/share/licenses/libvirtualhid" ]]; then
|
|
/usr/bin/sudo /usr/bin/ditto "${image_root}/usr/local/share/licenses/libvirtualhid" /usr/local/share/licenses/libvirtualhid
|
|
fi
|
|
|
|
/usr/bin/sudo /bin/launchctl bootstrap system "${service_plist}"
|
|
/usr/bin/sudo /bin/launchctl kickstart -k "system/${bundle_id}"
|
|
echo 'Virtual HID Broker and Virtual HID Control installed in /Applications.'
|
|
echo 'Activate a license if needed: /usr/local/bin/libvirtualhid-license activate'
|
|
echo 'To create gamepads, grant Virtual HID Broker from /Applications access in'
|
|
echo 'System Settings > Privacy & Security > Device Control and Data Access'
|
|
echo '(Accessibility on older macOS).'
|