Self-contained .NET (#22217)

* dotnet sc

* MD preview - C# app

 - working self-contained

* Gcode preview - C# app

* DevFiles preview - C# app

* Fix passing path with spaces as cmd arg and monacocpp proj file

* Pdf preview - C# app

* Svg preview - C# app

* Fix comment

* Gcode thumbnail - C# app

TODO:
	- installer
	- why IThumbnailProvider and IIntializeWithFile doesn't work?

* Pdf thumbnail - C# app

TODO:
        - installer
        - why IThumbnailProvider and IIntializeWithFile doesn't work?

* Pdf thumbnail - C# app

TODO:
        - installer
        - why IThumbnailProvider and IIntializeWithFile doesn't work?

* Fix GcodeThumbnailProviderCpp.vcxproj

* Svg thumbnail - C# app

TODO:
        - installer
        - why IThumbnailProvider and IIntializeWithFile doesn't work?

* Fix Svg tests

* Thumbnail providers - installer

* Self-contained Hosts and FileLocksmith

* Fix hardcoded <RuntimeIdentifier>

* Remove unneeded files

* Try to fix Nuget in PR CI

* Prefix new dlls with PowerToys.
Sign new dlls and exes

* Add new .exe files to ProcessList

* ci: debug by listing all env vars

* ci: try setting variable in the right ci file

* Bring back hardcoded RuntimeIdentifier

* ci: Add comment and remove debug action

* Remove unneeded lib

* [WIP] Platform conditional dotnet files & hardlinks

* Cleanup

* Update expect.txt

* Test fix - ARM installer

* Fix uninstall bug

* Update docs

* Fix failing test

* Add dll details

* Minor cleanup

* Improve resizing

* Add some logs

* Test fix - release build

* Remove InvokeOnControlThread

* Test fix: logger initialization

* Fix arm64 installer

Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Dustin L. Howett <dustin@howett.net>
This commit is contained in:
Stefan Markovic
2022-12-14 13:37:23 +01:00
committed by GitHub
parent a2c0febccc
commit 6ac508fb93
215 changed files with 9060 additions and 2328 deletions

View File

@@ -6,21 +6,13 @@
<?define BinDir="$(var.RepoDir)$(var.Platform)\$(var.Configuration)\" ?>
<?define PowerToysPlatform="x64"?>
<?define Dotnet7DownloadUrl="https://download.visualstudio.microsoft.com/download/pr/5b2fbe00-507e-450e-8b52-43ab052aadf2/79d54c3a19ce3fce314f2367cf4e3b21/windowsdesktop-runtime-7.0.0-win-x64.exe"?>
<?define Dotnet7PayloadSize="57756472"?>
<?define Dotnet7PayloadHash="DB56882D3263C9E533EA7003D018CB7D65F11C10"?>
<?define PlatformProgramFiles="[ProgramFiles64Folder]"?>
<?else?>
<!-- stable WIX 3 doesn't support ARM64, so we build installers as x86 -->
<?define BinDir="$(var.RepoDir)ARM64\$(var.Configuration)\" ?>
<?define PowerToysPlatform="ARM64"?>
<?define Dotnet7DownloadUrl="https://download.visualstudio.microsoft.com/download/pr/bce1b608-3a2a-45e6-ab7b-8c414b9e2c56/74703a44afc5f7550eba824143fc20a7/windowsdesktop-runtime-7.0.0-win-arm64.exe"?>
<?define Dotnet7PayloadSize="53133216"?>
<?define Dotnet7PayloadHash="8A7271390C2538268EFC71F3E49C80017F406C16"?>
<!--TODO: define to ARM64 Program files once it's available-->
<!--TODO: define to ARM64 Program files once it's available-->
<?define PlatformProgramFiles="[ProgramFiles6432Folder]"?>
<?endif?>
@@ -41,7 +33,6 @@
SuppressRepair="yes" />
</BootstrapperApplicationRef>
<util:FileSearch Variable="HasDotnet700" Path="$(var.PlatformProgramFiles)dotnet\shared\Microsoft.WindowsDesktop.App\7.0.0\System.Xaml.dll" Result="exists" />
<util:RegistrySearch Variable="HasWebView2PerMachine" Root="HKLM" Key="SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Result="exists" />
<util:RegistrySearch Variable="HasWebView2PerUser" Root="HKCU" Key="Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Result="exists" />
@@ -73,26 +64,6 @@
PerMachine="yes"
Vital="no">
</ExePackage>
<ExePackage
DisplayName="Downloading and installing .NET 7 Desktop Runtime"
Name="windowsdesktop-runtime-7.0.0-win-$(var.PowerToysPlatform).exe"
Compressed="no"
Id="DotnetRuntime7"
DetectCondition="HasDotnet700"
DownloadUrl="$(var.Dotnet7DownloadUrl)"
InstallCommand="/install /quiet /norestart"
RepairCommand="/repair /passive /norestart"
Permanent="yes"
PerMachine="yes"
UninstallCommand="/uninstall /quiet /norestart">
<ExitCode Value="1638" Behavior="success"/>
<RemotePayload
Description="Microsoft Windows Desktop Runtime - 7.0.0 ($(var.PowerToysPlatform))"
ProductName="Microsoft Windows Desktop Runtime - 7.0.0 ($(var.PowerToysPlatform))"
Size="$(var.Dotnet7PayloadSize)"
Version="7.0.0.31819"
Hash="$(var.Dotnet7PayloadHash)" />
</ExePackage>
<ExePackage
DisplayName="Installing Microsoft Edge WebView2"
Name="MicrosoftEdgeWebview2Setup.exe"

File diff suppressed because one or more lines are too long

View File

@@ -15,6 +15,8 @@
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Management.Deployment.h>
#include "DepsFilesLists.h"
using namespace std;
HINSTANCE DLL_HANDLE = nullptr;
@@ -32,56 +34,6 @@ const DWORD USERNAME_LEN = UNLEN + 1; // User Name + '\0'
static const wchar_t* POWERTOYS_EXE_COMPONENT = L"{A2C66D91-3485-4D00-B04D-91844E6B345B}";
static const wchar_t* POWERTOYS_UPGRADE_CODE = L"{42B84BF7-5FBF-473B-9C8B-049DC16F7708}";
const std::vector<std::wstring> winAppSdkFiles = {
L"CoreMessagingXP.dll",
L"DWriteCore.dll",
L"DwmSceneI.dll",
L"MRM.dll",
L"Microsoft.DirectManipulation.dll",
L"Microsoft.InputStateManager.dll",
L"Microsoft.Internal.FrameworkUdk.dll",
L"Microsoft.UI.Composition.OSSupport.dll",
L"Microsoft.UI.Input.dll",
L"Microsoft.UI.Windowing.Core.dll",
L"Microsoft.UI.Xaml.Controls.dll",
L"Microsoft.UI.Xaml.Controls.pri",
L"Microsoft.UI.Xaml.Internal.dll",
L"Microsoft.UI.Xaml.Phone.dll",
L"Microsoft.Web.WebView2.Core.dll",
L"Microsoft.Windows.AppNotifications.Projection.dll",
L"Microsoft.Windows.ApplicationModel.Resources.dll",
L"Microsoft.WindowsAppRuntime.Bootstrap.dll",
L"Microsoft.Windows.PushNotifications.Projection.dll",
L"Microsoft.Windows.System.Projection.dll",
L"Microsoft.WindowsAppRuntime.Insights.Resource.dll",
L"Microsoft.WindowsAppRuntime.Release.Net.dll",
L"Microsoft.WindowsAppRuntime.dll",
L"Microsoft.ui.xaml.dll",
L"Microsoft.ui.xaml.resources.19h1.dll",
L"Microsoft.ui.xaml.resources.common.dll",
L"PushNotificationsLongRunningTask.ProxyStub.dll",
L"WinUIEdit.dll",
L"WindowsAppRuntime.png",
L"WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll",
L"dcompi.dll",
L"dwmcorei.dll",
L"marshal.dll",
L"wuceffectsi.dll" };
const std::vector<std::wstring> powerToysInteropFiles = {
L"concrt140.dll",
L"msvcp140.dll",
L"msvcp140_1.dll",
L"msvcp140_2.dll",
L"msvcp140_atomic_wait.dll",
L"msvcp140_codecvt_ids.dll",
L"PowerToys.Interop.dll",
L"vcamp140.dll",
L"vccorlib140.dll",
L"vcomp140.dll",
L"vcruntime140.dll",
L"vcruntime140_1.dll" };
struct WcaSink : spdlog::sinks::base_sink<std::mutex>
{
virtual void sink_it_(const spdlog::details::log_msg& msg) override
@@ -1103,6 +1055,7 @@ const std::wstring PTInteropConsumers[] =
L"modules\\PowerAccent",
L"modules\\FileLocksmith",
L"modules\\Hosts",
L"modules\\FileExplorerPreview",
};
UINT __stdcall CreatePTInteropHardlinksCA(MSIHANDLE hInstall)
@@ -1141,6 +1094,87 @@ LExit:
return WcaFinalize(er);
}
UINT __stdcall CreateDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
std::wstring installationFolder, dotnetRuntimeFilesSrcDir, colorPickerDir, powerOCRDir, launcherDir, fancyZonesDir,
imageResizerDir, settingsDir, awakeDir, measureToolDir, powerAccentDir, fileExplorerAddOnsDir, hostsDir, fileLocksmithDir;
hr = WcaInitialize(hInstall, "CreateDotnetRuntimeHardlinksCA");
ExitOnFailure(hr, "Failed to initialize");
hr = getInstallFolder(hInstall, installationFolder);
ExitOnFailure(hr, "Failed to get installation folder");
dotnetRuntimeFilesSrcDir = installationFolder + L"dll\\dotnet\\";
colorPickerDir = installationFolder + L"modules\\ColorPicker\\";
powerOCRDir = installationFolder + L"modules\\PowerOCR\\";
launcherDir = installationFolder + L"modules\\launcher\\";
fancyZonesDir = installationFolder + L"modules\\FancyZones\\";
imageResizerDir = installationFolder + L"modules\\ImageResizer\\";
settingsDir = installationFolder + L"Settings\\";
awakeDir = installationFolder + L"modules\\Awake\\";
measureToolDir = installationFolder + L"modules\\MeasureTool\\";
powerAccentDir = installationFolder + L"modules\\PowerAccent\\";
fileExplorerAddOnsDir = installationFolder + L"modules\\FileExplorerPreview\\";
hostsDir = installationFolder + L"modules\\Hosts\\";
fileLocksmithDir = installationFolder + L"modules\\FileLocksmith\\";
for (auto file : dotnetRuntimeFiles)
{
std::error_code ec;
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (colorPickerDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (powerOCRDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (launcherDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fancyZonesDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (imageResizerDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (settingsDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (awakeDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (measureToolDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (powerAccentDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fileExplorerAddOnsDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (hostsDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fileLocksmithDir + file).c_str(), ec);
if (ec.value() != S_OK)
{
std::wstring errorMessage{ L"Error creating hard link for: " };
errorMessage += file;
errorMessage += L", error code: " + std::to_wstring(ec.value());
Logger::error(errorMessage);
er = ERROR_INSTALL_FAILURE;
}
}
for (auto file : dotnetRuntimeWPFFiles)
{
std::error_code ec;
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (awakeDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (colorPickerDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (powerOCRDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (launcherDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fancyZonesDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (imageResizerDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (powerAccentDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (fileExplorerAddOnsDir + file).c_str(), ec);
std::filesystem::create_hard_link((dotnetRuntimeFilesSrcDir + file).c_str(), (hostsDir + file).c_str(), ec);
if (ec.value() != S_OK)
{
std::wstring errorMessage{ L"Error creating hard link for: " };
errorMessage += file;
errorMessage += L", error code: " + std::to_wstring(ec.value());
Logger::error(errorMessage);
er = ERROR_INSTALL_FAILURE;
}
}
LExit:
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}
UINT __stdcall DeleteWinAppSDKHardlinksCA(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
@@ -1213,6 +1247,78 @@ LExit:
return WcaFinalize(er);
}
UINT __stdcall DeleteDotnetRuntimeHardlinksCA(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_SUCCESS;
std::wstring installationFolder, colorPickerDir, powerOCRDir, launcherDir, fancyZonesDir,
imageResizerDir, settingsDir, awakeDir, measureToolDir, powerAccentDir, fileExplorerAddOnsDir,
hostsDir, fileLocksmithDir;
hr = WcaInitialize(hInstall, "DeleteDotnetRuntimeHardlinksCA");
ExitOnFailure(hr, "Failed to initialize");
hr = getInstallFolder(hInstall, installationFolder);
ExitOnFailure(hr, "Failed to get installation folder");
colorPickerDir = installationFolder + L"modules\\ColorPicker\\";
powerOCRDir = installationFolder + L"modules\\PowerOCR\\";
launcherDir = installationFolder + L"modules\\launcher\\";
fancyZonesDir = installationFolder + L"modules\\FancyZones\\";
imageResizerDir = installationFolder + L"modules\\ImageResizer\\";
settingsDir = installationFolder + L"Settings\\";
awakeDir = installationFolder + L"modules\\Awake\\";
measureToolDir = installationFolder + L"modules\\MeasureTool\\";
powerAccentDir = installationFolder + L"modules\\PowerAccent\\";
fileExplorerAddOnsDir = installationFolder + L"modules\\FileExplorerPreview\\";
hostsDir = installationFolder + L"modules\\Hosts\\";
fileLocksmithDir = installationFolder + L"modules\\FileLocksmith\\";
try
{
for (auto file : dotnetRuntimeFiles)
{
DeleteFile((colorPickerDir + file).c_str());
DeleteFile((powerOCRDir + file).c_str());
DeleteFile((launcherDir + file).c_str());
DeleteFile((fancyZonesDir + file).c_str());
DeleteFile((imageResizerDir + file).c_str());
DeleteFile((settingsDir + file).c_str());
DeleteFile((awakeDir + file).c_str());
DeleteFile((measureToolDir + file).c_str());
DeleteFile((powerAccentDir + file).c_str());
DeleteFile((fileExplorerAddOnsDir + file).c_str());
DeleteFile((hostsDir + file).c_str());
DeleteFile((fileLocksmithDir + file).c_str());
}
for (auto file : dotnetRuntimeWPFFiles)
{
DeleteFile((awakeDir + file).c_str());
DeleteFile((colorPickerDir + file).c_str());
DeleteFile((powerOCRDir + file).c_str());
DeleteFile((launcherDir + file).c_str());
DeleteFile((fancyZonesDir + file).c_str());
DeleteFile((imageResizerDir + file).c_str());
DeleteFile((powerAccentDir + file).c_str());
DeleteFile((fileExplorerAddOnsDir + file).c_str());
DeleteFile((hostsDir + file).c_str());
}
}
catch (std::exception e)
{
std::string errorMessage{ "Exception thrown while trying to delete dotnet runtime hardlinks: " };
errorMessage += e.what();
Logger::error(errorMessage);
er = ERROR_INSTALL_FAILURE;
}
LExit:
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
return WcaFinalize(er);
}
UINT __stdcall TerminateProcessesCA(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;

View File

@@ -7,6 +7,8 @@ EXPORTS
DeleteWinAppSDKHardlinksCA
CreatePTInteropHardlinksCA
DeletePTInteropHardlinksCA
CreateDotnetRuntimeHardlinksCA
DeleteDotnetRuntimeHardlinksCA
DetectPrevInstallPathCA
RemoveScheduledTasksCA
TelemetryLogInstallSuccessCA

View File

@@ -0,0 +1,535 @@
#pragma once
#include <vector>
#include <string>
inline const std::vector<std::wstring> winAppSdkFiles = {
L"CoreMessagingXP.dll",
L"DWriteCore.dll",
L"DwmSceneI.dll",
L"MRM.dll",
L"Microsoft.DirectManipulation.dll",
L"Microsoft.InputStateManager.dll",
L"Microsoft.Internal.FrameworkUdk.dll",
L"Microsoft.UI.Composition.OSSupport.dll",
L"Microsoft.UI.Input.dll",
L"Microsoft.UI.Windowing.Core.dll",
L"Microsoft.UI.Xaml.Controls.dll",
L"Microsoft.UI.Xaml.Controls.pri",
L"Microsoft.UI.Xaml.Internal.dll",
L"Microsoft.UI.Xaml.Phone.dll",
L"Microsoft.Web.WebView2.Core.dll",
L"Microsoft.Windows.AppNotifications.Projection.dll",
L"Microsoft.Windows.ApplicationModel.Resources.dll",
L"Microsoft.WindowsAppRuntime.Bootstrap.dll",
L"Microsoft.Windows.PushNotifications.Projection.dll",
L"Microsoft.Windows.System.Projection.dll",
L"Microsoft.WindowsAppRuntime.Insights.Resource.dll",
L"Microsoft.WindowsAppRuntime.Release.Net.dll",
L"Microsoft.WindowsAppRuntime.dll",
L"Microsoft.ui.xaml.dll",
L"Microsoft.ui.xaml.resources.19h1.dll",
L"Microsoft.ui.xaml.resources.common.dll",
L"PushNotificationsLongRunningTask.ProxyStub.dll",
L"WinUIEdit.dll",
L"WindowsAppRuntime.png",
L"WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll",
L"dcompi.dll",
L"dwmcorei.dll",
L"marshal.dll",
L"wuceffectsi.dll"
};
inline const std::vector<std::wstring> powerToysInteropFiles = {
L"concrt140.dll",
L"msvcp140.dll",
L"msvcp140_1.dll",
L"msvcp140_2.dll",
L"msvcp140_atomic_wait.dll",
L"msvcp140_codecvt_ids.dll",
L"PowerToys.Interop.dll",
L"vcamp140.dll",
L"vccorlib140.dll",
L"vcomp140.dll",
L"vcruntime140.dll",
L"vcruntime140_1.dll"
};
#ifdef _M_X64
inline const std::vector<std::wstring> dotnetRuntimeFiles = {
L"clrcompression.dll",
L"clretwrc.dll",
L"clrgc.dll",
L"clrjit.dll",
L"coreclr.dll",
L"hostfxr.dll",
L"hostpolicy.dll",
L"Microsoft.CSharp.dll",
L"Microsoft.DiaSymReader.Native.amd64.dll",
L"Microsoft.VisualBasic.Core.dll",
L"Microsoft.VisualBasic.dll",
L"Microsoft.Win32.Primitives.dll",
L"Microsoft.Win32.Registry.dll",
L"mscordaccore.dll",
L"mscordbi.dll",
L"mscorlib.dll",
L"mscorrc.dll",
L"msquic.dll",
L"netstandard.dll",
L"System.AppContext.dll",
L"System.Buffers.dll",
L"System.CodeDom.dll",
L"System.Collections.Concurrent.dll",
L"System.Collections.dll",
L"System.Collections.Immutable.dll",
L"System.Collections.NonGeneric.dll",
L"System.Collections.Specialized.dll",
L"System.ComponentModel.Annotations.dll",
L"System.ComponentModel.DataAnnotations.dll",
L"System.ComponentModel.dll",
L"System.ComponentModel.EventBasedAsync.dll",
L"System.ComponentModel.Primitives.dll",
L"System.ComponentModel.TypeConverter.dll",
L"System.Configuration.dll",
L"System.Console.dll",
L"System.Core.dll",
L"System.Data.Common.dll",
L"System.Data.DataSetExtensions.dll",
L"System.Data.dll",
L"System.Diagnostics.Contracts.dll",
L"System.Diagnostics.Debug.dll",
L"System.Diagnostics.DiagnosticSource.dll",
L"System.Diagnostics.FileVersionInfo.dll",
L"System.Diagnostics.Process.dll",
L"System.Diagnostics.StackTrace.dll",
L"System.Diagnostics.TextWriterTraceListener.dll",
L"System.Diagnostics.Tools.dll",
L"System.Diagnostics.TraceSource.dll",
L"System.Diagnostics.Tracing.dll",
L"System.dll",
L"System.Drawing.dll",
L"System.Drawing.Primitives.dll",
L"System.Dynamic.Runtime.dll",
L"System.Formats.Asn1.dll",
L"System.Formats.Tar.dll",
L"System.Globalization.Calendars.dll",
L"System.Globalization.dll",
L"System.Globalization.Extensions.dll",
L"System.IO.Compression.Brotli.dll",
L"System.IO.Compression.dll",
L"System.IO.Compression.FileSystem.dll",
L"System.IO.Compression.Native.dll",
L"System.IO.Compression.ZipFile.dll",
L"System.IO.dll",
L"System.IO.FileSystem.AccessControl.dll",
L"System.IO.FileSystem.dll",
L"System.IO.FileSystem.DriveInfo.dll",
L"System.IO.FileSystem.Primitives.dll",
L"System.IO.FileSystem.Watcher.dll",
L"System.IO.IsolatedStorage.dll",
L"System.IO.MemoryMappedFiles.dll",
L"System.IO.Pipes.AccessControl.dll",
L"System.IO.Pipes.dll",
L"System.IO.UnmanagedMemoryStream.dll",
L"System.Linq.dll",
L"System.Linq.Expressions.dll",
L"System.Linq.Parallel.dll",
L"System.Linq.Queryable.dll",
L"System.Memory.dll",
L"System.Net.dll",
L"System.Net.Http.dll",
L"System.Net.Http.Json.dll",
L"System.Net.HttpListener.dll",
L"System.Net.Mail.dll",
L"System.Net.NameResolution.dll",
L"System.Net.NetworkInformation.dll",
L"System.Net.Ping.dll",
L"System.Net.Primitives.dll",
L"System.Net.Quic.dll",
L"System.Net.Requests.dll",
L"System.Net.Security.dll",
L"System.Net.ServicePoint.dll",
L"System.Net.Sockets.dll",
L"System.Net.WebClient.dll",
L"System.Net.WebHeaderCollection.dll",
L"System.Net.WebProxy.dll",
L"System.Net.WebSockets.Client.dll",
L"System.Net.WebSockets.dll",
L"System.Numerics.dll",
L"System.Numerics.Vectors.dll",
L"System.ObjectModel.dll",
L"System.Private.CoreLib.dll",
L"System.Private.DataContractSerialization.dll",
L"System.Private.Uri.dll",
L"System.Private.Xml.dll",
L"System.Private.Xml.Linq.dll",
L"System.Reflection.DispatchProxy.dll",
L"System.Reflection.dll",
L"System.Reflection.Emit.dll",
L"System.Reflection.Emit.ILGeneration.dll",
L"System.Reflection.Emit.Lightweight.dll",
L"System.Reflection.Extensions.dll",
L"System.Reflection.Metadata.dll",
L"System.Reflection.Primitives.dll",
L"System.Reflection.TypeExtensions.dll",
L"System.Resources.Reader.dll",
L"System.Resources.ResourceManager.dll",
L"System.Resources.Writer.dll",
L"System.Runtime.CompilerServices.Unsafe.dll",
L"System.Runtime.CompilerServices.VisualC.dll",
L"System.Runtime.dll",
L"System.Runtime.Extensions.dll",
L"System.Runtime.Handles.dll",
L"System.Runtime.InteropServices.dll",
L"System.Runtime.InteropServices.JavaScript.dll",
L"System.Runtime.InteropServices.RuntimeInformation.dll",
L"System.Runtime.Intrinsics.dll",
L"System.Runtime.Loader.dll",
L"System.Runtime.Numerics.dll",
L"System.Runtime.Serialization.dll",
L"System.Runtime.Serialization.Formatters.dll",
L"System.Runtime.Serialization.Json.dll",
L"System.Runtime.Serialization.Primitives.dll",
L"System.Runtime.Serialization.Xml.dll",
L"System.Security.AccessControl.dll",
L"System.Security.Claims.dll",
L"System.Security.Cryptography.dll",
L"System.Security.Cryptography.Algorithms.dll",
L"System.Security.Cryptography.Cng.dll",
L"System.Security.Cryptography.Csp.dll",
L"System.Security.Cryptography.Encoding.dll",
L"System.Security.Cryptography.OpenSsl.dll",
L"System.Security.Cryptography.Primitives.dll",
L"System.Security.Cryptography.X509Certificates.dll",
L"System.Security.dll",
L"System.Security.Principal.dll",
L"System.Security.Principal.Windows.dll",
L"System.Security.SecureString.dll",
L"System.ServiceModel.Web.dll",
L"System.ServiceProcess.dll",
L"System.Text.Encoding.CodePages.dll",
L"System.Text.Encoding.dll",
L"System.Text.Encoding.Extensions.dll",
L"System.Text.Encodings.Web.dll",
L"System.Text.RegularExpressions.dll",
L"System.Threading.Channels.dll",
L"System.Threading.dll",
L"System.Threading.Overlapped.dll",
L"System.Threading.Tasks.Dataflow.dll",
L"System.Threading.Tasks.dll",
L"System.Threading.Tasks.Extensions.dll",
L"System.Threading.Tasks.Parallel.dll",
L"System.Threading.Thread.dll",
L"System.Threading.ThreadPool.dll",
L"System.Threading.Timer.dll",
L"System.Transactions.dll",
L"System.Transactions.Local.dll",
L"System.ValueTuple.dll",
L"System.Web.dll",
L"System.Web.HttpUtility.dll",
L"System.Windows.dll",
L"System.Xml.dll",
L"System.Xml.Linq.dll",
L"System.Xml.ReaderWriter.dll",
L"System.Xml.Serialization.dll",
L"System.Xml.XDocument.dll",
L"System.Xml.XmlDocument.dll",
L"System.Xml.XmlSerializer.dll",
L"System.Xml.XPath.dll",
L"System.Xml.XPath.XDocument.dll" };
inline const std::vector<std::wstring> dotnetRuntimeWPFFiles = {
L"Accessibility.dll",
L"D3DCompiler_47_cor3.dll",
L"DirectWriteForwarder.dll",
L"Microsoft.VisualBasic.Forms.dll",
L"Microsoft.Win32.Registry.AccessControl.dll",
L"Microsoft.Win32.SystemEvents.dll",
L"PenImc_cor3.dll",
L"PresentationCore.dll",
L"PresentationFramework-SystemCore.dll",
L"PresentationFramework-SystemData.dll",
L"PresentationFramework-SystemDrawing.dll",
L"PresentationFramework-SystemXml.dll",
L"PresentationFramework-SystemXmlLinq.dll",
L"PresentationFramework.Aero.dll",
L"PresentationFramework.Aero2.dll",
L"PresentationFramework.AeroLite.dll",
L"PresentationFramework.Classic.dll",
L"PresentationFramework.dll",
L"PresentationFramework.Luna.dll",
L"PresentationFramework.Royale.dll",
L"PresentationNative_cor3.dll",
L"PresentationUI.dll",
L"ReachFramework.dll",
L"System.Configuration.ConfigurationManager.dll",
L"System.Design.dll",
L"System.Diagnostics.EventLog.dll",
L"System.Diagnostics.EventLog.Messages.dll",
L"System.Diagnostics.PerformanceCounter.dll",
L"System.DirectoryServices.dll",
L"System.Drawing.Common.dll",
L"System.Drawing.Design.dll",
L"System.IO.Packaging.dll",
L"System.Printing.dll",
L"System.Resources.Extensions.dll",
L"System.Security.Cryptography.Pkcs.dll",
L"System.Security.Cryptography.ProtectedData.dll",
L"System.Security.Cryptography.Xml.dll",
L"System.Security.Permissions.dll",
L"System.Threading.AccessControl.dll",
L"System.Windows.Controls.Ribbon.dll",
L"System.Windows.Extensions.dll",
L"System.Windows.Forms.Design.dll",
L"System.Windows.Forms.Design.Editors.dll",
L"System.Windows.Forms.dll",
L"System.Windows.Forms.Primitives.dll",
L"System.Windows.Input.Manipulations.dll",
L"System.Windows.Presentation.dll",
L"System.Xaml.dll",
L"UIAutomationClient.dll",
L"UIAutomationClientSideProviders.dll",
L"UIAutomationProvider.dll",
L"UIAutomationTypes.dll",
L"vcruntime140_cor3.dll",
L"WindowsFormsIntegration.dll",
L"wpfgfx_cor3.dll" };
#else //ARM64
inline const std::vector<std::wstring> dotnetRuntimeFiles = {
L"clretwrc.dll",
L"clrgc.dll",
L"clrjit.dll",
L"coreclr.dll",
L"dbgshim.dll",
L"hostfxr.dll",
L"hostpolicy.dll",
L"Microsoft.CSharp.dll",
L"Microsoft.DiaSymReader.Native.arm64.dll",
L"Microsoft.Graphics.Canvas.dll",
L"Microsoft.VisualBasic.Core.dll",
L"Microsoft.VisualBasic.dll",
L"Microsoft.Win32.Primitives.dll",
L"Microsoft.Win32.Registry.dll",
L"mscordaccore.dll",
L"mscordbi.dll",
L"mscorlib.dll",
L"mscorrc.dll",
L"netstandard.dll",
L"System.AppContext.dll",
L"System.Buffers.dll",
L"System.Collections.Concurrent.dll",
L"System.Collections.dll",
L"System.Collections.Immutable.dll",
L"System.Collections.NonGeneric.dll",
L"System.Collections.Specialized.dll",
L"System.ComponentModel.Annotations.dll",
L"System.ComponentModel.DataAnnotations.dll",
L"System.ComponentModel.dll",
L"System.ComponentModel.EventBasedAsync.dll",
L"System.ComponentModel.Primitives.dll",
L"System.ComponentModel.TypeConverter.dll",
L"System.Configuration.dll",
L"System.Console.dll",
L"System.Core.dll",
L"System.Data.Common.dll",
L"System.Data.DataSetExtensions.dll",
L"System.Data.dll",
L"System.Diagnostics.Contracts.dll",
L"System.Diagnostics.Debug.dll",
L"System.Diagnostics.DiagnosticSource.dll",
L"System.Diagnostics.FileVersionInfo.dll",
L"System.Diagnostics.Process.dll",
L"System.Diagnostics.StackTrace.dll",
L"System.Diagnostics.TextWriterTraceListener.dll",
L"System.Diagnostics.Tools.dll",
L"System.Diagnostics.TraceSource.dll",
L"System.Diagnostics.Tracing.dll",
L"System.dll",
L"System.Drawing.dll",
L"System.Drawing.Primitives.dll",
L"System.Dynamic.Runtime.dll",
L"System.Formats.Asn1.dll",
L"System.Formats.Tar.dll",
L"System.Globalization.Calendars.dll",
L"System.Globalization.dll",
L"System.Globalization.Extensions.dll",
L"System.IO.Compression.Brotli.dll",
L"System.IO.Compression.dll",
L"System.IO.Compression.FileSystem.dll",
L"System.IO.Compression.Native.dll",
L"System.IO.Compression.ZipFile.dll",
L"System.IO.dll",
L"System.IO.FileSystem.AccessControl.dll",
L"System.IO.FileSystem.dll",
L"System.IO.FileSystem.DriveInfo.dll",
L"System.IO.FileSystem.Primitives.dll",
L"System.IO.FileSystem.Watcher.dll",
L"System.IO.IsolatedStorage.dll",
L"System.IO.MemoryMappedFiles.dll",
L"System.IO.Pipes.AccessControl.dll",
L"System.IO.Pipes.dll",
L"System.IO.UnmanagedMemoryStream.dll",
L"System.Linq.dll",
L"System.Linq.Expressions.dll",
L"System.Linq.Parallel.dll",
L"System.Linq.Queryable.dll",
L"System.Memory.dll",
L"System.Net.dll",
L"System.Net.Http.dll",
L"System.Net.Http.Json.dll",
L"System.Net.HttpListener.dll",
L"System.Net.Mail.dll",
L"System.Net.NameResolution.dll",
L"System.Net.NetworkInformation.dll",
L"System.Net.Ping.dll",
L"System.Net.Primitives.dll",
L"System.Net.Quic.dll",
L"System.Net.Requests.dll",
L"System.Net.Security.dll",
L"System.Net.ServicePoint.dll",
L"System.Net.Sockets.dll",
L"System.Net.WebClient.dll",
L"System.Net.WebHeaderCollection.dll",
L"System.Net.WebProxy.dll",
L"System.Net.WebSockets.Client.dll",
L"System.Net.WebSockets.dll",
L"System.Numerics.dll",
L"System.Numerics.Vectors.dll",
L"System.ObjectModel.dll",
L"System.Private.CoreLib.dll",
L"System.Private.DataContractSerialization.dll",
L"System.Private.Uri.dll",
L"System.Private.Xml.dll",
L"System.Private.Xml.Linq.dll",
L"System.Reflection.DispatchProxy.dll",
L"System.Reflection.dll",
L"System.Reflection.Emit.dll",
L"System.Reflection.Emit.ILGeneration.dll",
L"System.Reflection.Emit.Lightweight.dll",
L"System.Reflection.Extensions.dll",
L"System.Reflection.Metadata.dll",
L"System.Reflection.Primitives.dll",
L"System.Reflection.TypeExtensions.dll",
L"System.Resources.Reader.dll",
L"System.Resources.ResourceManager.dll",
L"System.Resources.Writer.dll",
L"System.Runtime.CompilerServices.Unsafe.dll",
L"System.Runtime.CompilerServices.VisualC.dll",
L"System.Runtime.dll",
L"System.Runtime.Extensions.dll",
L"System.Runtime.Handles.dll",
L"System.Runtime.InteropServices.dll",
L"System.Runtime.InteropServices.JavaScript.dll",
L"System.Runtime.InteropServices.RuntimeInformation.dll",
L"System.Runtime.Intrinsics.dll",
L"System.Runtime.Loader.dll",
L"System.Runtime.Numerics.dll",
L"System.Runtime.Serialization.dll",
L"System.Runtime.Serialization.Formatters.dll",
L"System.Runtime.Serialization.Json.dll",
L"System.Runtime.Serialization.Primitives.dll",
L"System.Runtime.Serialization.Xml.dll",
L"System.Security.AccessControl.dll",
L"System.Security.Claims.dll",
L"System.Security.Cryptography.dll",
L"System.Security.Cryptography.Algorithms.dll",
L"System.Security.Cryptography.Cng.dll",
L"System.Security.Cryptography.Csp.dll",
L"System.Security.Cryptography.Encoding.dll",
L"System.Security.Cryptography.OpenSsl.dll",
L"System.Security.Cryptography.Primitives.dll",
L"System.Security.Cryptography.X509Certificates.dll",
L"System.Security.dll",
L"System.Security.Principal.dll",
L"System.Security.Principal.Windows.dll",
L"System.Security.SecureString.dll",
L"System.ServiceModel.Web.dll",
L"System.ServiceProcess.dll",
L"System.Text.Encoding.CodePages.dll",
L"System.Text.Encoding.dll",
L"System.Text.Encoding.Extensions.dll",
L"System.Text.Encodings.Web.dll",
L"System.Text.Json.dll",
L"System.Text.RegularExpressions.dll",
L"System.Threading.Channels.dll",
L"System.Threading.dll",
L"System.Threading.Overlapped.dll",
L"System.Threading.Tasks.Dataflow.dll",
L"System.Threading.Tasks.dll",
L"System.Threading.Tasks.Extensions.dll",
L"System.Threading.Tasks.Parallel.dll",
L"System.Threading.Thread.dll",
L"System.Threading.ThreadPool.dll",
L"System.Threading.Timer.dll",
L"System.Transactions.dll",
L"System.Transactions.Local.dll",
L"System.ValueTuple.dll",
L"System.Web.dll",
L"System.Web.HttpUtility.dll",
L"System.Windows.dll",
L"System.Xml.dll",
L"System.Xml.Linq.dll",
L"System.Xml.ReaderWriter.dll",
L"System.Xml.Serialization.dll",
L"System.Xml.XDocument.dll",
L"System.Xml.XmlDocument.dll",
L"System.Xml.XmlSerializer.dll",
L"System.Xml.XPath.dll",
L"System.Xml.XPath.XDocument.dll" };
inline const std::vector<std::wstring> dotnetRuntimeWPFFiles = {
L"Accessibility.dll",
L"DirectWriteForwarder.dll",
L"Microsoft.VisualBasic.Forms.dll",
L"Microsoft.Win32.Registry.AccessControl.dll",
L"Microsoft.Win32.SystemEvents.dll",
L"PenImc_cor3.dll",
L"PresentationCore.dll",
L"PresentationFramework-SystemCore.dll",
L"PresentationFramework-SystemData.dll",
L"PresentationFramework-SystemDrawing.dll",
L"PresentationFramework-SystemXml.dll",
L"PresentationFramework-SystemXmlLinq.dll",
L"PresentationFramework.Aero.dll",
L"PresentationFramework.Aero2.dll",
L"PresentationFramework.AeroLite.dll",
L"PresentationFramework.Classic.dll",
L"PresentationFramework.dll",
L"PresentationFramework.Luna.dll",
L"PresentationFramework.Royale.dll",
L"PresentationNative_cor3.dll",
L"PresentationUI.dll",
L"ReachFramework.dll",
L"System.CodeDom.dll",
L"System.Configuration.ConfigurationManager.dll",
L"System.Design.dll",
L"System.Diagnostics.EventLog.dll",
L"System.Diagnostics.EventLog.Messages.dll",
L"System.Diagnostics.PerformanceCounter.dll",
L"System.DirectoryServices.dll",
L"System.Drawing.Common.dll",
L"System.Drawing.Design.dll",
L"System.IO.Packaging.dll",
L"System.Security.Cryptography.Pkcs.dll",
L"System.Security.Cryptography.ProtectedData.dll",
L"System.Security.Cryptography.Xml.dll",
L"System.Security.Permissions.dll",
L"System.Threading.AccessControl.dll",
L"System.Windows.Controls.Ribbon.dll",
L"System.Windows.Extensions.dll",
L"System.Windows.Forms.Design.dll",
L"System.Windows.Forms.Design.Editors.dll",
L"System.Windows.Forms.dll",
L"System.Windows.Forms.Primitives.dll",
L"System.Windows.Input.Manipulations.dll",
L"System.Windows.Presentation.dll",
L"System.Xaml.dll",
L"UIAutomationClient.dll",
L"UIAutomationClientSideProviders.dll",
L"UIAutomationProvider.dll",
L"UIAutomationTypes.dll",
L"vcruntime140_cor3.dll",
L"WindowsFormsIntegration.dll",
L"wpfgfx_cor3.dll"
};
#endif

View File

@@ -109,6 +109,7 @@
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="DepsFilesLists.h" />
<ClInclude Include="RcResource.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="stdafx.h" />

View File

@@ -14,6 +14,7 @@
</ClInclude>
<ClInclude Include="resource.h" />
<ClInclude Include="RcResource.h" />
<ClInclude Include="DepsFilesLists.h" />
</ItemGroup>
<ItemGroup>
<None Include="CustomAction.def" />