Changeset 107392 in vbox for trunk/src/VBox/GuestHost
- Timestamp:
- Dec 20, 2024 8:55:27 AM (3 months ago)
- svn:sync-xref-src-repo-rev:
- 166435
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/GuestHost/installation/VBoxDrvInst.cpp
r107049 r107392 140 140 VBOXDRVINST_INSTALL_OPT_PNPID, 141 141 VBOXDRVINST_INSTALL_OPT_NOT_FORCE, 142 VBOXDRVINST_INSTALL_OPT_NOT_SILENT 142 VBOXDRVINST_INSTALL_OPT_NOT_SILENT, 143 VBOXDRVINST_INSTALL_OPT_IGNORE_REBOOT 143 144 }; 144 145 … … 148 149 static const RTGETOPTDEF g_aCmdInstallOptions[] = 149 150 { 150 { "--inf-file", VBOXDRVINST_INSTALL_OPT_INF_FILE, RTGETOPT_REQ_STRING }, 151 { "--inf-section", VBOXDRVINST_INSTALL_OPT_INF_SECTION, RTGETOPT_REQ_STRING }, 152 { "--model", VBOXDRVINST_INSTALL_OPT_MODEL, RTGETOPT_REQ_STRING }, 153 { "--pnp", VBOXDRVINST_INSTALL_OPT_PNPID, RTGETOPT_REQ_STRING }, 154 { "--pnpid" , VBOXDRVINST_INSTALL_OPT_PNPID, RTGETOPT_REQ_STRING }, 155 { "--pnp-id", VBOXDRVINST_INSTALL_OPT_PNPID, RTGETOPT_REQ_STRING }, 156 { "--not-force", VBOXDRVINST_INSTALL_OPT_NOT_FORCE, RTGETOPT_REQ_NOTHING }, 157 { "--not-silent", VBOXDRVINST_INSTALL_OPT_NOT_SILENT, RTGETOPT_REQ_NOTHING } 151 { "--inf-file", VBOXDRVINST_INSTALL_OPT_INF_FILE, RTGETOPT_REQ_STRING }, 152 { "--inf-section", VBOXDRVINST_INSTALL_OPT_INF_SECTION, RTGETOPT_REQ_STRING }, 153 { "--model", VBOXDRVINST_INSTALL_OPT_MODEL, RTGETOPT_REQ_STRING }, 154 { "--pnp", VBOXDRVINST_INSTALL_OPT_PNPID, RTGETOPT_REQ_STRING }, 155 { "--pnpid" , VBOXDRVINST_INSTALL_OPT_PNPID, RTGETOPT_REQ_STRING }, 156 { "--pnp-id", VBOXDRVINST_INSTALL_OPT_PNPID, RTGETOPT_REQ_STRING }, 157 { "--not-force", VBOXDRVINST_INSTALL_OPT_NOT_FORCE, RTGETOPT_REQ_NOTHING }, 158 { "--not-silent", VBOXDRVINST_INSTALL_OPT_NOT_SILENT, RTGETOPT_REQ_NOTHING }, 159 { "--ignore-reboot", VBOXDRVINST_INSTALL_OPT_IGNORE_REBOOT, RTGETOPT_REQ_NOTHING } 158 160 }; 159 161 … … 179 181 VBOXDRVINST_UNINSTALL_OPT_INF_SECTION, 180 182 VBOXDRVINST_UNINSTALL_OPT_MODEL, 181 VBOXDRVINST_UNINSTALL_OPT_PNPID 183 VBOXDRVINST_UNINSTALL_OPT_PNPID, 184 VBOXDRVINST_UNINSTALL_OPT_IGNORE_REBOOT 182 185 }; 183 186 … … 187 190 static const RTGETOPTDEF g_aCmdUninstallOptions[] = 188 191 { 189 { "--inf-file", VBOXDRVINST_UNINSTALL_OPT_INF_FILE, RTGETOPT_REQ_STRING }, 190 { "--inf-section", VBOXDRVINST_UNINSTALL_OPT_INF_SECTION, RTGETOPT_REQ_STRING }, 191 { "--model", VBOXDRVINST_UNINSTALL_OPT_MODEL, RTGETOPT_REQ_STRING }, 192 { "--pnp", VBOXDRVINST_UNINSTALL_OPT_PNPID, RTGETOPT_REQ_STRING }, 193 { "--pnpid" , VBOXDRVINST_UNINSTALL_OPT_PNPID, RTGETOPT_REQ_STRING }, 194 { "--pnp-id", VBOXDRVINST_UNINSTALL_OPT_PNPID, RTGETOPT_REQ_STRING } 192 { "--inf-file", VBOXDRVINST_UNINSTALL_OPT_INF_FILE, RTGETOPT_REQ_STRING }, 193 { "--inf-section", VBOXDRVINST_UNINSTALL_OPT_INF_SECTION, RTGETOPT_REQ_STRING }, 194 { "--model", VBOXDRVINST_UNINSTALL_OPT_MODEL, RTGETOPT_REQ_STRING }, 195 { "--pnp", VBOXDRVINST_UNINSTALL_OPT_PNPID, RTGETOPT_REQ_STRING }, 196 { "--pnpid" , VBOXDRVINST_UNINSTALL_OPT_PNPID, RTGETOPT_REQ_STRING }, 197 { "--pnp-id", VBOXDRVINST_UNINSTALL_OPT_PNPID, RTGETOPT_REQ_STRING }, 198 { "--ignore-reboot", VBOXDRVINST_UNINSTALL_OPT_IGNORE_REBOOT, RTGETOPT_REQ_NOTHING } 195 199 }; 196 200 … … 401 405 switch (pOpt->iShort) 402 406 { 403 case VBOXDRVINST_INSTALL_OPT_INF_FILE: return "Specifies the INF file to install"; 404 case VBOXDRVINST_INSTALL_OPT_INF_SECTION: return "Specifies the INF section to install"; 405 case VBOXDRVINST_INSTALL_OPT_MODEL: return "Specifies the driver model"; 406 case VBOXDRVINST_INSTALL_OPT_PNPID: return "Specifies the PnP (device) ID"; 407 case VBOXDRVINST_INSTALL_OPT_NOT_FORCE: return "Installation will not be forced"; 408 case VBOXDRVINST_INSTALL_OPT_NOT_SILENT: return "Installation will not run in silent mode"; 407 case VBOXDRVINST_INSTALL_OPT_INF_FILE: return "Specifies the INF file to install"; 408 case VBOXDRVINST_INSTALL_OPT_INF_SECTION: return "Specifies the INF section to install"; 409 case VBOXDRVINST_INSTALL_OPT_MODEL: return "Specifies the driver model"; 410 case VBOXDRVINST_INSTALL_OPT_PNPID: return "Specifies the PnP (device) ID"; 411 case VBOXDRVINST_INSTALL_OPT_NOT_FORCE: return "Installation will not be forced"; 412 case VBOXDRVINST_INSTALL_OPT_NOT_SILENT: return "Installation will not run in silent mode"; 413 case VBOXDRVINST_INSTALL_OPT_IGNORE_REBOOT: return "Ignores reboot requirements"; 409 414 default: 410 415 break; … … 428 433 /* By default we want to force an installation and be silent. */ 429 434 uint32_t fInstall = VBOX_WIN_DRIVERINSTALL_F_SILENT | VBOX_WIN_DRIVERINSTALL_F_FORCE; 435 436 /* Whether to ignore reboot messages or not. This will also affect the returned exit code. */ 437 bool fIgnoreReboot = false; 430 438 431 439 int rc = VINF_SUCCESS; … … 473 481 break; 474 482 483 case VBOXDRVINST_INSTALL_OPT_IGNORE_REBOOT: 484 fIgnoreReboot = true; 485 break; 486 475 487 default: 476 488 return RTGetOptPrintError(ch, &ValueUnion); … … 492 504 if (RT_SUCCESS(rc)) 493 505 { 494 if (rc == VINF_REBOOT_NEEDED) 506 if ( rc == VINF_REBOOT_NEEDED 507 && !fIgnoreReboot) 495 508 rcExit = (RTEXITCODE)VBOXDRVINSTEXITCODE_REBOOT_NEEDED; 496 509 } … … 514 527 switch (pOpt->iShort) 515 528 { 516 case VBOXDRVINST_UNINSTALL_OPT_INF_FILE: return "Specifies the INF File to install"; 517 case VBOXDRVINST_UNINSTALL_OPT_INF_SECTION: return "Specifies the INF section to install"; 518 case VBOXDRVINST_UNINSTALL_OPT_MODEL: return "Specifies the driver model to install"; 519 case VBOXDRVINST_UNINSTALL_OPT_PNPID: return "Specifies the PnP (device) ID to install"; 529 case VBOXDRVINST_UNINSTALL_OPT_INF_FILE: return "Specifies the INF File to install"; 530 case VBOXDRVINST_UNINSTALL_OPT_INF_SECTION: return "Specifies the INF section to install"; 531 case VBOXDRVINST_UNINSTALL_OPT_MODEL: return "Specifies the driver model to install"; 532 case VBOXDRVINST_UNINSTALL_OPT_PNPID: return "Specifies the PnP (device) ID to install"; 533 case VBOXDRVINST_UNINSTALL_OPT_IGNORE_REBOOT: return "Ignores reboot requirements"; 520 534 default: 521 535 break; … … 539 553 /* By default we want a silent uninstallation. */ 540 554 uint32_t fInstall = VBOX_WIN_DRIVERINSTALL_F_SILENT; 555 556 /* Whether to ignore reboot messages or not. This will also affect the returned exit code. */ 557 bool fIgnoreReboot = false; 541 558 542 559 int rc = VINF_SUCCESS; … … 580 597 break; 581 598 599 case VBOXDRVINST_UNINSTALL_OPT_IGNORE_REBOOT: 600 fIgnoreReboot = true; 601 break; 602 582 603 default: 583 604 return RTGetOptPrintError(ch, &ValueUnion); … … 599 620 if (RT_SUCCESS(rc)) 600 621 { 601 if (rc == VINF_REBOOT_NEEDED) 622 if ( rc == VINF_REBOOT_NEEDED 623 && !fIgnoreReboot) 602 624 rcExit = (RTEXITCODE)VBOXDRVINSTEXITCODE_REBOOT_NEEDED; 603 625 }
Note:
See TracChangeset
for help on using the changeset viewer.