Changeset 40711 in vbox for trunk/src/VBox/Additions/WINNT
- Timestamp:
- Mar 29, 2012 3:28:02 PM (13 years ago)
- Location:
- trunk/src/VBox/Additions/WINNT/Installer
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Installer/VBoxGuestAdditions.nsi
r40270 r40711 214 214 Var g_bLogEnable ; Do logging when installing? "true" or "false" 215 215 Var g_bWithWDDM ; Install the WDDM driver instead of the XPDM one 216 Var g_bCapDllCache ; Capability: Does the (Windows) guest have have a DLL cache which needs to be taken care of? 216 217 Var g_bCapWDDM ; Capability: Is the guest able to handle/use our WDDM driver? 217 218 … … 793 794 ; Update DLL cache 794 795 ; 795 ${If} ${FileExists} "$g_strSystemDir\dllcache" 796 SetOutPath "$g_strSystemDir\dllcache" 797 ${IfNot} ${FileExists} "$g_strSystemDir\dllcache\msd3d8.dll" 798 CopyFiles /SILENT "$g_strSystemDir\dllcache\d3d8.dll" "$g_strSystemDir\dllcache\msd3d8.dll" 796 ${If} $g_bCapDllCache == "true" 797 ${If} ${FileExists} "$g_strSystemDir\dllcache" 798 SetOutPath "$g_strSystemDir\dllcache" 799 ${CopyFileEx} "" "$g_strSystemDir\dllcache\d3d8.dll" "$g_strSystemDir\dllcache\msd3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%" 800 ${CopyFileEx} "" "$g_strSystemDir\dllcache\d3d9.dll" "$g_strSystemDir\dllcache\msd3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%" 801 802 Push "$g_strSystemDir\dllcache\d3d8.dll" 803 Call PrepareWRPFile 804 805 Push "$g_strSystemDir\dllcache\d3d9.dll" 806 Call PrepareWRPFile 807 808 ; Exchange DLLs 809 ${InstallFileEx} "" "$%PATH_OUT%\bin\additions\d3d8.dll" "$g_strSystemDir\dllcache\d3d8.dll" "$TEMP" 810 ${InstallFileEx} "" "$%PATH_OUT%\bin\additions\d3d9.dll" "$g_strSystemDir\dllcache\d3d9.dll" "$TEMP" 811 ${Else} 812 DetailPrint "DLL cache does not exist, skipping" 799 813 ${EndIf} 800 ${IfNot} ${FileExists} "$g_strSystemDir\dllcache\msd3d9.dll" 801 CopyFiles /SILENT "$g_strSystemDir\dllcache\d3d9.dll" "$g_strSystemDir\dllcache\msd3d9.dll" 802 ${EndIf} 803 804 Push "$g_strSystemDir\dllcache\d3d8.dll" 805 Call PrepareWRPFile 806 807 Push "$g_strSystemDir\dllcache\d3d9.dll" 808 Call PrepareWRPFile 809 810 ; Exchange DLLs 811 !insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED "$%PATH_OUT%\bin\additions\d3d8.dll" "$g_strSystemDir\dllcache\d3d8.dll" "$TEMP" 812 !insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED "$%PATH_OUT%\bin\additions\d3d9.dll" "$g_strSystemDir\dllcache\d3d9.dll" "$TEMP" 813 814 ; If exchange above failed, do it on reboot 815 !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "$%PATH_OUT%\bin\additions\d3d8.dll" "$g_strSystemDir\dllcache\d3d8.dll" "$TEMP" 816 !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "$%PATH_OUT%\bin\additions\d3d9.dll" "$g_strSystemDir\dllcache\d3d9.dll" "$TEMP" 817 ${Else} 818 DetailPrint "DLL cache does not exist, skipping" 819 ${EndIf} 820 814 ${EndIf} 815 821 816 ; 822 817 ; Save original DLLs (only if msd3d*.dll does not exist) ... 823 818 ; 824 819 SetOutPath $g_strSystemDir 825 ${IfNot} ${FileExists} "$g_strSystemDir\msd3d8.dll" 826 CopyFiles /SILENT "$g_strSystemDir\d3d8.dll" "$g_strSystemDir\msd3d8.dll" 827 ${EndIf} 828 ${IfNot} ${FileExists} "$g_strSystemDir\msd3d9.dll" 829 CopyFiles /SILENT "$g_strSystemDir\d3d9.dll" "$g_strSystemDir\msd3d9.dll" 830 ${EndIf} 820 ${CopyFileEx} "" "$g_strSystemDir\d3d8.dll" "$g_strSystemDir\msd3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%" 821 ${CopyFileEx} "" "$g_strSystemDir\d3d9.dll" "$g_strSystemDir\msd3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%" 831 822 832 823 Push "$g_strSystemDir\d3d8.dll" … … 837 828 838 829 ; Exchange DLLs 839 !insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED "$%PATH_OUT%\bin\additions\d3d8.dll" "$g_strSystemDir\d3d8.dll" "$TEMP" 840 !insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED "$%PATH_OUT%\bin\additions\d3d9.dll" "$g_strSystemDir\d3d9.dll" "$TEMP" 841 842 ; If exchange above failed, do it on reboot 843 !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "$%PATH_OUT%\bin\additions\d3d8.dll" "$g_strSystemDir\d3d8.dll" "$TEMP" 844 !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "$%PATH_OUT%\bin\additions\d3d9.dll" "$g_strSystemDir\d3d9.dll" "$TEMP" 830 ${InstallFileEx} "" "$%PATH_OUT%\bin\additions\d3d8.dll" "$g_strSystemDir\d3d8.dll" "$TEMP" 831 ${InstallFileEx} "" "$%PATH_OUT%\bin\additions\d3d9.dll" "$g_strSystemDir\d3d9.dll" "$TEMP" 845 832 846 833 !if $%BUILD_TARGET_ARCH% == "amd64" … … 848 835 ; Also copy 32-bit DLLs on 64-bit Windows in SysWOW64 node 849 836 SetOutPath $g_strSysWow64 850 DetailPrint "Installing Direct3D support (SysWOW64: $g_strSysWow64) ..."837 DetailPrint "Installing Direct3D support for 32-bit applications (SysWOW64: $g_strSysWow64) ..." 851 838 FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\libWine.dll" 852 839 FILE "$%VBOX_PATH_ADDITIONS_WIN_X86%\VBoxD3D8.dll" … … 857 844 ; Update DLL cache 858 845 ; 859 ${If} ${FileExists} "$g_strSysWow64\dllcache" 860 SetOutPath "$g_strSysWow64\dllcache" 861 ${IfNot} ${FileExists} "$g_strSysWow64\dllcache\msd3d8.dll" 862 CopyFiles /SILENT "$g_strSysWow64\dllcache\d3d8.dll" "$g_strSysWow64\dllcache\msd3d8.dll" 846 ${If} $g_bCapDllCache == "true" 847 ${If} ${FileExists} "$g_strSysWow64\dllcache" 848 SetOutPath "$g_strSysWow64\dllcache" 849 ${CopyFileEx} "" "$g_strSysWow64\dllcache\d3d8.dll" "$g_strSysWow64\dllcache\msd3d8.dll" "Microsoft Corporation" "x86" 850 ${CopyFileEx} "" "$g_strSysWow64\dllcache\d3d9.dll" "$g_strSysWow64\dllcache\msd3d9.dll" "Microsoft Corporation" "x86" 851 852 Push "$g_strSysWow64\dllcache\d3d8.dll" 853 Call PrepareWRPFile 854 855 Push "$g_strSysWow64\dllcache\d3d9.dll" 856 Call PrepareWRPFile 857 858 ; Exchange DLLs 859 ${InstallFileEx} "" "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d8.dll" "$g_strSysWow64\dllcache\d3d8.dll" "$TEMP" 860 ${InstallFileEx} "" "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d9.dll" "$g_strSysWow64\dllcache\d3d9.dll" "$TEMP" 861 ${Else} 862 DetailPrint "DLL cache does not exist, skipping" 863 863 ${EndIf} 864 ${IfNot} ${FileExists} "$g_strSysWow64\dllcache\msd3d9.dll"865 CopyFiles /SILENT "$g_strSysWow64\dllcache\d3d9.dll" "$g_strSysWow64\dllcache\msd3d9.dll"866 ${EndIf}867 868 Push "$g_strSysWow64\dllcache\d3d8.dll"869 Call PrepareWRPFile870 871 Push "$g_strSysWow64\dllcache\d3d9.dll"872 Call PrepareWRPFile873 874 ; Exchange DLLs875 !insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d8.dll" "$g_strSysWow64\dllcache\d3d8.dll" "$TEMP"876 !insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d9.dll" "$g_strSysWow64\dllcache\d3d9.dll" "$TEMP"877 878 ; If exchange above failed, do it on reboot879 !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d8.dll" "$g_strSysWow64\dllcache\d3d8.dll" "$TEMP"880 !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d9.dll" "$g_strSysWow64\dllcache\d3d9.dll" "$TEMP"881 ${Else}882 DetailPrint "DLL cache does not exist, skipping"883 864 ${EndIf} 884 865 … … 888 869 889 870 ; Save original DLLs (only if msd3d*.dll does not exist) ... 890 ${IfNot} ${FileExists} "$g_strSysWow64\msd3d8.dll" 891 CopyFiles /SILENT "$g_strSysWow64\d3d8.dll" "$g_strSysWow64\msd3d8.dll" 892 ${EndIf} 893 ${IfNot} ${FileExists} "$g_strSysWow64\msd3d9.dll" 894 CopyFiles /SILENT "$g_strSysWow64\d3d9.dll" "$g_strSysWow64\msd3d9.dll" 895 ${EndIf} 871 ${CopyFileEx} "" "$g_strSysWow64\d3d8.dll" "$g_strSysWow64\msd3d8.dll" "Microsoft Corporation" "x86" 872 ${CopyFileEx} "" "$g_strSysWow64\d3d9.dll" "$g_strSysWow64\msd3d9.dll" "Microsoft Corporation" "x86" 896 873 897 874 Push "$g_strSysWow64\d3d8.dll" … … 902 879 903 880 ; Exchange DLLs 904 !insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d8.dll" "$g_strSysWow64\d3d8.dll" "$TEMP" 905 !insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d9.dll" "$g_strSysWow64\d3d9.dll" "$TEMP" 906 907 ; If exchange above failed, do it on reboot 908 !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d8.dll" "$g_strSysWow64\d3d8.dll" "$TEMP" 909 !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d9.dll" "$g_strSysWow64\d3d9.dll" "$TEMP" 881 ${InstallFileEx} "" "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d8.dll" "$g_strSysWow64\d3d8.dll" "$TEMP" 882 ${InstallFileEx} "" "$%VBOX_PATH_ADDITIONS_WIN_X86%\d3d9.dll" "$g_strSysWow64\d3d9.dll" "$TEMP" 910 883 911 884 !endif ; amd64 … … 1111 1084 StrCpy $g_bOnlyExtract "false" 1112 1085 StrCpy $g_bWithWDDM "false" 1086 StrCpy $g_bCapDllCache "false" 1113 1087 StrCpy $g_bCapWDDM "false" 1114 1088 StrCpy $g_bPostInstallStatus "false" -
trunk/src/VBox/Additions/WINNT/Installer/VBoxGuestAdditionsCommon.nsh
r40270 r40711 565 565 StrCpy $g_iSystemMode $0 566 566 567 ; Does the guest have a DLL cache? 568 ${If} $g_strWinVersion == "Vista" 569 ${OrIf} $g_strWinVersion == "7" 570 ${OrIf} $g_strWinVersion == "8" 571 StrCpy $g_bCapDllCache "true" 572 ${EndIf} 573 567 574 ; Check whether this OS is capable of handling WDDM drivers 568 575 Call ${un}CheckForWDDMCapability … … 760 767 Push "${Vendor}" 761 768 Push "${File}" 769 DetailPrint "Verifying file $\"${File}$\" ..." 762 770 Call ${un}VerifyFile 763 771 !macroend 764 772 !define VerifyFileEx "!insertmacro VerifyFileEx" 773 774 ; 775 ; Macro for copying a file only if the source file is verified 776 ; to be from a certain vendor and architecture. 777 ; @return Stack: "0" if copied, "1" if not, "2" on error / not found. 778 ; @param Un/Installer prefix; either "" or "un". 779 ; @param Name of file to verify and copy to destination. 780 ; @param Destination name to copy verified file to. 781 ; @param Vendor to check for. 782 ; @param Architecture ("x86" or "amd64") to check for. 783 ; 784 !macro CopyFileEx un FileSrc FileDest Vendor Architecture 785 Push $0 786 Push "${Architecture}" 787 Push "${Vendor}" 788 Push "${FileSrc}" 789 Call ${un}VerifyFile 790 Pop $0 791 ${If} $0 == "0" 792 DetailPrint "Copying verified file $\"${FileSrc}$\" to $\"${FileDest}$\" ..." 793 CopyFiles /SILENT "${FileSrc}" "${FileDest}" 794 ${Else} 795 DetailPrint "Skipping to copy file $\"${FileSrc}$\" to $\"${FileDest}$\" (not Vendor: ${Vendor}, Architecture: ${Architecture})" 796 ${EndIf} 797 ; Push result popped off the stack to stack again. 798 Push $0 799 !macroend 800 !define CopyFileEx "!insertmacro CopyFileEx" 801 802 ; 803 ; Macro for installing a library/DLL. 804 ; @return Stack: "0" if copied, "1" if not, "2" on error / not found. 805 ; @param Un/Installer prefix; either "" or "un". 806 ; @param Name of lib/DLL to verify and copy to destination. 807 ; @param Destination name to copy verified file to. 808 ; @param Temporary folder used for exchanging the (locked) lib/DLL after a reboot. 809 ; 810 !macro InstallFileEx un FileSrc FileDest DirTemp 811 DetailPrint "Installing library $\"${FileSrc}$\" to $\"${FileDest}$\" ..." 812 ; Try the gentle way and replace the file instantly 813 !insertmacro InstallLib DLL NOTSHARED NOREBOOT_NOTPROTECTED "${FileSrc}" "${FileDest}" "${DirTemp}" 814 ; If the above call didn't help, use a (later) reboot to replace the file 815 !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "${FileSrc}" "${FileDest}" "${DirTemp}" 816 !macroend 817 !define InstallFileEx "!insertmacro InstallFileEx" 818 819 ; 820 ; Macro for installing a library/DLL. 821 ; @return Stack: "0" if copied, "1" if not, "2" on error / not found. 822 ; @param Un/Installer prefix; either "" or "un". 823 ; @param Name of lib/DLL to verify and copy to destination. 824 ; @param Destination name to copy verified file to. 825 ; @param Temporary folder used for exchanging the (locked) lib/DLL after a reboot. 826 ; @param Vendor to check for. 827 ; @param Architecture ("x86" or "amd64") to check for. 828 ; 829 !macro InstallFileVerify un FileSrc FileDest DirTemp Vendor Architecture 830 Push $0 831 Push "${Architecture}" 832 Push "${Vendor}" 833 Push "${FileSrc}" 834 DetailPrint "Verifying library $\"${FileSrc}$\" ..." 835 Call ${un}VerifyFile 836 Pop $0 837 ${If} $0 == "0" 838 ${InstallFileEx} ${un} ${FileSrc} ${FileDest} ${DirTemp} 839 ${Else} 840 DetailPrint "File $\"${FileSrc}$\" did not pass verification (Vendor: ${Vendor}, Architecture: ${Architecture})" 841 ${EndIf} 842 ; Push result popped off the stack to stack again. 843 Push $0 844 !macroend 845 !define InstallFileVerify "!insertmacro InstallFileVerify" 765 846 766 847 ; … … 793 874 ${EndIf} 794 875 795 ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%" 876 ${If} $g_bCapDllCache == "true" 877 ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\d3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%" 878 Pop $0 879 ${If} $0 == "1" 880 Goto verify_msd3d 881 ${EndIf} 882 ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\d3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%" 883 Pop $0 884 ${If} $0 == "1" 885 Goto verify_msd3d 886 ${EndIf} 887 ${EndIf} 888 889 !if $%BUILD_TARGET_ARCH% == "amd64" 890 891 ${VerifyFileEx} "${un}" "$g_strSysWow64\d3d8.dll" "Microsoft Corporation" "x86" 796 892 Pop $0 797 893 ${If} $0 == "1" 798 894 Goto verify_msd3d 799 895 ${EndIf} 800 ${VerifyFileEx} "${un}" "$ SYSDIR\dllcache\d3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"896 ${VerifyFileEx} "${un}" "$g_strSysWow64\d3d9.dll" "Microsoft Corporation" "x86" 801 897 Pop $0 802 898 ${If} $0 == "1" … … 804 900 ${EndIf} 805 901 806 !if $%BUILD_TARGET_ARCH% == "amd64" 807 808 ${VerifyFileEx} "${un}" "$g_strSysWow64\d3d8.dll" "Microsoft Corporation" "x86" 809 Pop $0 810 ${If} $0 == "1" 811 Goto verify_msd3d 812 ${EndIf} 813 ${VerifyFileEx} "${un}" "$g_strSysWow64\d3d9.dll" "Microsoft Corporation" "x86" 814 Pop $0 815 ${If} $0 == "1" 816 Goto verify_msd3d 817 ${EndIf} 818 819 ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\d3d8.dll" "Microsoft Corporation" "x86" 820 Pop $0 821 ${If} $0 == "1" 822 Goto verify_msd3d 823 ${EndIf} 824 ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\d3d9.dll" "Microsoft Corporation" "x86" 825 Pop $0 826 ${If} $0 == "1" 827 Goto verify_msd3d 902 ${If} $g_bCapDllCache == "true" 903 ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\d3d8.dll" "Microsoft Corporation" "x86" 904 Pop $0 905 ${If} $0 == "1" 906 Goto verify_msd3d 907 ${EndIf} 908 ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\d3d9.dll" "Microsoft Corporation" "x86" 909 Pop $0 910 ${If} $0 == "1" 911 Goto verify_msd3d 912 ${EndIf} 828 913 ${EndIf} 829 914 … … 845 930 ${EndIf} 846 931 847 ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\msd3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%" 932 ${If} $g_bCapDllCache == "true" 933 ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\msd3d8.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%" 934 Pop $0 935 ${If} $0 == "1" 936 Goto invalid 937 ${EndIf} 938 ${VerifyFileEx} "${un}" "$SYSDIR\dllcache\msd3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%" 939 Pop $0 940 ${If} $0 == "1" 941 Goto invalid 942 ${EndIf} 943 ${EndIf} 944 945 !if $%BUILD_TARGET_ARCH% == "amd64" 946 947 ${VerifyFileEx} "${un}" "$g_strSysWow64\msd3d8.dll" "Microsoft Corporation" "x86" 848 948 Pop $0 849 949 ${If} $0 == "1" 850 950 Goto invalid 851 951 ${EndIf} 852 ${VerifyFileEx} "${un}" "$ SYSDIR\dllcache\msd3d9.dll" "Microsoft Corporation" "$%BUILD_TARGET_ARCH%"952 ${VerifyFileEx} "${un}" "$g_strSysWow64\msd3d9.dll" "Microsoft Corporation" "x86" 853 953 Pop $0 854 954 ${If} $0 == "1" … … 856 956 ${EndIf} 857 957 858 !if $%BUILD_TARGET_ARCH% == "amd64" 859 860 ${VerifyFileEx} "${un}" "$g_strSysWow64\msd3d8.dll" "Microsoft Corporation" "x86" 861 Pop $0 862 ${If} $0 == "1" 863 Goto invalid 864 ${EndIf} 865 ${VerifyFileEx} "${un}" "$g_strSysWow64\msd3d9.dll" "Microsoft Corporation" "x86" 866 Pop $0 867 ${If} $0 == "1" 868 Goto invalid 869 ${EndIf} 870 871 ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d8.dll" "Microsoft Corporation" "x86" 872 Pop $0 873 ${If} $0 == "1" 874 Goto invalid 875 ${EndIf} 876 ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d9.dll" "Microsoft Corporation" "x86" 877 Pop $0 878 ${If} $0 == "1" 879 Goto invalid 958 ${If} $g_bCapDllCache == "true" 959 ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d8.dll" "Microsoft Corporation" "x86" 960 Pop $0 961 ${If} $0 == "1" 962 Goto invalid 963 ${EndIf} 964 ${VerifyFileEx} "${un}" "$g_strSysWow64\dllcache\msd3d9.dll" "Microsoft Corporation" "x86" 965 Pop $0 966 ${If} $0 == "1" 967 Goto invalid 968 ${EndIf} 880 969 ${EndIf} 881 970
Note:
See TracChangeset
for help on using the changeset viewer.