Changeset 108302 in vbox
- Timestamp:
- Feb 19, 2025 4:01:47 PM (2 months ago)
- svn:sync-xref-src-repo-rev:
- 167646
- Location:
- trunk/src/VBox/Installer/win
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Installer/win/InstallHelper/VBoxInstallHelper.cpp
r108074 r108302 1471 1471 } 1472 1472 1473 /** 1474 * Returns a custom action data value. 1475 * 1476 * @returns Value of \a pszName if found, or NULL if not found. 1477 * @param hModule Windows installer module handle. 1478 * @param pData Custom action data to search in. 1479 * @param pszName Name of the custom action data value to search for. 1480 * @param fOptional Whether the custom action data value is optional or not. 1481 * If @c true, \a pData will be destroyed automatically, 1482 * so that the caller can skip cleaning up. 1483 * That implies that \a pData will be invalid when returning 1484 * a failure, so use with care. 1485 */ 1486 static const char *getCustomActionDataValue(MSIHANDLE hModule, PVBOXMSICUSTOMACTIONDATA pData, const char *pszName, bool fOptional) 1487 { 1488 const char *pszVal = VBoxMsiCustomActionDataFind(pData, pszName); 1489 if ( !pszVal 1490 && !fOptional) 1491 { 1492 logStringF(hModule, "Error: Value '%s' not specified in CustomActionData!", pszName); 1493 1494 #ifdef DEBUG 1495 for (size_t i = 0; i < pData->cEntries; i++) 1496 logStringF(hModule, "CustomActionData: %s = %s", pData->paEntries[i].pszKey, pData->paEntries[i].pszVal); 1497 #endif 1498 VBoxMsiCustomActionDataFree(pData); 1499 pData = NULL; 1500 } 1501 1502 return pszVal; 1503 } 1504 1473 1505 UINT __stdcall DriverInstall(MSIHANDLE hModule) 1474 1506 { 1475 1507 logStringF(hModule, "Installing driver ..."); 1476 1508 1477 char *pszInfFile = NULL; 1478 int rc = VBoxMsiQueryPropUtf8(hModule, "VBoxDrvInstInfFile", &pszInfFile); 1509 PVBOXMSICUSTOMACTIONDATA pData; 1510 int rc = VBoxMsiCustomActionDataQuery(hModule, &pData); 1511 if (RT_FAILURE(rc)) 1512 { 1513 logStringF(hModule, "DriverInstall: No CustomActionData specified!"); 1514 return ERROR_INVALID_PARAMETER; 1515 } 1516 1517 const char *pszInfFile = getCustomActionDataValue(hModule, pData, "VBoxDrvInstInfFile", false /* fOptional */); 1518 if (!pszInfFile) 1519 return ERROR_INVALID_PARAMETER; 1520 1521 /* VBoxDrvInstInfSection is optional. */ 1522 const char *pszInfSection = getCustomActionDataValue(hModule, pData, "VBoxDrvInstInfSection", true /* fOptional */); 1523 /* VBoxDrvInstModel is optional. */ 1524 const char *pszModel = getCustomActionDataValue(hModule, pData, "VBoxDrvInstModel", true /* fOptional */); 1525 /* VBoxDrvInstPnpId is optional. */ 1526 const char *pszPnpId = getCustomActionDataValue(hModule, pData, "VBoxDrvInstPnpId", true /* fOptional */); 1527 1528 uint32_t fFlags = VBOX_WIN_DRIVERINSTALL_F_NONE; 1529 if (getCustomActionDataValue(hModule, pData, "VBoxDrvInstFlagForce", true /* fOptional */)) 1530 fFlags |= VBOX_WIN_DRIVERINSTALL_F_FORCE; 1531 if (getCustomActionDataValue(hModule, pData, "VBoxDrvInstFlagSilent", true /* fOptional */)) 1532 fFlags |= VBOX_WIN_DRIVERINSTALL_F_SILENT; 1533 1534 VBOXWINDRVINST hWinDrvInst; 1535 rc = VBoxWinDrvInstCreateEx(&hWinDrvInst, 1 /* uVerbostiy */, &vboxWinDrvInstLogCallback, &hModule /* pvUser */); 1479 1536 if (RT_SUCCESS(rc)) 1480 1537 { 1481 char *pszInfSection = NULL; 1482 rc = VBoxMsiQueryPropUtf8(hModule, "VBoxDrvInstInfSection", &pszInfSection); 1483 if ( RT_SUCCESS(rc) 1484 || rc == VERR_NOT_FOUND) /* VBoxDrvInstInfSection is optional. */ 1485 { 1486 char *pszModel = NULL; 1487 rc = VBoxMsiQueryPropUtf8(hModule, "VBoxDrvInstModel", &pszModel); 1488 if ( RT_SUCCESS(rc) 1489 || rc == VERR_NOT_FOUND) /* VBoxDrvInstModel is optional. */ 1490 { 1491 char *pszPnpId = NULL; 1492 rc = VBoxMsiQueryPropUtf8(hModule, "VBoxDrvInstPnpId", &pszPnpId); 1493 if ( RT_SUCCESS(rc) 1494 || rc == VERR_NOT_FOUND) /* VBoxDrvInstPnpId is optional. */ 1495 { 1496 uint32_t fFlags = VBOX_WIN_DRIVERINSTALL_F_NONE; 1497 1498 DWORD dwVal; 1499 rc = VBoxMsiQueryPropInt32(hModule, "VBoxDrvInstFlagForce", &dwVal); 1500 if (RT_SUCCESS(rc)) 1501 fFlags |= VBOX_WIN_DRIVERINSTALL_F_FORCE; 1502 rc = VBoxMsiQueryPropInt32(hModule, "VBoxDrvInstFlagSilent", &dwVal); 1503 if (RT_SUCCESS(rc)) 1504 fFlags |= VBOX_WIN_DRIVERINSTALL_F_SILENT; 1505 1506 VBOXWINDRVINST hWinDrvInst; 1507 rc = VBoxWinDrvInstCreateEx(&hWinDrvInst, 1 /* uVerbostiy */, &vboxWinDrvInstLogCallback, &hModule /* pvUser */); 1508 if (RT_SUCCESS(rc)) 1509 { 1510 if (pszInfSection && *pszInfSection) 1511 rc = VBoxWinDrvInstInstallExecuteInf(hWinDrvInst, pszInfFile, pszInfSection, fFlags); 1512 else 1513 rc = VBoxWinDrvInstInstallEx(hWinDrvInst, pszInfFile, pszModel, pszPnpId, fFlags); 1514 1515 VBoxWinDrvInstDestroy(hWinDrvInst); 1516 } 1517 1518 RTStrFree(pszPnpId); 1519 } 1520 1521 RTStrFree(pszModel); 1522 } 1523 1524 RTStrFree(pszInfSection); 1525 } 1526 1527 RTStrFree(pszInfFile); 1528 } 1529 else 1530 { 1531 logStringF(hModule, "DriverInstall: No INF or invalid file to install specified!"); 1532 if (rc == VERR_NOT_FOUND) /* Give a better clue. */ 1533 rc = VERR_INVALID_PARAMETER; 1534 } 1538 if (pszInfSection && *pszInfSection) 1539 rc = VBoxWinDrvInstInstallExecuteInf(hWinDrvInst, pszInfFile, pszInfSection, fFlags); 1540 else 1541 rc = VBoxWinDrvInstInstallEx(hWinDrvInst, pszInfFile, pszModel, pszPnpId, fFlags); 1542 1543 VBoxWinDrvInstDestroy(hWinDrvInst); 1544 } 1545 1546 VBoxMsiCustomActionDataFree(pData); 1547 pData = NULL; 1535 1548 1536 1549 logStringF(hModule, "DriverInstall: Handling done (rc=%Rrc)", rc); … … 1540 1553 UINT __stdcall DriverUninstall(MSIHANDLE hModule) 1541 1554 { 1542 char *pszInfFile = NULL; 1543 int rc = VBoxMsiQueryPropUtf8(hModule, "VBoxDrvUninstInfFile", &pszInfFile); 1544 if ( RT_SUCCESS(rc) 1545 || rc == VERR_NOT_FOUND) /* VBoxDrvUninstInfFile is optional. */ 1546 { 1547 char *pszInfSection = NULL; 1548 rc = VBoxMsiQueryPropUtf8(hModule, "VBoxDrvUninstInfSection", &pszInfSection); 1549 if ( RT_SUCCESS(rc) 1550 || rc == VERR_NOT_FOUND) /* VBoxDrvUninstInfSection is optional. */ 1551 { 1552 char *pszModel = NULL; 1553 rc = VBoxMsiQueryPropUtf8(hModule, "VBoxDrvUninstModel", &pszModel); 1554 if ( RT_SUCCESS(rc) 1555 || rc == VERR_NOT_FOUND) /* VBoxDrvUninstModel is optional. */ 1556 { 1557 char *pszPnpId = NULL; 1558 rc = VBoxMsiQueryPropUtf8(hModule, "VBoxDrvUninstPnpId", &pszPnpId); 1559 if ( RT_SUCCESS(rc) 1560 || rc == VERR_NOT_FOUND) /* VBoxDrvUninstPnpId is optional. */ 1561 { 1562 VBOXWINDRVINST hWinDrvInst; 1563 rc = VBoxWinDrvInstCreateEx(&hWinDrvInst, 1 /* uVerbostiy */, 1564 &vboxWinDrvInstLogCallback, &hModule /* pvUser */); 1565 if (RT_SUCCESS(rc)) 1566 { 1567 if (pszInfSection && *pszInfSection) 1568 rc = VBoxWinDrvInstUninstallExecuteInf(hWinDrvInst, pszInfFile, pszInfSection, 1569 VBOX_WIN_DRIVERINSTALL_F_NONE); 1570 else 1571 rc = VBoxWinDrvInstUninstall(hWinDrvInst, pszInfFile, pszModel, pszPnpId, 1572 VBOX_WIN_DRIVERINSTALL_F_NONE); 1573 1574 VBoxWinDrvInstDestroy(hWinDrvInst); 1575 } 1576 1577 RTStrFree(pszPnpId); 1578 } 1579 1580 RTStrFree(pszModel); 1581 } 1582 1583 RTStrFree(pszInfSection); 1584 } 1585 1586 RTStrFree(pszInfFile); 1587 } 1555 logStringF(hModule, "Uninstalling driver ..."); 1556 1557 PVBOXMSICUSTOMACTIONDATA pData; 1558 int rc = VBoxMsiCustomActionDataQuery(hModule, &pData); 1559 if (RT_FAILURE(rc)) 1560 { 1561 logStringF(hModule, "DriverUninstall: No CustomActionData specified!"); 1562 return ERROR_INVALID_PARAMETER; 1563 } 1564 1565 #ifdef DEBUG 1566 for (size_t i = 0; i < pData->cEntries; i++) 1567 logStringF(hModule, "CustomActionData: %s = %s", pData->paEntries[i].pszKey, pData->paEntries[i].pszVal); 1568 #endif 1569 1570 /* VBoxDrvUninstInfFile is optional. */ 1571 const char *pszInfFile = VBoxMsiCustomActionDataFind(pData, "VBoxDrvUninstInfFile"); 1572 /* VBoxDrvUninstInfSection is optional. */ 1573 const char *pszInfSection = VBoxMsiCustomActionDataFind(pData, "VBoxDrvUninstInfSection"); 1574 /* VBoxDrvUninstModel is optional. */ 1575 const char *pszModel = VBoxMsiCustomActionDataFind(pData, "VBoxDrvUninstModel"); 1576 /* VBoxDrvUninstPnpId is optional. */ 1577 const char *pszPnpId = VBoxMsiCustomActionDataFind(pData, "VBoxDrvUninstPnpId"); 1578 1579 VBOXWINDRVINST hWinDrvInst; 1580 rc = VBoxWinDrvInstCreateEx(&hWinDrvInst, 1 /* uVerbostiy */, 1581 &vboxWinDrvInstLogCallback, &hModule /* pvUser */); 1582 if (RT_SUCCESS(rc)) 1583 { 1584 if (pszInfSection && *pszInfSection) 1585 rc = VBoxWinDrvInstUninstallExecuteInf(hWinDrvInst, pszInfFile, pszInfSection, 1586 VBOX_WIN_DRIVERINSTALL_F_NONE); 1587 else 1588 rc = VBoxWinDrvInstUninstall(hWinDrvInst, pszInfFile, pszModel, pszPnpId, 1589 VBOX_WIN_DRIVERINSTALL_F_NONE); 1590 1591 VBoxWinDrvInstDestroy(hWinDrvInst); 1592 } 1593 1594 VBoxMsiCustomActionDataFree(pData); 1595 pData = NULL; 1588 1596 1589 1597 logStringF(hModule, "DriverUninstall: Handling done (rc=%Rrc)", rc); … … 1639 1647 UINT __stdcall ServiceControl(MSIHANDLE hModule) 1640 1648 { 1641 char *pszSvcCtlName; 1642 int rc = VBoxMsiQueryPropUtf8(hModule, "VBoxSvcCtlName", &pszSvcCtlName); 1649 PVBOXMSICUSTOMACTIONDATA pData; 1650 int rc = VBoxMsiCustomActionDataQuery(hModule, &pData); 1651 if (RT_FAILURE(rc)) 1652 { 1653 logStringF(hModule, "ServiceControl: No CustomActionData specified!"); 1654 return ERROR_INVALID_PARAMETER; 1655 } 1656 1657 const char *pszSvcCtlName = getCustomActionDataValue(hModule, pData, "VBoxSvcCtlName", false /* fOptional */); 1658 if (!pszSvcCtlName) 1659 return ERROR_INVALID_PARAMETER; 1660 const char *pszSvcCtlFn = getCustomActionDataValue(hModule, pData, "VBoxSvcCtlFn", false /* fOptional */); 1661 if (!pszSvcCtlFn) 1662 return ERROR_INVALID_PARAMETER; 1663 1664 VBOXWINDRVSVCFN enmFn = VBOXWINDRVSVCFN_INVALID; /* Shut up MSVC. */ 1665 if (!RTStrICmp(pszSvcCtlFn, "start")) 1666 enmFn = VBOXWINDRVSVCFN_START; 1667 else if (!RTStrICmp(pszSvcCtlFn, "stop")) 1668 enmFn = VBOXWINDRVSVCFN_STOP; 1669 else if (!RTStrICmp(pszSvcCtlFn, "restart")) 1670 enmFn = VBOXWINDRVSVCFN_RESTART; 1671 else 1672 rc = VERR_INVALID_PARAMETER; 1673 1643 1674 if (RT_SUCCESS(rc)) 1644 1675 { 1645 char *pszSvcCtlFn; 1646 rc = VBoxMsiQueryPropUtf8(hModule, "VBoxSvcCtlFn", &pszSvcCtlFn); 1676 RTMSINTERVAL msTimeout = 0; /* Don't wait by default. */ 1677 const char *pszTmp = getCustomActionDataValue(hModule, pData, "VBoxSvcCtlWaitMs", true /* fOptional */); 1678 if (pszTmp) 1679 msTimeout = RTStrToUInt32(pszTmp); 1680 1681 VBOXWINDRVINST hWinDrvInst; 1682 rc = VBoxWinDrvInstCreateEx(&hWinDrvInst, 1 /* uVerbostiy */, 1683 &vboxWinDrvInstLogCallback, &hModule /* pvUser */); 1647 1684 if (RT_SUCCESS(rc)) 1648 1685 { 1649 VBOXWINDRVSVCFN enmFn = VBOXWINDRVSVCFN_INVALID; /* Shut up MSVC. */ 1650 if (!RTStrICmp(pszSvcCtlFn, "start")) 1651 enmFn = VBOXWINDRVSVCFN_START; 1652 else if (!RTStrICmp(pszSvcCtlFn, "stop")) 1653 enmFn = VBOXWINDRVSVCFN_STOP; 1654 else if (!RTStrICmp(pszSvcCtlFn, "restart")) 1655 enmFn = VBOXWINDRVSVCFN_RESTART; 1656 else 1657 rc = VERR_INVALID_PARAMETER; 1658 1659 if (RT_SUCCESS(rc)) 1660 { 1661 RTMSINTERVAL msTimeout = 0; /* Don't wait by default. */ 1662 rc = VBoxMsiQueryPropInt32(hModule, "VBoxSvcCtlWaitMs", (DWORD *)&msTimeout); 1663 if ( RT_SUCCESS(rc) 1664 || rc == VERR_NOT_FOUND) /* VBoxSvcCtlWaitMs is optional. */ 1665 { 1666 VBOXWINDRVINST hWinDrvInst; 1667 rc = VBoxWinDrvInstCreateEx(&hWinDrvInst, 1 /* uVerbostiy */, 1668 &vboxWinDrvInstLogCallback, &hModule /* pvUser */); 1669 if (RT_SUCCESS(rc)) 1670 { 1671 rc = VBoxWinDrvInstControlServiceEx(hWinDrvInst, pszSvcCtlName, enmFn, 1672 msTimeout == 0 ? VBOXWINDRVSVCFN_F_NONE : VBOXWINDRVSVCFN_F_WAIT, 1673 msTimeout); 1674 VBoxWinDrvInstDestroy(hWinDrvInst); 1675 } 1676 } 1677 } 1678 1679 RTStrFree(pszSvcCtlFn); 1680 } 1681 1682 RTStrFree(pszSvcCtlName); 1683 } 1686 rc = VBoxWinDrvInstControlServiceEx(hWinDrvInst, pszSvcCtlName, enmFn, 1687 msTimeout == 0 ? VBOXWINDRVSVCFN_F_NONE : VBOXWINDRVSVCFN_F_WAIT, 1688 msTimeout); 1689 VBoxWinDrvInstDestroy(hWinDrvInst); 1690 } 1691 } 1692 1693 VBoxMsiCustomActionDataFree(pData); 1694 pData = NULL; 1684 1695 1685 1696 logStringF(hModule, "ServiceControl: Handling done (rc=%Rrc)", rc); … … 2964 2975 return ERROR_SUCCESS; 2965 2976 } 2966 -
trunk/src/VBox/Installer/win/VBoxMergeAppCA.wxi
r108074 r108302 26 26 <Include xmlns="http://wixtoolset.org/schemas/v4/wxs"> 27 27 28 <CustomAction Id="ca_VBoxSupDrvInst" DllEntry="DriverInstall" Execute="immediate" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 29 <CustomAction Id="ca_VBoxSupDrvInstArgInfFile" Property="VBoxDrvInstInfFile" Value="[#file_VBoxSup.inf]" Execute="immediate" /> 30 <CustomAction Id="ca_VBoxSupDrvInstArgModel" Property="VBoxDrvInstModel" Value="VBoxSup" Execute="immediate" /> 31 <CustomAction Id="ca_VBoxSupDrvInstArgFlagForce" Property="VBoxDrvInstFlagForce" Value="1" Execute="immediate" /> 32 <CustomAction Id="ca_VBoxSupDrvInstArgFlagSilent" Property="VBoxDrvInstFlagSilent" Value="1" Execute="immediate" /> 28 <CustomAction Id="ca_VBoxSupDrvInstParms" Property="ca_VBoxSupDrvInst" Value="VBoxDrvInstInfFile=[#file_VBoxSup.inf]##VBoxDrvInstModel=VBoxSup##VBoxDrvInstFlagForce=1##VBoxDrvInstFlagSilent=1" Execute="immediate" /> 29 <CustomAction Id="ca_VBoxSupDrvInst" DllEntry="DriverInstall" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 33 30 34 <CustomAction Id="ca_VBoxSupDrvStart" DllEntry="ServiceControl" Execute="immediate" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 35 <CustomAction Id="ca_VBoxSupDrvStartArgName" Property="VBoxSvcCtlName" Value="VBoxSUP" Execute="immediate" /> 36 <CustomAction Id="ca_VBoxSupDrvStartArgFn" Property="VBoxSvcCtlFn" Value="start" Execute="immediate" /> 31 <CustomAction Id="ca_VBoxSupDrvStartParms" Property="ca_VBoxSupDrvStart" Value="VBoxSvcCtlName=VBoxSUP##VBoxSvcCtlFn=start" Execute="immediate" /> 32 <CustomAction Id="ca_VBoxSupDrvStart" DllEntry="ServiceControl" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 37 33 38 <CustomAction Id="ca_VBoxSupDrvUninst " DllEntry="DriverUninstall" Execute="immediate" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" />39 <CustomAction Id="ca_VBoxSupDrvUninst ArgModel" Property="VBoxDrvUninstModel" Value="VBoxSup*" Execute="immediate" />34 <CustomAction Id="ca_VBoxSupDrvUninstParms" Property="ca_VBoxSupDrvUninst" Value="VBoxDrvUninstModel=VBoxSUP*" Execute="immediate" /> 35 <CustomAction Id="ca_VBoxSupDrvUninst" DllEntry="DriverUninstall" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 40 36 41 37 <CustomAction Id="ca_GetPlatformArchitecture" DllEntry="GetPlatformArchitecture" Execute="immediate" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> … … 51 47 <CustomAction Id="ca_CheckTargetDirPost" DllEntry="CheckTargetDir" Execute="immediate" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 52 48 </Include> 53 -
trunk/src/VBox/Installer/win/VBoxMergeAppSeq.wxi
r108074 r108302 26 26 <Include xmlns="http://wixtoolset.org/schemas/v4/wxs"> 27 27 28 <Custom Action="ca_VBoxSupDrvInstArgFlagSilent" Before="ca_VBoxSupDrvInstArgFlagForce" Condition="NOT REMOVE" /> 29 <Custom Action="ca_VBoxSupDrvInstArgFlagForce" Before="ca_VBoxSupDrvInstArgModel" Condition="NOT REMOVE" /> 30 <Custom Action="ca_VBoxSupDrvInstArgInfFile" Before="ca_VBoxSupDrvInstArgModel" Condition="NOT REMOVE" /> 31 <Custom Action="ca_VBoxSupDrvInstArgModel" Before="ca_VBoxSupDrvInst" Condition="NOT REMOVE" /> 32 <Custom Action="ca_VBoxSupDrvInst" After="InstallFinalize" Condition="NOT REMOVE" /> 28 <Custom Action="ca_VBoxSupDrvInstParms" After="InstallFiles" Condition="NOT REMOVE" /> 29 <Custom Action="ca_VBoxSupDrvInst" After="ca_VBoxSupDrvInstParms" Condition="NOT REMOVE" /> 33 30 34 31 <!-- Start VBoxSUP.sys after installation. --> 35 <Custom Action="ca_VBoxSupDrvStartArgFn" Before="ca_VBoxSupDrvStartArgName" Condition="NOT REMOVE" /> 36 <Custom Action="ca_VBoxSupDrvStartArgName" Before="ca_VBoxSupDrvStart" Condition="NOT REMOVE" /> 37 <Custom Action="ca_VBoxSupDrvStart" After="ca_VBoxSupDrvInst" Condition="NOT REMOVE" /> 32 <Custom Action="ca_VBoxSupDrvStartParms" After="ca_VBoxSupDrvInst" Condition="NOT REMOVE" /> 33 <Custom Action="ca_VBoxSupDrvStart" After="ca_VBoxSupDrvStartParms" Condition="NOT REMOVE" /> 38 34 39 <Custom Action="ca_VBoxSupDrvUninst ArgModel" Before="ca_VBoxSupDrvUninst"35 <Custom Action="ca_VBoxSupDrvUninstParms" After="InstallInitialize" 40 36 Condition="NOT (UPGRADINGPRODUCTCODE) AND (Installed) AND (REMOVE="ALL")" /> 41 <Custom Action="ca_VBoxSupDrvUninst" After=" InstallInitialize"37 <Custom Action="ca_VBoxSupDrvUninst" After="ca_VBoxSupDrvUninstParms" 42 38 Condition="NOT (UPGRADINGPRODUCTCODE) AND (Installed) AND (REMOVE="ALL")" /> 43 39 … … 55 51 56 52 </Include> 57 -
trunk/src/VBox/Installer/win/VBoxMergeUSBCA.wxi
r108271 r108302 26 26 <Include xmlns="http://wixtoolset.org/schemas/v4/wxs"> 27 27 28 <CustomAction Id="ca_VBoxUSBDevDrvInst" DllEntry="DriverInstall" Execute="immediate" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 29 <CustomAction Id="ca_VBoxUSBDevDrvInstArgInfFile" Property="VBoxDrvInstInfFile" Value="[#file_VBoxUSB.inf]" Execute="immediate" /> 30 <CustomAction Id="ca_VBoxUSBDevDrvInstArgModel" Property="VBoxDrvInstModel" Value="VBoxUSB*" Execute="immediate" /> 31 <CustomAction Id="ca_VBoxUSBDevDrvInstArgFlagForce" Property="VBoxDrvInstFlagForce" Value="1" Execute="immediate" /> 32 <CustomAction Id="ca_VBoxUSBDevDrvInstArgFlagSilent" Property="VBoxDrvInstFlagSilent" Value="1" Execute="immediate" /> 28 <CustomAction Id="ca_VBoxUSBDevDrvInstParms" Property="ca_VBoxUSBDevDrvInst" Value="VBoxDrvInstInfFile=[#file_VBoxUSB.inf]##VBoxDrvInstModel=VBoxUSB*##VBoxDrvInstFlagForce=1##VBoxDrvInstFlagSilent=1" Execute="immediate" /> 29 <CustomAction Id="ca_VBoxUSBDevDrvInst" DllEntry="DriverInstall" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 33 30 34 <CustomAction Id="ca_VBoxUSBDevDrvUninst " DllEntry="DriverUninstall" Execute="immediate" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" />35 <CustomAction Id="ca_VBoxUSBDevDrvUninst ArgModel" Property="VBoxDrvUninstModel" Value="VBoxUSB*" Execute="immediate" />31 <CustomAction Id="ca_VBoxUSBDevDrvUninstParms" Property="ca_VBoxUSBDevDrvUninst" Value="VBoxDrvUninstModel=VBoxUSB*" Execute="immediate" /> 32 <CustomAction Id="ca_VBoxUSBDevDrvUninst" DllEntry="DriverUninstall" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 36 33 37 <CustomAction Id="ca_VBoxUSBMonDrvInst" DllEntry="DriverInstall" Execute="immediate" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 38 <CustomAction Id="ca_VBoxUSBMonDrvInstArgInfFile" Property="VBoxDrvInstInfFile" Value="[#file_VBoxUSBMon.inf]" Execute="immediate" /> 39 <CustomAction Id="ca_VBoxUSBMonDrvInstArgModel" Property="VBoxDrvInstModel" Value="VBoxUSBMon*" Execute="immediate" /> 40 <CustomAction Id="ca_VBoxUSBMonDrvInstArgFlagForce" Property="VBoxDrvInstFlagForce" Value="1" Execute="immediate" /> 41 <CustomAction Id="ca_VBoxUSBMonDrvInstArgFlagSilent" Property="VBoxDrvInstFlagSilent" Value="1" Execute="immediate" /> 34 <CustomAction Id="ca_VBoxUSBMonDrvInstParms" Property="ca_VBoxUSBMonDrvInst" Value="VBoxDrvInstInfFile=[#file_VBoxUSBMon.inf]##VBoxDrvInstModel=VBoxUSBMon*##VBoxDrvInstFlagForce=1##VBoxDrvInstFlagSilent=1" Execute="immediate" /> 35 <CustomAction Id="ca_VBoxUSBMonDrvInst" DllEntry="DriverInstall" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 42 36 43 <CustomAction Id="ca_VBoxUSBMonDrvStart" DllEntry="ServiceControl" Execute="immediate" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 44 <CustomAction Id="ca_VBoxUSBMonDrvStartArgName" Property="VBoxSvcCtlName" Value="VBoxUSBMon" Execute="immediate" /> 45 <CustomAction Id="ca_VBoxUSBMonDrvStartArgFn" Property="VBoxSvcCtlFn" Value="start" Execute="immediate" /> 37 <CustomAction Id="ca_VBoxUSBMonDrvStartParms" Property="ca_VBoxUSBMonDrvStart" Value="VBoxSvcCtlName=VBoxUSBMon##VBoxSvcCtlFn=start" Execute="immediate" /> 38 <CustomAction Id="ca_VBoxUSBMonDrvStart" DllEntry="ServiceControl" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 46 39 47 <CustomAction Id="ca_VBoxUSBMonDrvUninst " DllEntry="DriverUninstall" Execute="immediate" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" />48 <CustomAction Id="ca_VBoxUSBMonDrvUninst ArgModel" Property="VBoxDrvUninstModel" Value="VBoxUSBMon*" Execute="immediate" />40 <CustomAction Id="ca_VBoxUSBMonDrvUninstParms" Property="ca_VBoxUSBMonDrvUninst" Value="VBoxDrvUninstModel=VBoxUSBMon*" Execute="immediate" /> 41 <CustomAction Id="ca_VBoxUSBMonDrvUninst" DllEntry="DriverUninstall" Execute="deferred" Return="check" Impersonate="no" BinaryRef="VBoxInstallHelper" /> 49 42 50 43 </Include> -
trunk/src/VBox/Installer/win/VBoxMergeUSBSeq.wxi
r108271 r108302 26 26 <Include xmlns="http://wixtoolset.org/schemas/v4/wxs"> 27 27 28 <Custom Action="ca_VBoxUSBDevDrvInstArgFlagSilent" Before="ca_VBoxUSBDevDrvInstArgFlagForce" Condition="NOT REMOVE" /> 29 <Custom Action="ca_VBoxUSBDevDrvInstArgFlagForce" Before="ca_VBoxUSBDevDrvInstArgModel" Condition="NOT REMOVE" /> 30 <Custom Action="ca_VBoxUSBDevDrvInstArgModel" Before="ca_VBoxUSBDevDrvInstArgInfFile" Condition="NOT REMOVE" /> 31 <Custom Action="ca_VBoxUSBDevDrvInstArgInfFile" Before="ca_VBoxUSBDevDrvInst" Condition="NOT REMOVE" /> 32 <Custom Action="ca_VBoxUSBDevDrvInst" After="InstallFinalize" 28 <Custom Action="ca_VBoxUSBDevDrvInstParms" After="InstallFiles" 29 Condition="NOT REMOVE AND (&VBoxUSB=3)" /> 30 <Custom Action="ca_VBoxUSBDevDrvInst" After="ca_VBoxUSBDevDrvInstParms" 33 31 Condition="NOT REMOVE AND (&VBoxUSB=3)" /> 34 32 35 <Custom Action="ca_VBoxUSBDevDrvUninst ArgModel" Before="ca_VBoxUSBDevDrvUninst"36 Condition="NOT (UPGRADINGPRODUCTCODE) AND (Installed) AND (REMOVE="ALL")" 37 <Custom Action="ca_VBoxUSBDevDrvUninst" After=" InstallInitialize"33 <Custom Action="ca_VBoxUSBDevDrvUninstParms" Before="ca_VBoxSupDrvUninst" 34 Condition="NOT (UPGRADINGPRODUCTCODE) AND (Installed) AND (REMOVE="ALL")"/> 35 <Custom Action="ca_VBoxUSBDevDrvUninst" After="ca_VBoxUSBDevDrvUninstParms" 38 36 Condition="NOT (UPGRADINGPRODUCTCODE) AND (Installed) AND (REMOVE="ALL")"/> 39 37 40 <Custom Action="ca_VBoxUSBMonDrvInstArgFlagSilent" Before="ca_VBoxUSBMonDrvInstArgFlagForce" Condition="NOT REMOVE" /> 41 <Custom Action="ca_VBoxUSBMonDrvInstArgFlagForce" Before="ca_VBoxUSBMonDrvInstArgModel" Condition="NOT REMOVE" /> 42 <Custom Action="ca_VBoxUSBMonDrvInstArgModel" Before="ca_VBoxUSBMonDrvInstArgInfFile" Condition="NOT REMOVE" /> 43 <Custom Action="ca_VBoxUSBMonDrvInstArgInfFile" Before="ca_VBoxUSBMonDrvInst" Condition="NOT REMOVE" /> 44 <Custom Action="ca_VBoxUSBMonDrvInst" After="InstallFinalize" 38 <Custom Action="ca_VBoxUSBMonDrvInstParms" After="InstallFiles" 39 Condition="NOT REMOVE AND (&VBoxUSB=3)" /> 40 <Custom Action="ca_VBoxUSBMonDrvInst" After="ca_VBoxUSBMonDrvInstParms" 45 41 Condition="NOT REMOVE AND (&VBoxUSB=3)" /> 46 42 47 43 <!-- Start VBoxUSBMon after installation. --> 48 <Custom Action="ca_VBoxUSBMonDrvStartArgFn" Before="ca_VBoxUSBMonDrvStartArgName" Condition="NOT REMOVE" /> 49 <Custom Action="ca_VBoxUSBMonDrvStartArgName" Before="ca_VBoxUSBMonDrvStart" Condition="NOT REMOVE" /> 50 <Custom Action="ca_VBoxUSBMonDrvStart" After="ca_VBoxUSBMonDrvInst" Condition="NOT REMOVE" /> 44 <Custom Action="ca_VBoxUSBMonDrvStartParms" After="ca_VBoxUSBMonDrvInst" Condition="NOT REMOVE" /> 45 <Custom Action="ca_VBoxUSBMonDrvStart" After="ca_VBoxUSBMonDrvStartParms" Condition="NOT REMOVE" /> 51 46 52 <Custom Action="ca_VBoxUSBMonDrvUninst ArgModel" Before="ca_VBoxUSBMonDrvUninst"47 <Custom Action="ca_VBoxUSBMonDrvUninstParms" Before="ca_VBoxSupDrvUninst" 53 48 Condition="NOT (UPGRADINGPRODUCTCODE) AND (Installed) AND (REMOVE="ALL")" /> 54 <Custom Action="ca_VBoxUSBMonDrvUninst" After=" InstallInitialize"49 <Custom Action="ca_VBoxUSBMonDrvUninst" After="ca_VBoxUSBMonDrvUninstParms" 55 50 Condition="NOT (UPGRADINGPRODUCTCODE) AND (Installed) AND (REMOVE="ALL")" /> 56 51
Note:
See TracChangeset
for help on using the changeset viewer.