Changeset 52592 in vbox for trunk/src/VBox/Installer
- Timestamp:
- Sep 3, 2014 8:23:24 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 95866
- Location:
- trunk/src/VBox/Installer/win/InstallHelper
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Installer/win/InstallHelper/VBoxInstallHelper.cpp
r52265 r52592 497 497 #define NETADP_ID L"sun_VBoxNetAdp" /** @todo Needs to be changed (?). */ 498 498 499 #define NETLWF_INF_NAME L"VBoxNetLwf.inf" 500 #define NETLWF_ID L"sun_VBoxNetLwf" /** @todo Needs to be changed (?). */ 501 #define NETADP6_ID L"sun_VBoxNetAdp6" /** @todo Needs to be changed (?). */ 502 499 503 static MSIHANDLE g_hCurrentModule = NULL; 500 504 … … 773 777 return ERROR_SUCCESS; 774 778 } 779 780 781 UINT __stdcall UninstallNetLwf(MSIHANDLE hModule) 782 { 783 #ifdef VBOX_WITH_NETFLT 784 INetCfg *pNetCfg; 785 UINT uErr; 786 787 netCfgLoggerEnable(hModule); 788 789 BOOL bOldIntMode = SetupSetNonInteractiveMode(FALSE); 790 791 __try 792 { 793 logStringW(hModule, L"Uninstalling NetLwf"); 794 795 uErr = doNetCfgInit(hModule, &pNetCfg, TRUE); 796 if (uErr == ERROR_SUCCESS) 797 { 798 HRESULT hr = VBoxNetCfgWinNetLwfUninstall(pNetCfg); 799 if (hr != S_OK) 800 logStringW(hModule, L"UninstallNetLwf: VBoxNetCfgWinUninstallComponent failed, error = 0x%x", hr); 801 802 uErr = errorConvertFromHResult(hModule, hr); 803 804 VBoxNetCfgWinReleaseINetCfg(pNetCfg, TRUE); 805 806 logStringW(hModule, L"Uninstalling NetLwf done, error = 0x%x", uErr); 807 } 808 else 809 logStringW(hModule, L"UninstallNetLwf: doNetCfgInit failed, error = 0x%x", uErr); 810 } 811 __finally 812 { 813 if (bOldIntMode) 814 { 815 /* The prev mode != FALSE, i.e. non-interactive. */ 816 SetupSetNonInteractiveMode(bOldIntMode); 817 } 818 netCfgLoggerDisable(); 819 } 820 #endif /* VBOX_WITH_NETFLT */ 821 822 /* Never fail the install even if we did not succeed. */ 823 return ERROR_SUCCESS; 824 } 825 826 UINT __stdcall InstallNetLwf(MSIHANDLE hModule) 827 { 828 #ifdef VBOX_WITH_NETFLT 829 UINT uErr; 830 INetCfg *pNetCfg; 831 832 netCfgLoggerEnable(hModule); 833 834 BOOL bOldIntMode = SetupSetNonInteractiveMode(FALSE); 835 836 __try 837 { 838 839 logStringW(hModule, L"InstallNetLwf: Installing NetLwf"); 840 841 uErr = doNetCfgInit(hModule, &pNetCfg, TRUE); 842 if (uErr == ERROR_SUCCESS) 843 { 844 WCHAR wszInfName[] = L"VBoxNetLwf.inf"; 845 WCHAR wszInf[MAX_PATH]; 846 DWORD cchInf = RT_ELEMENTS(wszInf) - sizeof(NETLWF_INF_NAME) - 1; 847 UINT uErr = MsiGetPropertyW(hModule, L"CustomActionData", wszInf, &cchInf); 848 if (uErr == ERROR_SUCCESS) 849 { 850 if (cchInf) 851 { 852 if (wszInf[cchInf - 1] != L'\\') 853 { 854 wszInf[cchInf++] = L'\\'; 855 wszInf[cchInf] = L'\0'; 856 } 857 858 wcscat(wszInf, NETLWF_INF_NAME); 859 860 HRESULT hr = VBoxNetCfgWinNetLwfInstall(pNetCfg, wszInf); 861 if (FAILED(hr)) 862 logStringW(hModule, L"InstallNetLwf: VBoxNetCfgWinNetLwfInstall failed, error = 0x%x", hr); 863 864 uErr = errorConvertFromHResult(hModule, hr); 865 } 866 else 867 { 868 logStringW(hModule, L"vboxNetFltQueryInfArray: Empty installation directory"); 869 uErr = ERROR_GEN_FAILURE; 870 } 871 } 872 else 873 logStringW(hModule, L"vboxNetFltQueryInfArray: MsiGetPropertyW failed, error = 0x%x", uErr); 874 875 VBoxNetCfgWinReleaseINetCfg(pNetCfg, TRUE); 876 877 logStringW(hModule, L"InstallNetLwf: Done"); 878 } 879 else 880 logStringW(hModule, L"InstallNetLwf: doNetCfgInit failed, error = 0x%x", uErr); 881 } 882 __finally 883 { 884 if (bOldIntMode) 885 { 886 /* The prev mode != FALSE, i.e. non-interactive. */ 887 SetupSetNonInteractiveMode(bOldIntMode); 888 } 889 netCfgLoggerDisable(); 890 } 891 #endif /* VBOX_WITH_NETFLT */ 892 893 /* Never fail the install even if we did not succeed. */ 894 return ERROR_SUCCESS; 895 } 896 775 897 776 898 #if 0 … … 832 954 #endif 833 955 834 UINT __stdcall CreateHostOnlyInterface(MSIHANDLE hModule)956 static UINT _createHostOnlyInterface(MSIHANDLE hModule, LPCWSTR pwszId, LPCWSTR pwszInfName) 835 957 { 836 958 #ifdef VBOX_WITH_NETFLT … … 846 968 GUID guid; 847 969 WCHAR wszMpInf[MAX_PATH]; 848 DWORD cchMpInf = RT_ELEMENTS(wszMpInf) - sizeof("VBoxNetAdp.inf")- 1;970 DWORD cchMpInf = RT_ELEMENTS(wszMpInf) - wcslen(pwszInfName) - 1 - 1; 849 971 LPCWSTR pwszInfPath = NULL; 850 972 bool bIsFile = false; … … 861 983 } 862 984 863 wcscat(wszMpInf, L"VBoxNetAdp.inf");985 wcscat(wszMpInf, pwszInfName); 864 986 pwszInfPath = wszMpInf; 865 987 bIsFile = true; … … 887 1009 //first, try to update Host Only Network Interface 888 1010 BOOL fRebootRequired = FALSE; 889 hr = VBoxNetCfgWinUpdateHostOnlyNetworkInterface(pwszInfPath, &fRebootRequired );1011 hr = VBoxNetCfgWinUpdateHostOnlyNetworkInterface(pwszInfPath, &fRebootRequired, pwszId); 890 1012 if (SUCCEEDED(hr)) 891 1013 { … … 938 1060 } 939 1061 940 UINT __stdcall RemoveHostOnlyInterfaces(MSIHANDLE hModule) 1062 UINT __stdcall CreateHostOnlyInterface(MSIHANDLE hModule) 1063 { 1064 return _createHostOnlyInterface(hModule, NETADP_ID, L"VBoxNetAdp.inf"); 1065 } 1066 1067 UINT __stdcall Ndis6CreateHostOnlyInterface(MSIHANDLE hModule) 1068 { 1069 return _createHostOnlyInterface(hModule, NETADP6_ID, L"VBoxNetAdp6.inf"); 1070 } 1071 1072 1073 static UINT _removeHostOnlyInterfaces(MSIHANDLE hModule, LPCWSTR pwszId) 941 1074 { 942 1075 #ifdef VBOX_WITH_NETFLT … … 947 1080 BOOL bSetupModeInteractive = SetupSetNonInteractiveMode(FALSE); 948 1081 949 HRESULT hr = VBoxNetCfgWinRemoveAllNetDevicesOfId( NETADP_ID);1082 HRESULT hr = VBoxNetCfgWinRemoveAllNetDevicesOfId(pwszId); 950 1083 if (SUCCEEDED(hr)) 951 1084 { 952 hr = VBoxDrvCfgInfUninstallAllSetupDi(&GUID_DEVCLASS_NET, NETADP_ID, L"Net", 0/* could be SUOI_FORCEDELETE */);1085 hr = VBoxDrvCfgInfUninstallAllSetupDi(&GUID_DEVCLASS_NET, pwszId, L"Net", 0/* could be SUOI_FORCEDELETE */); 953 1086 if (FAILED(hr)) 954 1087 { … … 970 1103 } 971 1104 972 UINT __stdcall StopHostOnlyInterfaces(MSIHANDLE hModule) 1105 UINT __stdcall RemoveHostOnlyInterfaces(MSIHANDLE hModule) 1106 { 1107 return _removeHostOnlyInterfaces(hModule, NETADP_ID); 1108 } 1109 1110 UINT __stdcall Ndis6RemoveHostOnlyInterfaces(MSIHANDLE hModule) 1111 { 1112 return _removeHostOnlyInterfaces(hModule, NETADP6_ID); 1113 } 1114 1115 1116 1117 static UINT _stopHostOnlyInterfaces(MSIHANDLE hModule, LPCWSTR pwszId) 973 1118 { 974 1119 #ifdef VBOX_WITH_NETFLT … … 979 1124 BOOL bSetupModeInteractive = SetupSetNonInteractiveMode(FALSE); 980 1125 981 HRESULT hr = VBoxNetCfgWinPropChangeAllNetDevicesOfId( NETADP_ID, VBOXNECTFGWINPROPCHANGE_TYPE_DISABLE);1126 HRESULT hr = VBoxNetCfgWinPropChangeAllNetDevicesOfId(pwszId, VBOXNECTFGWINPROPCHANGE_TYPE_DISABLE); 982 1127 if (SUCCEEDED(hr)) 983 1128 { 984 hr = VBoxDrvCfgInfUninstallAllSetupDi(&GUID_DEVCLASS_NET, NETADP_ID, L"Net", 0/* could be SUOI_FORCEDELETE */);1129 hr = VBoxDrvCfgInfUninstallAllSetupDi(&GUID_DEVCLASS_NET, pwszId, L"Net", 0/* could be SUOI_FORCEDELETE */); 985 1130 if (FAILED(hr)) 986 1131 logStringW(hModule, L"StopHostOnlyInterfaces: VBoxDrvCfgInfUninstallAllSetupDi failed, hr = 0x%x", hr); … … 1000 1145 } 1001 1146 1002 UINT __stdcall UpdateHostOnlyInterfaces(MSIHANDLE hModule) 1147 UINT __stdcall StopHostOnlyInterfaces(MSIHANDLE hModule) 1148 { 1149 return _stopHostOnlyInterfaces(hModule, NETADP_ID); 1150 } 1151 1152 UINT __stdcall Ndis6StopHostOnlyInterfaces(MSIHANDLE hModule) 1153 { 1154 return _stopHostOnlyInterfaces(hModule, NETADP6_ID); 1155 } 1156 1157 static UINT _updateHostOnlyInterfaces(MSIHANDLE hModule, LPCWSTR pwszInfName, LPCWSTR pwszId) 1003 1158 { 1004 1159 #ifdef VBOX_WITH_NETFLT … … 1010 1165 1011 1166 WCHAR wszMpInf[MAX_PATH]; 1012 DWORD cchMpInf = RT_ELEMENTS(wszMpInf) - sizeof("VBoxNetAdp.inf")- 1;1167 DWORD cchMpInf = RT_ELEMENTS(wszMpInf) - wcslen(pwszInfName) - 1 - 1; 1013 1168 LPCWSTR pwszInfPath = NULL; 1014 1169 bool bIsFile = false; … … 1025 1180 } 1026 1181 1027 wcscat(wszMpInf, L"VBoxNetAdp.inf");1182 wcscat(wszMpInf, pwszInfName); 1028 1183 pwszInfPath = wszMpInf; 1029 1184 bIsFile = true; … … 1044 1199 1045 1200 BOOL fRebootRequired = FALSE; 1046 HRESULT hr = VBoxNetCfgWinUpdateHostOnlyNetworkInterface(pwszInfPath, &fRebootRequired );1201 HRESULT hr = VBoxNetCfgWinUpdateHostOnlyNetworkInterface(pwszInfPath, &fRebootRequired, pwszId); 1047 1202 if (SUCCEEDED(hr)) 1048 1203 { … … 1074 1229 /* Never fail the install even if we did not succeed. */ 1075 1230 return ERROR_SUCCESS; 1231 } 1232 1233 UINT __stdcall UpdateHostOnlyInterfaces(MSIHANDLE hModule) 1234 { 1235 return _updateHostOnlyInterfaces(hModule, L"VBoxNetAdp.inf", NETADP_ID); 1236 } 1237 1238 UINT __stdcall Ndis6UpdateHostOnlyInterfaces(MSIHANDLE hModule) 1239 { 1240 return _updateHostOnlyInterfaces(hModule, L"VBoxNetAdp6.inf", NETADP6_ID); 1076 1241 } 1077 1242 -
trunk/src/VBox/Installer/win/InstallHelper/VBoxInstallHelper.def
r40997 r52592 25 25 InstallNetFlt 26 26 UninstallNetFlt 27 InstallNetLwf 28 UninstallNetLwf 27 29 UninstallTAPInstances 28 30 CreateHostOnlyInterface … … 30 32 UpdateHostOnlyInterfaces 31 33 RemoveHostOnlyInterfaces 34 Ndis6CreateHostOnlyInterface 35 Ndis6StopHostOnlyInterfaces 36 Ndis6UpdateHostOnlyInterfaces 37 Ndis6RemoveHostOnlyInterfaces 32 38
Note:
See TracChangeset
for help on using the changeset viewer.