On a fresh install where usbip-win2 is provisioned for the first time, setup logs:
Verified startup tasks are registered but disabled until the pinned USB-IP
package and runtime ABI pass after reboot.
Repair will re-enable them only after usbip-win2 passes its runtime ABI check.
Nothing triggers that repair. After reboot both RunDS4Windows and RunVIIPER remain Disabled with correct targets, so neither auto-starts at logon.
Because HasTaskEntry() requires task.Enabled, and runAtStartup = runStartProg || runStartTask derives purely from observed state, Settings then shows "Run At Startup" unchecked — presenting setup's temporary state as a preference the user never made. ViiperSetupManager reads it as "startup explicitly disabled" and silently launches VIIPER per-session, so nothing appears broken.
On a fresh install where usbip-win2 is provisioned for the first time, setup logs:
Verified startup tasks are registered but disabled until the pinned USB-IP
package and runtime ABI pass after reboot.
Repair will re-enable them only after usbip-win2 passes its runtime ABI check.
Nothing triggers that repair. After reboot both RunDS4Windows and RunVIIPER remain Disabled with correct targets, so neither auto-starts at logon.
Because HasTaskEntry() requires task.Enabled, and runAtStartup = runStartProg || runStartTask derives purely from observed state, Settings then shows "Run At Startup" unchecked — presenting setup's temporary state as a preference the user never made. ViiperSetupManager reads it as "startup explicitly disabled" and silently launches VIIPER per-session, so nothing appears broken.