diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ext/NetFx/ca/netfxca.cpp | 144 | ||||
| -rw-r--r-- | src/ext/NetFx/ca/netfxca.def | 1 | ||||
| -rw-r--r-- | src/ext/NetFx/ca/netfxca.vcxproj | 2 | ||||
| -rw-r--r-- | src/ext/NetFx/ca/precomp.h | 3 | ||||
| -rw-r--r-- | src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs | 12 | ||||
| -rw-r--r-- | src/ext/NetFx/wixext/NetFxCompiler.cs | 213 | ||||
| -rw-r--r-- | src/ext/NetFx/wixext/NetFxExtensionData.cs | 2 | ||||
| -rw-r--r-- | src/ext/NetFx/wixext/NetfxTableDefinitions.cs | 16 | ||||
| -rw-r--r-- | src/ext/NetFx/wixext/Symbols/NetFxDotNetCompatibilityCheckSymbol.cs | 79 | ||||
| -rw-r--r-- | src/ext/NetFx/wixext/Symbols/NetfxSymbolDefinitions.cs | 6 | ||||
| -rw-r--r-- | src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi | 9 | ||||
| -rw-r--r-- | src/ext/NetFx/wixlib/netfx.wixproj | 6 | ||||
| -rw-r--r-- | src/internal/SetBuildNumber/Directory.Packages.props.pp | 6 |
13 files changed, 496 insertions, 3 deletions
diff --git a/src/ext/NetFx/ca/netfxca.cpp b/src/ext/NetFx/ca/netfxca.cpp index f0704790..cd086c53 100644 --- a/src/ext/NetFx/ca/netfxca.cpp +++ b/src/ext/NetFx/ca/netfxca.cpp | |||
| @@ -36,6 +36,10 @@ LPCWSTR vcsNgenStrongName = | |||
| 36 | L"SELECT `Name`,`Value` FROM `MsiAssemblyName` WHERE `Component_`=?"; | 36 | L"SELECT `Name`,`Value` FROM `MsiAssemblyName` WHERE `Component_`=?"; |
| 37 | enum eNgenStrongName { ngsnName = 1, ngsnValue }; | 37 | enum eNgenStrongName { ngsnName = 1, ngsnValue }; |
| 38 | 38 | ||
| 39 | LPCWSTR vscDotNetCompatibilityCheckQuery = | ||
| 40 | L"SELECT `Platform`, `RuntimeType`, `Version`, `RollForward`, `Property` FROM `Wix4NetFxDotNetCheck`"; | ||
| 41 | enum eDotNetCompatibilityCheckQuery { platform = 1, runtimeType, version, rollForward, property }; | ||
| 42 | |||
| 39 | // Searches subdirectories of the given path for the highest version of ngen.exe available | 43 | // Searches subdirectories of the given path for the highest version of ngen.exe available |
| 40 | static HRESULT GetNgenVersion( | 44 | static HRESULT GetNgenVersion( |
| 41 | __in LPWSTR pwzParentPath, | 45 | __in LPWSTR pwzParentPath, |
| @@ -500,6 +504,15 @@ extern "C" UINT __stdcall SchedNetFx( | |||
| 500 | hr = WcaInitialize(hInstall, "SchedNetFx"); | 504 | hr = WcaInitialize(hInstall, "SchedNetFx"); |
| 501 | ExitOnFailure(hr, "failed to initialize"); | 505 | ExitOnFailure(hr, "failed to initialize"); |
| 502 | 506 | ||
| 507 | // If Wix4NetFxNativeImage table doesn't exist skip the rest of this custom action | ||
| 508 | hr = WcaTableExists(L"Wix4NetFxNativeImage"); | ||
| 509 | if (S_FALSE == hr) | ||
| 510 | { | ||
| 511 | hr = S_OK; | ||
| 512 | ExitFunction(); | ||
| 513 | } | ||
| 514 | ExitOnFailure(hr, "failed to check if table Wix4NetFxNativeImage exists"); | ||
| 515 | |||
| 503 | hr = GetNgenPath(&pwz32Ngen, FALSE); | 516 | hr = GetNgenPath(&pwz32Ngen, FALSE); |
| 504 | f32NgenExeExists = SUCCEEDED(hr); | 517 | f32NgenExeExists = SUCCEEDED(hr); |
| 505 | if (HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) == hr || HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) == hr) | 518 | if (HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) == hr || HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) == hr) |
| @@ -879,3 +892,134 @@ LExit: | |||
| 879 | return WcaFinalize(er); | 892 | return WcaFinalize(er); |
| 880 | } | 893 | } |
| 881 | 894 | ||
| 895 | /****************************************************************** | ||
| 896 | DotNetCompatibilityCheck - entry point for NetFx Custom Action | ||
| 897 | |||
| 898 | *******************************************************************/ | ||
| 899 | extern "C" UINT __stdcall DotNetCompatibilityCheck( | ||
| 900 | __in MSIHANDLE hInstall | ||
| 901 | ) | ||
| 902 | { | ||
| 903 | // AssertSz(FALSE, "debug DotNetCompatibilityCheck"); | ||
| 904 | |||
| 905 | HRESULT hr = S_OK; | ||
| 906 | UINT er = ERROR_SUCCESS; | ||
| 907 | |||
| 908 | PMSIHANDLE hView = NULL; | ||
| 909 | PMSIHANDLE hRec = NULL; | ||
| 910 | LPWSTR pwzPlatform = NULL; | ||
| 911 | LPWSTR pwzNetCoreCheckBinaryId = NULL; | ||
| 912 | LPWSTR pwzNetCoreCheckDirectoryName = NULL; | ||
| 913 | LPWSTR pwzNetCoreCheckDirectoryPath = NULL; | ||
| 914 | LPWSTR pwzNetCoreCheckFilePath = NULL; | ||
| 915 | LPWSTR pwzRuntimeType = NULL; | ||
| 916 | LPWSTR pwzVersion = NULL; | ||
| 917 | LPWSTR pwzRollForward = NULL; | ||
| 918 | LPWSTR pwzProperty = NULL; | ||
| 919 | LPWSTR pwzCommandLine = NULL; | ||
| 920 | HANDLE hProcess = NULL; | ||
| 921 | DWORD dwExitCode = 0; | ||
| 922 | |||
| 923 | // Initialize | ||
| 924 | hr = WcaInitialize(hInstall, "DotNetCompatibilityCheck"); | ||
| 925 | ExitOnFailure(hr, "failed to initialize"); | ||
| 926 | |||
| 927 | // If Wix4NetFxDotNetCheck table doesn't exist skip the rest of this custom action | ||
| 928 | hr = WcaTableExists(L"Wix4NetFxDotNetCheck"); | ||
| 929 | if (S_FALSE == hr) | ||
| 930 | { | ||
| 931 | hr = S_OK; | ||
| 932 | ExitFunction(); | ||
| 933 | } | ||
| 934 | ExitOnFailure(hr, "failed to check if table Wix4NetFxDotNetCheck exists"); | ||
| 935 | |||
| 936 | // Open view on .NET compatibility check table | ||
| 937 | hr = WcaOpenExecuteView(vscDotNetCompatibilityCheckQuery, &hView); | ||
| 938 | ExitOnFailure(hr, "failed to open view on Wix4NetFxDotNetCheck table"); | ||
| 939 | |||
| 940 | // Go through all records and run NetCorCheck.exe for each | ||
| 941 | while (S_OK == (hr = WcaFetchRecord(hView, &hRec))) | ||
| 942 | { | ||
| 943 | // Extract NetCoreCheck.exe for platform to temp directory | ||
| 944 | hr = WcaGetRecordString(hRec, platform, &pwzPlatform); | ||
| 945 | ExitOnFailure(hr, "failed to get Wix4NetFxDotNetCheck.Platform"); | ||
| 946 | |||
| 947 | hr = StrAllocFormatted(&pwzNetCoreCheckBinaryId, L"Wix4NetCheck_%ls", pwzPlatform); | ||
| 948 | ExitOnFailure(hr, "failed to get NetCoreCheck binary id for platform %ls", pwzPlatform); | ||
| 949 | |||
| 950 | hr = GuidCreate(&pwzNetCoreCheckDirectoryName); | ||
| 951 | ExitOnFailure(hr, "failed to set NetCoreCheck directory name"); | ||
| 952 | |||
| 953 | hr = PathCreateTempDirectory(NULL, pwzNetCoreCheckDirectoryName, 1, &pwzNetCoreCheckDirectoryPath); | ||
| 954 | ExitOnFailure(hr, "failed to make NetCoreCheck directory path for name %ls", pwzNetCoreCheckDirectoryName); | ||
| 955 | |||
| 956 | hr = StrAllocFormatted(&pwzNetCoreCheckFilePath, L"%lsNetCoreCheck.exe", pwzNetCoreCheckDirectoryPath); | ||
| 957 | ExitOnFailure(hr, "failed to set NetCoreCheck file path for directory %ls", pwzNetCoreCheckDirectoryPath); | ||
| 958 | |||
| 959 | hr = WcaExtractBinaryToFile(pwzNetCoreCheckBinaryId, pwzNetCoreCheckFilePath); | ||
| 960 | ExitOnFailure(hr, "failed to extract NetCoreCheck from binary '%ls' to file %ls", pwzNetCoreCheckBinaryId, pwzNetCoreCheckFilePath); | ||
| 961 | |||
| 962 | // Read all NetCoreCheck.exe parameters and property | ||
| 963 | hr = WcaGetRecordString(hRec, runtimeType, &pwzRuntimeType); | ||
| 964 | ExitOnFailure(hr, "failed to get Wix4NetFxDotNetCheck.RuntimeType"); | ||
| 965 | |||
| 966 | hr = WcaGetRecordString(hRec, version, &pwzVersion); | ||
| 967 | ExitOnFailure(hr, "failed to get Wix4NetFxDotNetCheck.Version"); | ||
| 968 | |||
| 969 | hr = WcaGetRecordString(hRec, rollForward, &pwzRollForward); | ||
| 970 | ExitOnFailure(hr, "failed to get Wix4NetFxDotNetCheck.RollForward"); | ||
| 971 | |||
| 972 | hr = WcaGetRecordString(hRec, property, &pwzProperty); | ||
| 973 | ExitOnFailure(hr, "failed to get Wix4NetFxDotNetCheck.Property"); | ||
| 974 | |||
| 975 | // Run NetCoreCheck.exe and store its result in property | ||
| 976 | hr = StrAllocFormatted(&pwzCommandLine, L"-n %ls -v %ls -r %ls", pwzRuntimeType, pwzVersion, pwzRollForward); | ||
| 977 | ExitOnFailure(hr, "failed to set NetCoreCheck command line"); | ||
| 978 | WcaLog(LOGMSG_VERBOSE, "Command: %ls %ls", pwzNetCoreCheckFilePath, pwzCommandLine); | ||
| 979 | |||
| 980 | hr = ProcExec(pwzNetCoreCheckFilePath, pwzCommandLine, SW_HIDE, &hProcess); | ||
| 981 | ExitOnFailure(hr, "failed to run NetCoreCheck from binary '%ls' with command line: %ls %ls", pwzNetCoreCheckBinaryId, pwzNetCoreCheckFilePath, pwzCommandLine); | ||
| 982 | |||
| 983 | hr = ProcWaitForCompletion(hProcess, INFINITE, &dwExitCode); | ||
| 984 | ExitOnFailure(hr, "failed to finish NetCoreCheck from binary '%ls' with command line: %ls %ls", pwzNetCoreCheckBinaryId, pwzNetCoreCheckFilePath, pwzCommandLine); | ||
| 985 | WcaLog(LOGMSG_VERBOSE, "Exit code: %lu", dwExitCode); | ||
| 986 | ReleaseHandle(hProcess); | ||
| 987 | |||
| 988 | hr = WcaSetIntProperty(pwzProperty, dwExitCode); | ||
| 989 | ExitOnFailure(hr, "failed to set NetCoreCheck result in %ls", pwzProperty); | ||
| 990 | |||
| 991 | // Delete extracted NetCoreCheck.exe | ||
| 992 | DirEnsureDelete(pwzNetCoreCheckDirectoryPath, TRUE, TRUE); | ||
| 993 | } | ||
| 994 | if (E_NOMOREITEMS == hr) | ||
| 995 | { | ||
| 996 | hr = S_OK; | ||
| 997 | } | ||
| 998 | ExitOnFailure(hr, "failed while looping through all dot net compatibility checks"); | ||
| 999 | |||
| 1000 | LExit: | ||
| 1001 | // Delete extracted NetCoreCheck.exe | ||
| 1002 | if (NULL != pwzNetCoreCheckDirectoryPath) | ||
| 1003 | { | ||
| 1004 | DirEnsureDelete(pwzNetCoreCheckDirectoryPath, TRUE, TRUE); | ||
| 1005 | } | ||
| 1006 | |||
| 1007 | // Release allocated resources | ||
| 1008 | ReleaseStr(pwzPlatform); | ||
| 1009 | ReleaseStr(pwzNetCoreCheckBinaryId); | ||
| 1010 | ReleaseStr(pwzNetCoreCheckDirectoryName); | ||
| 1011 | ReleaseStr(pwzNetCoreCheckDirectoryPath); | ||
| 1012 | ReleaseStr(pwzNetCoreCheckFilePath); | ||
| 1013 | ReleaseStr(pwzRuntimeType); | ||
| 1014 | ReleaseStr(pwzVersion); | ||
| 1015 | ReleaseStr(pwzRollForward); | ||
| 1016 | ReleaseStr(pwzProperty); | ||
| 1017 | ReleaseStr(pwzCommandLine); | ||
| 1018 | ReleaseHandle(hProcess); | ||
| 1019 | |||
| 1020 | if (FAILED(hr)) | ||
| 1021 | { | ||
| 1022 | er = ERROR_INSTALL_FAILURE; | ||
| 1023 | } | ||
| 1024 | return WcaFinalize(er); | ||
| 1025 | } | ||
diff --git a/src/ext/NetFx/ca/netfxca.def b/src/ext/NetFx/ca/netfxca.def index c1d01f5f..3b930756 100644 --- a/src/ext/NetFx/ca/netfxca.def +++ b/src/ext/NetFx/ca/netfxca.def | |||
| @@ -6,3 +6,4 @@ LIBRARY "netfxca" | |||
| 6 | EXPORTS | 6 | EXPORTS |
| 7 | SchedNetFx | 7 | SchedNetFx |
| 8 | ExecNetFx | 8 | ExecNetFx |
| 9 | DotNetCompatibilityCheck | ||
diff --git a/src/ext/NetFx/ca/netfxca.vcxproj b/src/ext/NetFx/ca/netfxca.vcxproj index 93276ea1..0158a656 100644 --- a/src/ext/NetFx/ca/netfxca.vcxproj +++ b/src/ext/NetFx/ca/netfxca.vcxproj | |||
| @@ -42,7 +42,7 @@ | |||
| 42 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | 42 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
| 43 | 43 | ||
| 44 | <PropertyGroup> | 44 | <PropertyGroup> |
| 45 | <ProjectAdditionalLinkLibraries>msi.lib</ProjectAdditionalLinkLibraries> | 45 | <ProjectAdditionalLinkLibraries>msi.lib;rpcrt4.lib</ProjectAdditionalLinkLibraries> |
| 46 | </PropertyGroup> | 46 | </PropertyGroup> |
| 47 | 47 | ||
| 48 | <ItemGroup> | 48 | <ItemGroup> |
diff --git a/src/ext/NetFx/ca/precomp.h b/src/ext/NetFx/ca/precomp.h index f7b537ed..db618bce 100644 --- a/src/ext/NetFx/ca/precomp.h +++ b/src/ext/NetFx/ca/precomp.h | |||
| @@ -10,6 +10,9 @@ | |||
| 10 | #include "fileutil.h" | 10 | #include "fileutil.h" |
| 11 | #include "strutil.h" | 11 | #include "strutil.h" |
| 12 | #include "pathutil.h" | 12 | #include "pathutil.h" |
| 13 | #include "procutil.h" | ||
| 14 | #include "dirutil.h" | ||
| 15 | #include "guidutil.h" | ||
| 13 | 16 | ||
| 14 | #include "caDecor.h" | 17 | #include "caDecor.h" |
| 15 | #include "cost.h" | 18 | #include "cost.h" |
diff --git a/src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs b/src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs index 6a75f30f..a03d47d6 100644 --- a/src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs +++ b/src/ext/NetFx/test/WixToolsetTest.Netfx/NetfxExtensionFixture.cs | |||
| @@ -85,7 +85,11 @@ namespace WixToolsetTest.Netfx | |||
| 85 | var results = build.BuildAndQuery(Build, "Binary", "CustomAction", "Wix4NetFxNativeImage"); | 85 | var results = build.BuildAndQuery(Build, "Binary", "CustomAction", "Wix4NetFxNativeImage"); |
| 86 | WixAssert.CompareLineByLine(new[] | 86 | WixAssert.CompareLineByLine(new[] |
| 87 | { | 87 | { |
| 88 | "Binary:Wix4NetCheck_arm64\t[Binary data]", | ||
| 89 | "Binary:Wix4NetCheck_x64\t[Binary data]", | ||
| 90 | "Binary:Wix4NetCheck_x86\t[Binary data]", | ||
| 88 | "Binary:Wix4NetFxCA_X86\t[Binary data]", | 91 | "Binary:Wix4NetFxCA_X86\t[Binary data]", |
| 92 | "CustomAction:Wix4NetFxDotNetCompatibilityCheck_X86\t1\tWix4NetFxCA_X86\tDotNetCompatibilityCheck\t", | ||
| 89 | "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_X86\t3649\tWix4NetFxCA_X86\tExecNetFx\t", | 93 | "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_X86\t3649\tWix4NetFxCA_X86\tExecNetFx\t", |
| 90 | "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_X86\t3649\tWix4NetFxCA_X86\tExecNetFx\t", | 94 | "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_X86\t3649\tWix4NetFxCA_X86\tExecNetFx\t", |
| 91 | "CustomAction:Wix4NetFxExecuteNativeImageInstall_X86\t3137\tWix4NetFxCA_X86\tExecNetFx\t", | 95 | "CustomAction:Wix4NetFxExecuteNativeImageInstall_X86\t3137\tWix4NetFxCA_X86\tExecNetFx\t", |
| @@ -104,7 +108,11 @@ namespace WixToolsetTest.Netfx | |||
| 104 | var results = build.BuildAndQuery(BuildX64, "Binary", "CustomAction", "Wix4NetFxNativeImage"); | 108 | var results = build.BuildAndQuery(BuildX64, "Binary", "CustomAction", "Wix4NetFxNativeImage"); |
| 105 | WixAssert.CompareLineByLine(new[] | 109 | WixAssert.CompareLineByLine(new[] |
| 106 | { | 110 | { |
| 111 | "Binary:Wix4NetCheck_arm64\t[Binary data]", | ||
| 112 | "Binary:Wix4NetCheck_x64\t[Binary data]", | ||
| 113 | "Binary:Wix4NetCheck_x86\t[Binary data]", | ||
| 107 | "Binary:Wix4NetFxCA_X64\t[Binary data]", | 114 | "Binary:Wix4NetFxCA_X64\t[Binary data]", |
| 115 | "CustomAction:Wix4NetFxDotNetCompatibilityCheck_X64\t1\tWix4NetFxCA_X64\tDotNetCompatibilityCheck\t", | ||
| 108 | "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_X64\t3649\tWix4NetFxCA_X64\tExecNetFx\t", | 116 | "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_X64\t3649\tWix4NetFxCA_X64\tExecNetFx\t", |
| 109 | "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_X64\t3649\tWix4NetFxCA_X64\tExecNetFx\t", | 117 | "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_X64\t3649\tWix4NetFxCA_X64\tExecNetFx\t", |
| 110 | "CustomAction:Wix4NetFxExecuteNativeImageInstall_X64\t3137\tWix4NetFxCA_X64\tExecNetFx\t", | 118 | "CustomAction:Wix4NetFxExecuteNativeImageInstall_X64\t3137\tWix4NetFxCA_X64\tExecNetFx\t", |
| @@ -123,7 +131,11 @@ namespace WixToolsetTest.Netfx | |||
| 123 | var results = build.BuildAndQuery(BuildARM64, "Binary", "CustomAction", "Wix4NetFxNativeImage"); | 131 | var results = build.BuildAndQuery(BuildARM64, "Binary", "CustomAction", "Wix4NetFxNativeImage"); |
| 124 | WixAssert.CompareLineByLine(new[] | 132 | WixAssert.CompareLineByLine(new[] |
| 125 | { | 133 | { |
| 134 | "Binary:Wix4NetCheck_arm64\t[Binary data]", | ||
| 135 | "Binary:Wix4NetCheck_x64\t[Binary data]", | ||
| 136 | "Binary:Wix4NetCheck_x86\t[Binary data]", | ||
| 126 | "Binary:Wix4NetFxCA_A64\t[Binary data]", | 137 | "Binary:Wix4NetFxCA_A64\t[Binary data]", |
| 138 | "CustomAction:Wix4NetFxDotNetCompatibilityCheck_A64\t1\tWix4NetFxCA_A64\tDotNetCompatibilityCheck\t", | ||
| 127 | "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_A64\t3649\tWix4NetFxCA_A64\tExecNetFx\t", | 139 | "CustomAction:Wix4NetFxExecuteNativeImageCommitInstall_A64\t3649\tWix4NetFxCA_A64\tExecNetFx\t", |
| 128 | "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_A64\t3649\tWix4NetFxCA_A64\tExecNetFx\t", | 140 | "CustomAction:Wix4NetFxExecuteNativeImageCommitUninstall_A64\t3649\tWix4NetFxCA_A64\tExecNetFx\t", |
| 129 | "CustomAction:Wix4NetFxExecuteNativeImageInstall_A64\t3137\tWix4NetFxCA_A64\tExecNetFx\t", | 141 | "CustomAction:Wix4NetFxExecuteNativeImageInstall_A64\t3137\tWix4NetFxCA_A64\tExecNetFx\t", |
diff --git a/src/ext/NetFx/wixext/NetFxCompiler.cs b/src/ext/NetFx/wixext/NetFxCompiler.cs index 739618e9..f3c91918 100644 --- a/src/ext/NetFx/wixext/NetFxCompiler.cs +++ b/src/ext/NetFx/wixext/NetFxCompiler.cs | |||
| @@ -40,7 +40,6 @@ namespace WixToolset.Netfx | |||
| 40 | break; | 40 | break; |
| 41 | } | 41 | } |
| 42 | break; | 42 | break; |
| 43 | case "Bundle": | ||
| 44 | case "Fragment": | 43 | case "Fragment": |
| 45 | switch (element.Name.LocalName) | 44 | switch (element.Name.LocalName) |
| 46 | { | 45 | { |
| @@ -50,8 +49,45 @@ namespace WixToolset.Netfx | |||
| 50 | case "DotNetCoreSearchRef": | 49 | case "DotNetCoreSearchRef": |
| 51 | this.ParseDotNetCoreSearchRefElement(intermediate, section, element); | 50 | this.ParseDotNetCoreSearchRefElement(intermediate, section, element); |
| 52 | break; | 51 | break; |
| 52 | case "DotNetCompatibilityCheck": | ||
| 53 | this.ParseDotNetCompatibilityCheckElement(intermediate, section, element); | ||
| 54 | break; | ||
| 55 | case "DotNetCompatibilityCheckRef": | ||
| 56 | this.ParseDotNetCompatibilityCheckRefElement(intermediate, section, element); | ||
| 57 | break; | ||
| 58 | default: | ||
| 59 | this.ParseHelper.UnexpectedElement(parentElement, element); | ||
| 60 | break; | ||
| 61 | } | ||
| 62 | break; | ||
| 63 | case "Bundle": | ||
| 64 | switch (element.Name.LocalName) | ||
| 65 | { | ||
| 66 | case "DotNetCoreSearch": | ||
| 67 | this.ParseDotNetCoreSearchElement(intermediate, section, element); | ||
| 68 | break; | ||
| 69 | case "DotNetCoreSearchRef": | ||
| 70 | this.ParseDotNetCoreSearchRefElement(intermediate, section, element); | ||
| 71 | break; | ||
| 72 | default: | ||
| 73 | this.ParseHelper.UnexpectedElement(parentElement, element); | ||
| 74 | break; | ||
| 75 | } | ||
| 76 | break; | ||
| 77 | case "Package": | ||
| 78 | case "Module": | ||
| 79 | switch (element.Name.LocalName) | ||
| 80 | { | ||
| 81 | case "DotNetCompatibilityCheck": | ||
| 82 | this.ParseDotNetCompatibilityCheckElement(intermediate, section, element); | ||
| 83 | break; | ||
| 84 | case "DotNetCompatibilityCheckRef": | ||
| 85 | this.ParseDotNetCompatibilityCheckRefElement(intermediate, section, element); | ||
| 86 | break; | ||
| 87 | default: | ||
| 88 | this.ParseHelper.UnexpectedElement(parentElement, element); | ||
| 89 | break; | ||
| 53 | } | 90 | } |
| 54 | |||
| 55 | break; | 91 | break; |
| 56 | default: | 92 | default: |
| 57 | this.ParseHelper.UnexpectedElement(parentElement, element); | 93 | this.ParseHelper.UnexpectedElement(parentElement, element); |
| @@ -325,5 +361,178 @@ namespace WixToolset.Netfx | |||
| 325 | }); | 361 | }); |
| 326 | } | 362 | } |
| 327 | } | 363 | } |
| 364 | |||
| 365 | /// <summary> | ||
| 366 | /// Parses a DotNetCompatibilityCheck element. | ||
| 367 | /// </summary> | ||
| 368 | /// <param name="element">The element to parse.</param> | ||
| 369 | private void ParseDotNetCompatibilityCheckElement(Intermediate intermediate, IntermediateSection section, XElement element) | ||
| 370 | { | ||
| 371 | var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); | ||
| 372 | Identifier id = null; | ||
| 373 | string property = null; | ||
| 374 | string runtimeType = null; | ||
| 375 | string platform = null; | ||
| 376 | string version = null; | ||
| 377 | string rollForward = "Minor"; | ||
| 378 | |||
| 379 | foreach (var attrib in element.Attributes()) | ||
| 380 | { | ||
| 381 | if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) | ||
| 382 | { | ||
| 383 | switch (attrib.Name.LocalName) | ||
| 384 | { | ||
| 385 | case "Id": | ||
| 386 | id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib); | ||
| 387 | break; | ||
| 388 | case "Property": | ||
| 389 | property = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | ||
| 390 | break; | ||
| 391 | case "RuntimeType": | ||
| 392 | runtimeType = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); | ||
| 393 | switch (runtimeType.ToLower()) | ||
| 394 | { | ||
| 395 | case "aspnet": | ||
| 396 | runtimeType = "Microsoft.AspNetCore.App"; | ||
| 397 | break; | ||
| 398 | case "desktop": | ||
| 399 | runtimeType = "Microsoft.WindowsDesktop.App"; | ||
| 400 | break; | ||
| 401 | case "core": | ||
| 402 | runtimeType = "Microsoft.NETCore.App"; | ||
| 403 | break; | ||
| 404 | default: | ||
| 405 | this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, element.Name.LocalName, attrib.Name.LocalName, runtimeType, "aspnet", "desktop", "core")); | ||
| 406 | break; | ||
| 407 | } | ||
| 408 | break; | ||
| 409 | case "Platform": | ||
| 410 | platform = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); | ||
| 411 | switch (platform.ToLower()) | ||
| 412 | { | ||
| 413 | case "x86": | ||
| 414 | case "x64": | ||
| 415 | case "arm64": | ||
| 416 | platform = platform.ToLower(); | ||
| 417 | break; | ||
| 418 | default: | ||
| 419 | this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, element.Name.LocalName, attrib.Name.LocalName, platform, "x86", "x64", "arm64")); | ||
| 420 | break; | ||
| 421 | } | ||
| 422 | break; | ||
| 423 | case "Version": | ||
| 424 | version = this.ParseHelper.GetAttributeVersionValue(sourceLineNumbers, attrib); | ||
| 425 | break; | ||
| 426 | case "RollForward": | ||
| 427 | rollForward = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); | ||
| 428 | switch (rollForward.ToLower()) | ||
| 429 | { | ||
| 430 | case "latestmajor": | ||
| 431 | rollForward = "LatestMajor"; | ||
| 432 | break; | ||
| 433 | case "major": | ||
| 434 | rollForward = "Major"; | ||
| 435 | break; | ||
| 436 | case "latestminor": | ||
| 437 | rollForward = "LatestMinor"; | ||
| 438 | break; | ||
| 439 | case "minor": | ||
| 440 | rollForward = "Minor"; | ||
| 441 | break; | ||
| 442 | case "latestpatch": | ||
| 443 | rollForward = "LatestPatch"; | ||
| 444 | break; | ||
| 445 | case "disable": | ||
| 446 | rollForward = "Disable"; | ||
| 447 | break; | ||
| 448 | default: | ||
| 449 | this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, element.Name.LocalName, attrib.Name.LocalName, rollForward, "latestmajor", "major", "latestminor", "minor", "latestpatch", "disable")); | ||
| 450 | break; | ||
| 451 | } | ||
| 452 | break; | ||
| 453 | default: | ||
| 454 | this.ParseHelper.UnexpectedAttribute(element, attrib); | ||
| 455 | break; | ||
| 456 | } | ||
| 457 | } | ||
| 458 | else | ||
| 459 | { | ||
| 460 | this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib); | ||
| 461 | } | ||
| 462 | } | ||
| 463 | |||
| 464 | if (null == id) | ||
| 465 | { | ||
| 466 | id = this.ParseHelper.CreateIdentifier("ndncc", property, runtimeType, platform, version); | ||
| 467 | } | ||
| 468 | |||
| 469 | if (String.IsNullOrEmpty(property)) | ||
| 470 | { | ||
| 471 | this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Property")); | ||
| 472 | } | ||
| 473 | |||
| 474 | if (String.IsNullOrEmpty(runtimeType)) | ||
| 475 | { | ||
| 476 | this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "RuntimeType")); | ||
| 477 | } | ||
| 478 | |||
| 479 | if (String.IsNullOrEmpty(platform)) | ||
| 480 | { | ||
| 481 | this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Platform")); | ||
| 482 | } | ||
| 483 | |||
| 484 | if (String.IsNullOrEmpty(version)) | ||
| 485 | { | ||
| 486 | this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Version")); | ||
| 487 | } | ||
| 488 | |||
| 489 | this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); | ||
| 490 | |||
| 491 | this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "Wix4NetFxDotNetCompatibilityCheck", this.Context.Platform, CustomActionPlatforms.ARM64 | CustomActionPlatforms.X64 | CustomActionPlatforms.X86); | ||
| 492 | |||
| 493 | if (!this.Messaging.EncounteredError) | ||
| 494 | { | ||
| 495 | section.AddSymbol(new NetFxDotNetCompatibilityCheckSymbol(sourceLineNumbers, id) | ||
| 496 | { | ||
| 497 | RuntimeType = runtimeType, | ||
| 498 | Platform = platform, | ||
| 499 | Version = version, | ||
| 500 | RollForward = rollForward, | ||
| 501 | Property = property, | ||
| 502 | }); | ||
| 503 | } | ||
| 504 | } | ||
| 505 | |||
| 506 | /// <summary> | ||
| 507 | /// Parses a DotNetCompatibilityCheckRef element. | ||
| 508 | /// </summary> | ||
| 509 | /// <param name="element">The element to parse.</param> | ||
| 510 | private void ParseDotNetCompatibilityCheckRefElement(Intermediate intermediate, IntermediateSection section, XElement element) | ||
| 511 | { | ||
| 512 | var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); | ||
| 513 | |||
| 514 | foreach (var attrib in element.Attributes()) | ||
| 515 | { | ||
| 516 | if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) | ||
| 517 | { | ||
| 518 | switch (attrib.Name.LocalName) | ||
| 519 | { | ||
| 520 | case "Id": | ||
| 521 | var refId = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | ||
| 522 | this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, NetfxSymbolDefinitions.NetFxDotNetCompatibilityCheck, refId); | ||
| 523 | break; | ||
| 524 | default: | ||
| 525 | this.ParseHelper.UnexpectedAttribute(element, attrib); | ||
| 526 | break; | ||
| 527 | } | ||
| 528 | } | ||
| 529 | else | ||
| 530 | { | ||
| 531 | this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, element, attrib); | ||
| 532 | } | ||
| 533 | } | ||
| 534 | |||
| 535 | this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element); | ||
| 536 | } | ||
| 328 | } | 537 | } |
| 329 | } | 538 | } |
diff --git a/src/ext/NetFx/wixext/NetFxExtensionData.cs b/src/ext/NetFx/wixext/NetFxExtensionData.cs index 61d618cf..8dd9e003 100644 --- a/src/ext/NetFx/wixext/NetFxExtensionData.cs +++ b/src/ext/NetFx/wixext/NetFxExtensionData.cs | |||
| @@ -10,6 +10,8 @@ namespace WixToolset.Netfx | |||
| 10 | /// </summary> | 10 | /// </summary> |
| 11 | public sealed class NetfxExtensionData : BaseExtensionData | 11 | public sealed class NetfxExtensionData : BaseExtensionData |
| 12 | { | 12 | { |
| 13 | public override string DefaultCulture => "en-US"; | ||
| 14 | |||
| 13 | public override bool TryGetSymbolDefinitionByName(string name, out IntermediateSymbolDefinition symbolDefinition) | 15 | public override bool TryGetSymbolDefinitionByName(string name, out IntermediateSymbolDefinition symbolDefinition) |
| 14 | { | 16 | { |
| 15 | symbolDefinition = NetfxSymbolDefinitions.ByName(name); | 17 | symbolDefinition = NetfxSymbolDefinitions.ByName(name); |
diff --git a/src/ext/NetFx/wixext/NetfxTableDefinitions.cs b/src/ext/NetFx/wixext/NetfxTableDefinitions.cs index 57e35323..6be1abe7 100644 --- a/src/ext/NetFx/wixext/NetfxTableDefinitions.cs +++ b/src/ext/NetFx/wixext/NetfxTableDefinitions.cs | |||
| @@ -22,9 +22,25 @@ namespace WixToolset.Netfx | |||
| 22 | symbolIdIsPrimaryKey: true | 22 | symbolIdIsPrimaryKey: true |
| 23 | ); | 23 | ); |
| 24 | 24 | ||
| 25 | public static readonly TableDefinition NetFxDotNetCompatibilityCheck = new TableDefinition( | ||
| 26 | "Wix4NetFxDotNetCheck", | ||
| 27 | NetfxSymbolDefinitions.NetFxDotNetCompatibilityCheck, | ||
| 28 | new[] | ||
| 29 | { | ||
| 30 | new ColumnDefinition("NetFxDotNetCompatibilityCheck", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The primary key, a non-localized token.", modularizeType: ColumnModularizeType.Column), | ||
| 31 | new ColumnDefinition("RuntimeType", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Text, description: "The type of .NET runtime being checked for. Possible values: aspnet, desktop and core", modularizeType: ColumnModularizeType.Column), | ||
| 32 | new ColumnDefinition("Platform", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Sets the platform for the .NET runtime being checked for. Possible values: x86, x64 and arm64", modularizeType: ColumnModularizeType.Column), | ||
| 33 | new ColumnDefinition("Version", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Version, description: "The version of the .NET runtime being checked for (e.g. 3.1.10, 5.0.1).", modularizeType: ColumnModularizeType.Column), | ||
| 34 | new ColumnDefinition("RollForward", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Sets the roll-forward policy that the application is using. Possible values: latestmajor, major, latestminor, minor, latestpatch and disable", modularizeType: ColumnModularizeType.Column), | ||
| 35 | new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, description: "Name of the property in which to place the result of the check.", modularizeType: ColumnModularizeType.Column), | ||
| 36 | }, | ||
| 37 | symbolIdIsPrimaryKey: true | ||
| 38 | ); | ||
| 39 | |||
| 25 | public static readonly TableDefinition[] All = new[] | 40 | public static readonly TableDefinition[] All = new[] |
| 26 | { | 41 | { |
| 27 | NetFxNativeImage, | 42 | NetFxNativeImage, |
| 43 | NetFxDotNetCompatibilityCheck | ||
| 28 | }; | 44 | }; |
| 29 | } | 45 | } |
| 30 | } | 46 | } |
diff --git a/src/ext/NetFx/wixext/Symbols/NetFxDotNetCompatibilityCheckSymbol.cs b/src/ext/NetFx/wixext/Symbols/NetFxDotNetCompatibilityCheckSymbol.cs new file mode 100644 index 00000000..a46cf17f --- /dev/null +++ b/src/ext/NetFx/wixext/Symbols/NetFxDotNetCompatibilityCheckSymbol.cs | |||
| @@ -0,0 +1,79 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace WixToolset.Netfx | ||
| 4 | { | ||
| 5 | using WixToolset.Data; | ||
| 6 | using WixToolset.Netfx.Symbols; | ||
| 7 | |||
| 8 | public static partial class NetfxSymbolDefinitions | ||
| 9 | { | ||
| 10 | public static readonly IntermediateSymbolDefinition NetFxDotNetCompatibilityCheck = new IntermediateSymbolDefinition( | ||
| 11 | NetfxSymbolDefinitionType.NetFxDotNetCompatibilityCheck.ToString(), | ||
| 12 | new[] | ||
| 13 | { | ||
| 14 | new IntermediateFieldDefinition(nameof(NetFxDotNetCompatibilityCheckSymbollFields.RuntimeType), IntermediateFieldType.String), | ||
| 15 | new IntermediateFieldDefinition(nameof(NetFxDotNetCompatibilityCheckSymbollFields.Platform), IntermediateFieldType.String), | ||
| 16 | new IntermediateFieldDefinition(nameof(NetFxDotNetCompatibilityCheckSymbollFields.Version), IntermediateFieldType.String), | ||
| 17 | new IntermediateFieldDefinition(nameof(NetFxDotNetCompatibilityCheckSymbollFields.RollForward), IntermediateFieldType.String), | ||
| 18 | new IntermediateFieldDefinition(nameof(NetFxDotNetCompatibilityCheckSymbollFields.Property), IntermediateFieldType.String), | ||
| 19 | }, | ||
| 20 | typeof(NetFxDotNetCompatibilityCheckSymbol)); | ||
| 21 | } | ||
| 22 | } | ||
| 23 | |||
| 24 | namespace WixToolset.Netfx.Symbols | ||
| 25 | { | ||
| 26 | using WixToolset.Data; | ||
| 27 | |||
| 28 | public enum NetFxDotNetCompatibilityCheckSymbollFields | ||
| 29 | { | ||
| 30 | RuntimeType, | ||
| 31 | Platform, | ||
| 32 | Version, | ||
| 33 | RollForward, | ||
| 34 | Property, | ||
| 35 | } | ||
| 36 | |||
| 37 | public class NetFxDotNetCompatibilityCheckSymbol : IntermediateSymbol | ||
| 38 | { | ||
| 39 | public NetFxDotNetCompatibilityCheckSymbol() : base(NetfxSymbolDefinitions.NetFxDotNetCompatibilityCheck, null, null) | ||
| 40 | { | ||
| 41 | } | ||
| 42 | |||
| 43 | public NetFxDotNetCompatibilityCheckSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(NetfxSymbolDefinitions.NetFxDotNetCompatibilityCheck, sourceLineNumber, id) | ||
| 44 | { | ||
| 45 | } | ||
| 46 | |||
| 47 | public IntermediateField this[NetFxDotNetCompatibilityCheckSymbollFields index] => this.Fields[(int)index]; | ||
| 48 | |||
| 49 | public string RuntimeType | ||
| 50 | { | ||
| 51 | get => this.Fields[(int)NetFxDotNetCompatibilityCheckSymbollFields.RuntimeType].AsString(); | ||
| 52 | set => this.Set((int)NetFxDotNetCompatibilityCheckSymbollFields.RuntimeType, value); | ||
| 53 | } | ||
| 54 | |||
| 55 | public string Platform | ||
| 56 | { | ||
| 57 | get => this.Fields[(int)NetFxDotNetCompatibilityCheckSymbollFields.Platform].AsString(); | ||
| 58 | set => this.Set((int)NetFxDotNetCompatibilityCheckSymbollFields.Platform, value); | ||
| 59 | } | ||
| 60 | |||
| 61 | public string Version | ||
| 62 | { | ||
| 63 | get => this.Fields[(int)NetFxDotNetCompatibilityCheckSymbollFields.Version].AsString(); | ||
| 64 | set => this.Set((int)NetFxDotNetCompatibilityCheckSymbollFields.Version, value); | ||
| 65 | } | ||
| 66 | |||
| 67 | public string RollForward | ||
| 68 | { | ||
| 69 | get => this.Fields[(int)NetFxDotNetCompatibilityCheckSymbollFields.RollForward].AsString(); | ||
| 70 | set => this.Set((int)NetFxDotNetCompatibilityCheckSymbollFields.RollForward, value); | ||
| 71 | } | ||
| 72 | |||
| 73 | public string Property | ||
| 74 | { | ||
| 75 | get => this.Fields[(int)NetFxDotNetCompatibilityCheckSymbollFields.Property].AsString(); | ||
| 76 | set => this.Set((int)NetFxDotNetCompatibilityCheckSymbollFields.Property, value); | ||
| 77 | } | ||
| 78 | } | ||
| 79 | } | ||
diff --git a/src/ext/NetFx/wixext/Symbols/NetfxSymbolDefinitions.cs b/src/ext/NetFx/wixext/Symbols/NetfxSymbolDefinitions.cs index 862eba16..ad729dd4 100644 --- a/src/ext/NetFx/wixext/Symbols/NetfxSymbolDefinitions.cs +++ b/src/ext/NetFx/wixext/Symbols/NetfxSymbolDefinitions.cs | |||
| @@ -10,10 +10,13 @@ namespace WixToolset.Netfx | |||
| 10 | { | 10 | { |
| 11 | NetFxNativeImage, | 11 | NetFxNativeImage, |
| 12 | NetFxNetCoreSearch, | 12 | NetFxNetCoreSearch, |
| 13 | NetFxDotNetCompatibilityCheck | ||
| 13 | } | 14 | } |
| 14 | 15 | ||
| 15 | public static partial class NetfxSymbolDefinitions | 16 | public static partial class NetfxSymbolDefinitions |
| 16 | { | 17 | { |
| 18 | public static readonly Version Version = new Version("4.0.0"); | ||
| 19 | |||
| 17 | public static IntermediateSymbolDefinition ByName(string name) | 20 | public static IntermediateSymbolDefinition ByName(string name) |
| 18 | { | 21 | { |
| 19 | if (!Enum.TryParse(name, out NetfxSymbolDefinitionType type)) | 22 | if (!Enum.TryParse(name, out NetfxSymbolDefinitionType type)) |
| @@ -33,6 +36,9 @@ namespace WixToolset.Netfx | |||
| 33 | 36 | ||
| 34 | case NetfxSymbolDefinitionType.NetFxNetCoreSearch: | 37 | case NetfxSymbolDefinitionType.NetFxNetCoreSearch: |
| 35 | return NetfxSymbolDefinitions.NetFxNetCoreSearch; | 38 | return NetfxSymbolDefinitions.NetFxNetCoreSearch; |
| 39 | |||
| 40 | case NetfxSymbolDefinitionType.NetFxDotNetCompatibilityCheck: | ||
| 41 | return NetfxSymbolDefinitions.NetFxDotNetCompatibilityCheck; | ||
| 36 | 42 | ||
| 37 | default: | 43 | default: |
| 38 | throw new ArgumentOutOfRangeException(nameof(type)); | 44 | throw new ArgumentOutOfRangeException(nameof(type)); |
diff --git a/src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi b/src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi index f607c72d..c9c8af02 100644 --- a/src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi +++ b/src/ext/NetFx/wixlib/NetFxExtension_Platform.wxi | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | <CustomAction Id="$(var.Prefix)NetFxExecuteNativeImageCommitInstall$(var.Suffix)" DllEntry="ExecNetFx" Execute="commit" Impersonate="no" Return="ignore" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> | 10 | <CustomAction Id="$(var.Prefix)NetFxExecuteNativeImageCommitInstall$(var.Suffix)" DllEntry="ExecNetFx" Execute="commit" Impersonate="no" Return="ignore" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> |
| 11 | <CustomAction Id="$(var.Prefix)NetFxExecuteNativeImageUninstall$(var.Suffix)" DllEntry="ExecNetFx" Execute="deferred" Impersonate="no" Return="ignore" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> | 11 | <CustomAction Id="$(var.Prefix)NetFxExecuteNativeImageUninstall$(var.Suffix)" DllEntry="ExecNetFx" Execute="deferred" Impersonate="no" Return="ignore" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> |
| 12 | <CustomAction Id="$(var.Prefix)NetFxExecuteNativeImageCommitUninstall$(var.Suffix)" DllEntry="ExecNetFx" Execute="commit" Impersonate="no" Return="ignore" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> | 12 | <CustomAction Id="$(var.Prefix)NetFxExecuteNativeImageCommitUninstall$(var.Suffix)" DllEntry="ExecNetFx" Execute="commit" Impersonate="no" Return="ignore" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> |
| 13 | <CustomAction Id="$(var.Prefix)NetFxDotNetCompatibilityCheck$(var.Suffix)" DllEntry="DotNetCompatibilityCheck" Execute="immediate" Return="check" SuppressModularization="yes" BinaryRef="$(var.Prefix)NetFxCA$(var.Suffix)" /> | ||
| 13 | 14 | ||
| 14 | <InstallExecuteSequence> | 15 | <InstallExecuteSequence> |
| 15 | <Custom Action="$(var.Prefix)NetFxScheduleNativeImage$(var.Suffix)" Before="InstallFiles" Overridable="yes" /> | 16 | <Custom Action="$(var.Prefix)NetFxScheduleNativeImage$(var.Suffix)" Before="InstallFiles" Overridable="yes" /> |
| @@ -17,11 +18,19 @@ | |||
| 17 | <Custom Action="$(var.Prefix)NetFxExecuteNativeImageUninstall$(var.Suffix)" After="$(var.Prefix)NetFxExecuteNativeImageCommitUninstall$(var.Suffix)" Overridable="yes" Condition="RollbackDisabled = 1" /> | 18 | <Custom Action="$(var.Prefix)NetFxExecuteNativeImageUninstall$(var.Suffix)" After="$(var.Prefix)NetFxExecuteNativeImageCommitUninstall$(var.Suffix)" Overridable="yes" Condition="RollbackDisabled = 1" /> |
| 18 | <Custom Action="$(var.Prefix)NetFxExecuteNativeImageCommitInstall$(var.Suffix)" After="$(var.Prefix)NetFxExecuteNativeImageUninstall$(var.Suffix)" Overridable="yes" Condition="RollbackDisabled <> 1" /> | 19 | <Custom Action="$(var.Prefix)NetFxExecuteNativeImageCommitInstall$(var.Suffix)" After="$(var.Prefix)NetFxExecuteNativeImageUninstall$(var.Suffix)" Overridable="yes" Condition="RollbackDisabled <> 1" /> |
| 19 | <Custom Action="$(var.Prefix)NetFxExecuteNativeImageInstall$(var.Suffix)" After="$(var.Prefix)NetFxExecuteNativeImageCommitInstall$(var.Suffix)" Overridable="yes" Condition="RollbackDisabled = 1" /> | 20 | <Custom Action="$(var.Prefix)NetFxExecuteNativeImageInstall$(var.Suffix)" After="$(var.Prefix)NetFxExecuteNativeImageCommitInstall$(var.Suffix)" Overridable="yes" Condition="RollbackDisabled = 1" /> |
| 21 | <Custom Action="$(var.Prefix)NetFxDotNetCompatibilityCheck$(var.Suffix)" Before="LaunchConditions" Overridable="yes" /> | ||
| 20 | </InstallExecuteSequence> | 22 | </InstallExecuteSequence> |
| 23 | |||
| 24 | <InstallUISequence> | ||
| 25 | <Custom Action="$(var.Prefix)NetFxDotNetCompatibilityCheck$(var.Suffix)" Before="LaunchConditions" Overridable="yes" /> | ||
| 26 | </InstallUISequence> | ||
| 21 | </Fragment> | 27 | </Fragment> |
| 22 | 28 | ||
| 23 | <!-- NetFx Custom Action DLL Definitions --> | 29 | <!-- NetFx Custom Action DLL Definitions --> |
| 24 | <Fragment> | 30 | <Fragment> |
| 25 | <Binary Id="$(var.Prefix)NetFxCA$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))netfxca.dll" /> | 31 | <Binary Id="$(var.Prefix)NetFxCA$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))netfxca.dll" /> |
| 32 | <Binary Id="$(var.Prefix)NetCheck_x86" SourceFile="!(bindpath.x86)NetCoreCheck.exe" /> | ||
| 33 | <Binary Id="$(var.Prefix)NetCheck_x64" SourceFile="!(bindpath.x64)NetCoreCheck.exe" /> | ||
| 34 | <Binary Id="$(var.Prefix)NetCheck_arm64" SourceFile="!(bindpath.arm64)NetCoreCheck.exe" /> | ||
| 26 | </Fragment> | 35 | </Fragment> |
| 27 | </Include> | 36 | </Include> |
diff --git a/src/ext/NetFx/wixlib/netfx.wixproj b/src/ext/NetFx/wixlib/netfx.wixproj index bc6a1172..734e64da 100644 --- a/src/ext/NetFx/wixlib/netfx.wixproj +++ b/src/ext/NetFx/wixlib/netfx.wixproj | |||
| @@ -11,6 +11,9 @@ | |||
| 11 | <BindInputPaths Include="$(OutputPath)x86" BindName='x86' /> | 11 | <BindInputPaths Include="$(OutputPath)x86" BindName='x86' /> |
| 12 | <BindInputPaths Include="$(OutputPath)x64" BindName='x64' /> | 12 | <BindInputPaths Include="$(OutputPath)x64" BindName='x64' /> |
| 13 | <BindInputPaths Include="$(OutputPath)arm64" BindName='arm64' /> | 13 | <BindInputPaths Include="$(OutputPath)arm64" BindName='arm64' /> |
| 14 | <BindInputPaths Include="$(PkgMicrosoft_NET_Tools_NETCoreCheck_x86)\win-x86" BindName='x86' /> | ||
| 15 | <BindInputPaths Include="$(PkgMicrosoft_NET_Tools_NETCoreCheck_x64)\win-x64" BindName='x64' /> | ||
| 16 | <BindInputPaths Include="$(PkgMicrosoft_NET_Tools_NETCoreCheck_arm64)\win-arm64" BindName='arm64' /> | ||
| 14 | </ItemGroup> | 17 | </ItemGroup> |
| 15 | 18 | ||
| 16 | <ItemGroup> | 19 | <ItemGroup> |
| @@ -33,5 +36,8 @@ | |||
| 33 | <ItemGroup> | 36 | <ItemGroup> |
| 34 | <PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" /> | 37 | <PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" /> |
| 35 | <PackageReference Include="GitInfo" PrivateAssets="All" /> | 38 | <PackageReference Include="GitInfo" PrivateAssets="All" /> |
| 39 | <PackageReference Include="Microsoft.NET.Tools.NETCoreCheck.x86" GeneratePathProperty="true" /> | ||
| 40 | <PackageReference Include="Microsoft.NET.Tools.NETCoreCheck.x64" GeneratePathProperty="true" /> | ||
| 41 | <PackageReference Include="Microsoft.NET.Tools.NETCoreCheck.arm64" GeneratePathProperty="true" /> | ||
| 36 | </ItemGroup> | 42 | </ItemGroup> |
| 37 | </Project> | 43 | </Project> |
diff --git a/src/internal/SetBuildNumber/Directory.Packages.props.pp b/src/internal/SetBuildNumber/Directory.Packages.props.pp index 4869df82..f59c9742 100644 --- a/src/internal/SetBuildNumber/Directory.Packages.props.pp +++ b/src/internal/SetBuildNumber/Directory.Packages.props.pp | |||
| @@ -93,4 +93,10 @@ | |||
| 93 | <PackageVersion Include="xunit.runner.visualstudio" Version="2.4.5" /> | 93 | <PackageVersion Include="xunit.runner.visualstudio" Version="2.4.5" /> |
| 94 | <PackageVersion Include="xunit.assert" Version="2.4.2" /> | 94 | <PackageVersion Include="xunit.assert" Version="2.4.2" /> |
| 95 | </ItemGroup> | 95 | </ItemGroup> |
| 96 | |||
| 97 | <ItemGroup> | ||
| 98 | <PackageVersion Include="Microsoft.NET.Tools.NETCoreCheck.x86" Version="6.0.0" /> | ||
| 99 | <PackageVersion Include="Microsoft.NET.Tools.NETCoreCheck.x64" Version="6.0.0" /> | ||
| 100 | <PackageVersion Include="Microsoft.NET.Tools.NETCoreCheck.arm64" Version="6.0.0" /> | ||
| 101 | </ItemGroup> | ||
| 96 | </Project> | 102 | </Project> |
