Skip to content

Installer design

Frans van Dorsselaer edited this page Sep 20, 2025 · 9 revisions

Draft - WIP

action install update/repair uninstall remarks
detach --all X Stubs will not use VBoxUSB after this.
disable_forced X VBoxUSB will not be used after this.
NOTE: Must be non-fatal, in case the previous version does not have this!
unbind --all X Stops all sharing (forced or not). VBoxUSB will not be used after this.
uninstall_stubs (1) X Cleanup device tree.
uninstall_old_drivers (1) X Cleanup drivers.
uninstall_driver X Cleanup drivers.
MSI: StopServices Before VBoxUSBMon can stop, VBoxUSB must not be used.
Schedule actions to accomplish that before StopServices.
MSI: InstallFiles No actions depending on usbipd for install, files/registry would not be available.
Schedule any actions before InstallServices to ensure they come after all of these.
uninstall_stubs (2) X X Cleanup device tree.
install_driver X X Make (PnP) driver available for future stubs.
install_monitor X X Install VBoxUSBMon service (cannot use InstallService because it is kernel mode).
Stopping and deleting is handled by MSI (StopServices / DeleteServices).
MSI: InstallServices Will install usbipd service, which depends on VBoxUSBMon.
Schedule custom installation of VBoxUSBMon before InstallServices.
MSI: StartServices Will start usbipd, which depends on VBoxUSBMon, which will therefore also be started.
Schedule actions that require VBoxUSBMon running after StartServices.
update_drivers X X Update all drivers.
Driver will actually be loaded, because the device will be enabled by this.
Should be only forced devices.
Should be no-op for install, but it can't hurt.
Schedule after StartServices, or the new VBoxUSB will fail to load (requires VBoxUSBMon).
NOTE: Windows cannot update phantom devices. This function will cause them to become unforced instead.
uninstall_old_drivers (2) X X Cleanup drivers.
Also on install, to clean up after previous versions that did not have this.
Schedule after update_drivers
enable_forced X X Schedule after StartServices, or the VBoxUSB will fail to load (requires VBoxUSBMon).
Should be no-op for install, but it can't hurt.
Clone this wiki locally