microsoft / PowerToys

Windows system utilities to maximize productivity
MIT License
111.1k stars 6.54k forks source link

reduce install size by 2BG by handling shared DLL module files #26215

Closed rostok closed 1 year ago

rostok commented 1 year ago

Description of the new feature / enhancement

Current modules folder size is about 2.3 GB. The space is taken mostly by DLL files common to many modules. I estimate that all this can be reduced to about 350 MB just by moving shared libraries to another folder and making symbolic links.

Scenario when this would be used?

automatic installation

Supporting information

common files: Accessibility.dll clrcompression.dll clretwrc.dll clrgc.dll clrjit.dll ColorCode.Core.dll ColorCode.WinUI.dll CommunityToolkit.Common.dll CommunityToolkit.Mvvm.dll CommunityToolkit.WinUI.dll CommunityToolkit.WinUI.UI.dll CommunityToolkit.WinUI.UI.Controls.Core.dll CommunityToolkit.WinUI.UI.Controls.DataGrid.dll CommunityToolkit.WinUI.UI.Controls.Input.dll CommunityToolkit.WinUI.UI.Controls.Layout.dll CommunityToolkit.WinUI.UI.Controls.Markdown.dll CommunityToolkit.WinUI.UI.Controls.Media.dll CommunityToolkit.WinUI.UI.Controls.Primitives.dll concrt140.dll ControlzEx.dll coreclr.dll CoreMessagingXP.dll D3DCompiler_47_cor3.dll dcompi.dll DirectWriteForwarder.dll dwmcorei.dll DwmSceneI.dll DWriteCore.dll hostfxr.dll hostpolicy.dll Ijwhost.dll marshal.dll Microsoft.CSharp.dll Microsoft.DiaSymReader.Native.amd64.dll Microsoft.DirectManipulation.dll Microsoft.Graphics.Canvas.dll Microsoft.Graphics.Canvas.Interop.dll Microsoft.Graphics.Display.dll Microsoft.InputStateManager.dll Microsoft.InteractiveExperiences.Projection.dll Microsoft.Internal.FrameworkUdk.dll Microsoft.UI.Composition.OSSupport.dll Microsoft.UI.Input.dll Microsoft.UI.Windowing.Core.dll Microsoft.ui.xaml.dll Microsoft.UI.Xaml.Controls.dll Microsoft.UI.Xaml.Internal.dll Microsoft.UI.Xaml.Phone.dll Microsoft.ui.xaml.resources.19h1.dll Microsoft.ui.xaml.resources.common.dll Microsoft.VisualBasic.dll Microsoft.VisualBasic.Core.dll Microsoft.VisualBasic.Forms.dll Microsoft.Web.WebView2.Core.dll Microsoft.Win32.Primitives.dll Microsoft.Win32.Registry.dll Microsoft.Win32.Registry.AccessControl.dll Microsoft.Win32.SystemEvents.dll Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll Microsoft.Windows.ApplicationModel.Resources.dll Microsoft.Windows.ApplicationModel.Resources.Projection.dll Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll Microsoft.Windows.AppLifecycle.Projection.dll Microsoft.Windows.AppNotifications.Builder.Projection.dll Microsoft.Windows.AppNotifications.Projection.dll Microsoft.Windows.PushNotifications.Projection.dll Microsoft.Windows.SDK.NET.dll Microsoft.Windows.Security.AccessControl.Projection.dll Microsoft.Windows.System.Power.Projection.dll Microsoft.Windows.System.Projection.dll Microsoft.Windows.Widgets.dll Microsoft.Windows.Widgets.Projection.dll Microsoft.WindowsAppRuntime.dll Microsoft.WindowsAppRuntime.Bootstrap.dll Microsoft.WindowsAppRuntime.Bootstrap.Net.dll Microsoft.WindowsAppRuntime.Insights.Resource.dll Microsoft.WindowsAppRuntime.Release.Net.dll Microsoft.WinUI.dll Microsoft.Xaml.Behaviors.dll Microsoft.Xaml.Interactions.dll Microsoft.Xaml.Interactivity.dll ModernWpf.dll ModernWpf.Controls.dll MRM.dll mscordaccore.dll mscordbi.dll mscorlib.dll mscorrc.dll msquic.dll msvcp140.dll msvcp140_1.dll msvcp140_2.dll msvcp140_atomic_wait.dll msvcp140_codecvt_ids.dll netstandard.dll NLog.dll PenImc_cor3.dll PowerToys.Common.UI.dll PowerToys.GPOWrapper.dll PowerToys.GPOWrapperProjection.dll PowerToys.Interop.dll PowerToys.ManagedCommon.dll PowerToys.ManagedTelemetry.dll PowerToys.Settings.UI.Lib.dll PresentationCore.dll PresentationFramework.dll PresentationFramework-SystemCore.dll PresentationFramework-SystemData.dll PresentationFramework-SystemDrawing.dll PresentationFramework-SystemXml.dll PresentationFramework-SystemXmlLinq.dll PresentationFramework.Aero.dll PresentationFramework.Aero2.dll PresentationFramework.AeroLite.dll PresentationFramework.Classic.dll PresentationFramework.Luna.dll PresentationFramework.Royale.dll PresentationNative_cor3.dll PresentationUI.dll PushNotificationsLongRunningTask.ProxyStub.dll ReachFramework.dll System.dll System.AppContext.dll System.Buffers.dll System.CodeDom.dll System.Collections.dll System.Collections.Concurrent.dll System.Collections.Immutable.dll System.Collections.NonGeneric.dll System.Collections.Specialized.dll System.ComponentModel.dll System.ComponentModel.Annotations.dll System.ComponentModel.Composition.dll System.ComponentModel.DataAnnotations.dll System.ComponentModel.EventBasedAsync.dll System.ComponentModel.Primitives.dll System.ComponentModel.TypeConverter.dll System.Configuration.dll System.Configuration.ConfigurationManager.dll System.Console.dll System.Core.dll System.Data.dll System.Data.Common.dll System.Data.DataSetExtensions.dll System.Design.dll System.Diagnostics.Contracts.dll System.Diagnostics.Debug.dll System.Diagnostics.DiagnosticSource.dll System.Diagnostics.EventLog.dll System.Diagnostics.EventLog.Messages.dll System.Diagnostics.FileVersionInfo.dll System.Diagnostics.PerformanceCounter.dll System.Diagnostics.Process.dll System.Diagnostics.StackTrace.dll System.Diagnostics.TextWriterTraceListener.dll System.Diagnostics.Tools.dll System.Diagnostics.TraceSource.dll System.Diagnostics.Tracing.dll System.DirectoryServices.dll System.Drawing.dll System.Drawing.Common.dll System.Drawing.Design.dll System.Drawing.Primitives.dll System.Dynamic.Runtime.dll System.Formats.Asn1.dll System.Formats.Tar.dll System.Globalization.dll System.Globalization.Calendars.dll System.Globalization.Extensions.dll System.IO.dll System.IO.Abstractions.dll System.IO.Compression.dll System.IO.Compression.Brotli.dll System.IO.Compression.FileSystem.dll System.IO.Compression.Native.dll System.IO.Compression.ZipFile.dll System.IO.FileSystem.dll System.IO.FileSystem.AccessControl.dll System.IO.FileSystem.DriveInfo.dll System.IO.FileSystem.Primitives.dll System.IO.FileSystem.Watcher.dll System.IO.IsolatedStorage.dll System.IO.MemoryMappedFiles.dll System.IO.Packaging.dll System.IO.Pipes.dll System.IO.Pipes.AccessControl.dll System.IO.UnmanagedMemoryStream.dll System.Linq.dll System.Linq.Expressions.dll System.Linq.Parallel.dll System.Linq.Queryable.dll System.Management.dll System.Memory.dll System.Net.dll System.Net.Http.dll System.Net.Http.Json.dll System.Net.HttpListener.dll System.Net.Mail.dll System.Net.NameResolution.dll System.Net.NetworkInformation.dll System.Net.Ping.dll System.Net.Primitives.dll System.Net.Quic.dll System.Net.Requests.dll System.Net.Security.dll System.Net.ServicePoint.dll System.Net.Sockets.dll System.Net.WebClient.dll System.Net.WebHeaderCollection.dll System.Net.WebProxy.dll System.Net.WebSockets.dll System.Net.WebSockets.Client.dll System.Numerics.dll System.Numerics.Vectors.dll System.ObjectModel.dll System.Printing.dll System.Private.CoreLib.dll System.Private.DataContractSerialization.dll System.Private.Uri.dll System.Private.Xml.dll System.Private.Xml.Linq.dll System.Reactive.dll System.Reflection.dll System.Reflection.DispatchProxy.dll System.Reflection.Emit.dll System.Reflection.Emit.ILGeneration.dll System.Reflection.Emit.Lightweight.dll System.Reflection.Extensions.dll System.Reflection.Metadata.dll System.Reflection.Primitives.dll System.Reflection.TypeExtensions.dll System.Resources.Extensions.dll System.Resources.Reader.dll System.Resources.ResourceManager.dll System.Resources.Writer.dll System.Runtime.dll System.Runtime.CompilerServices.Unsafe.dll System.Runtime.CompilerServices.VisualC.dll System.Runtime.Extensions.dll System.Runtime.Handles.dll System.Runtime.InteropServices.dll System.Runtime.InteropServices.JavaScript.dll System.Runtime.InteropServices.RuntimeInformation.dll System.Runtime.Intrinsics.dll System.Runtime.Loader.dll System.Runtime.Numerics.dll System.Runtime.Serialization.dll System.Runtime.Serialization.Formatters.dll System.Runtime.Serialization.Json.dll System.Runtime.Serialization.Primitives.dll System.Runtime.Serialization.Xml.dll System.Security.dll System.Security.AccessControl.dll System.Security.Claims.dll System.Security.Cryptography.dll System.Security.Cryptography.Algorithms.dll System.Security.Cryptography.Cng.dll System.Security.Cryptography.Csp.dll System.Security.Cryptography.Encoding.dll System.Security.Cryptography.OpenSsl.dll System.Security.Cryptography.Pkcs.dll System.Security.Cryptography.Primitives.dll System.Security.Cryptography.ProtectedData.dll System.Security.Cryptography.X509Certificates.dll System.Security.Cryptography.Xml.dll System.Security.Permissions.dll System.Security.Principal.dll System.Security.Principal.Windows.dll System.Security.SecureString.dll System.ServiceModel.Web.dll System.ServiceProcess.dll System.Text.Encoding.dll System.Text.Encoding.CodePages.dll System.Text.Encoding.Extensions.dll System.Text.Encodings.Web.dll System.Text.Json.dll System.Text.RegularExpressions.dll System.Threading.dll System.Threading.AccessControl.dll System.Threading.Channels.dll System.Threading.Overlapped.dll System.Threading.Tasks.dll System.Threading.Tasks.Dataflow.dll System.Threading.Tasks.Extensions.dll System.Threading.Tasks.Parallel.dll System.Threading.Thread.dll System.Threading.ThreadPool.dll System.Threading.Timer.dll System.Transactions.dll System.Transactions.Local.dll System.ValueTuple.dll System.Web.dll System.Web.HttpUtility.dll System.Windows.dll System.Windows.Controls.Ribbon.dll System.Windows.Extensions.dll System.Windows.Forms.dll System.Windows.Forms.Design.dll System.Windows.Forms.Design.Editors.dll System.Windows.Forms.Primitives.dll System.Windows.Input.Manipulations.dll System.Windows.Presentation.dll System.Xaml.dll System.Xml.dll System.Xml.Linq.dll System.Xml.ReaderWriter.dll System.Xml.Serialization.dll System.Xml.XDocument.dll System.Xml.XmlDocument.dll System.Xml.XmlSerializer.dll System.Xml.XPath.dll System.Xml.XPath.XDocument.dll UIAutomationClient.dll UIAutomationClientSideProviders.dll UIAutomationProvider.dll UIAutomationTypes.dll vcamp140.dll vccorlib140.dll vcomp140.dll vcruntime140.dll vcruntime140_1.dll vcruntime140_cor3.dll WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll WindowsBase.dll WindowsFormsIntegration.dll WinRT.Runtime.dll WinUIEdit.dll WinUIEx.dll wpfgfx_cor3.dll wuceffectsi.dll

davidegiacometti commented 1 year ago

Symbolic links are already used but the size is calculated incorrectly. https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/disk-usage-footprint.md