Luk164
Luk164

Reputation: 780

Microsoft installer project bug

In my WPF .NET Core app I added an installer project. Once generated and installed, when I tried to run the application I got an error

microsoft.data.sqlclient is not supported on this platform

I found out that if I take files Project.runtimeconfig.dev.json and Project.deps.json from a different build directory and put them into installed folder the app starts working again.

Can somebody explain why this happens? I thought installer project just takes the entire output and packages it nicely, but there are multiple files that are found in normal build that do not carry over to installer.

I know this is not a lot of information but I do not know what else to add so I will edit them in here upon request. I have already tried using the new packaging system, but that was an even greater failure.

Extra info:

Solution is composed of 4 projects:

A part of installer build output:

3>Build succeeded.
3>    0 Warning(s)
3>    0 Error(s)
3>
3>Time Elapsed 00:00:04.42
------ Starting pre-build validation for project 'SetupProject' ------ 
------ Starting pre-build validation for project 'SetupProject' ------ 
------ Starting pre-build validation for project 'SetupProject' ------ 
------ Starting pre-build validation for project 'SetupProject' ------ 
------ Pre-build validation for project 'SetupProject' completed ------
------ Pre-build validation for project 'SetupProject' completed ------
------ Pre-build validation for project 'SetupProject' completed ------
------ Pre-build validation for project 'SetupProject' completed ------
4>------ Rebuild All started: Project: SetupProject, Configuration: Debug ------
4>------ Rebuild All started: Project: SetupProject, Configuration: Debug ------
4>------ Rebuild All started: Project: SetupProject, Configuration: Debug ------
Building file 'D:\User_files\Projekty\C#\Archivator_desktop_WPF_WTS\SetupProject\Debug\SetupProject.msi'...
Building file 'D:\User_files\Projekty\C#\Archivator_desktop_WPF_WTS\SetupProject\Debug\SetupProject.msi'...
Building file 'D:\User_files\Projekty\C#\Archivator_desktop_WPF_WTS\SetupProject\Debug\SetupProject.msi'...
Building file 'D:\User_files\Projekty\C#\Archivator_desktop_WPF_WTS\SetupProject\Debug\SetupProject.msi'...
WARNING: File 'sni.dll' of project output 'Publish Items from Archivator_desktop_WPF_WTS (Debug x64)' targeting 'Unknown' is not compatible with the project's target platform 'x64'
WARNING: File 'sni.dll' of project output 'Publish Items from Archivator_desktop_WPF_WTS (Debug x64)' targeting 'Unknown' is not compatible with the project's target platform 'x64'
WARNING: File 'sni.dll' of project output 'Publish Items from Archivator_desktop_WPF_WTS (Debug x64)' targeting 'Unknown' is not compatible with the project's target platform 'x64'
WARNING: File 'sni.dll' of project output 'Publish Items from Archivator_desktop_WPF_WTS (Debug x64)' targeting 'Unknown' is not compatible with the project's target platform 'x64'
Packaging file 'appsettings.json'...
Packaging file 'appsettings.json'...
Packaging file 'appsettings.json'...
Packaging file 'appsettings.json'...
Packaging file 'Microsoft.EntityFrameworkCore.Proxies.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.Proxies.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.Proxies.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.Proxies.dll'...
Packaging file 'Microsoft.Bcl.HashCode.dll'...
Packaging file 'Microsoft.Bcl.HashCode.dll'...
Packaging file 'Microsoft.Bcl.HashCode.dll'...
Packaging file 'Microsoft.Bcl.HashCode.dll'...
Packaging file 'sni.dll'...
Packaging file 'sni.dll'...
Packaging file 'sni.dll'...
Packaging file 'sni.dll'...
Packaging file 'MahApps.Metro.dll'...
Packaging file 'MahApps.Metro.dll'...
Packaging file 'MahApps.Metro.dll'...
Packaging file 'MahApps.Metro.dll'...
Packaging file 'Archivator_desktop_WPF_WTS.Core.dll'...
Packaging file 'Archivator_desktop_WPF_WTS.Core.dll'...
Packaging file 'Archivator_desktop_WPF_WTS.Core.dll'...
Packaging file 'Archivator_desktop_WPF_WTS.Core.dll'...
Packaging file 'Microsoft.Extensions.Hosting.dll'...
Packaging file 'Microsoft.Extensions.Hosting.dll'...
Packaging file 'Microsoft.Extensions.Hosting.dll'...
Packaging file 'Microsoft.Extensions.Hosting.dll'...
Packaging file 'Microsoft.Extensions.Primitives.dll'...
Packaging file 'Microsoft.Extensions.Primitives.dll'...
Packaging file 'Microsoft.Extensions.Primitives.dll'...
Packaging file 'Microsoft.Extensions.Primitives.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.Relational.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.Relational.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.Relational.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.Relational.dll'...
Packaging file 'Microsoft.Extensions.FileSystemGlobbing.dll'...
Packaging file 'Microsoft.Extensions.FileSystemGlobbing.dll'...
Packaging file 'Microsoft.Extensions.FileSystemGlobbing.dll'...
Packaging file 'Microsoft.Extensions.FileSystemGlobbing.dll'...
Packaging file 'Microsoft.Extensions.DependencyInjection.dll'...
Packaging file 'Microsoft.Extensions.DependencyInjection.dll'...
Packaging file 'Microsoft.Extensions.DependencyInjection.dll'...
Packaging file 'Microsoft.Extensions.DependencyInjection.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Abstractions.dll'...
Packaging file 'Microsoft.Identity.Client.dll'...
Packaging file 'Microsoft.Identity.Client.dll'...
Packaging file 'Microsoft.Identity.Client.dll'...
Packaging file 'Microsoft.Identity.Client.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.SqlServer.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.SqlServer.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.SqlServer.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.SqlServer.dll'...
Packaging file 'Microsoft.Extensions.Logging.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Logging.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Logging.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Logging.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.DependencyInjection.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.DependencyInjection.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.DependencyInjection.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.DependencyInjection.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Configuration.UserSecrets.dll'...
Packaging file 'Microsoft.Extensions.Configuration.UserSecrets.dll'...
Packaging file 'Microsoft.Extensions.Configuration.UserSecrets.dll'...
Packaging file 'Microsoft.Extensions.Configuration.UserSecrets.dll'...
Packaging file 'Microsoft.Extensions.Logging.Console.dll'...
Packaging file 'Microsoft.Extensions.Logging.Console.dll'...
Packaging file 'Microsoft.Extensions.Logging.Console.dll'...
Packaging file 'Microsoft.Extensions.Logging.Console.dll'...
Packaging file 'ControlzEx.dll'...
Packaging file 'ControlzEx.dll'...
Packaging file 'ControlzEx.dll'...
Packaging file 'ControlzEx.dll'...
Packaging file 'Microsoft.Extensions.Hosting.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Hosting.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Hosting.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Hosting.Abstractions.dll'...
Packaging file 'Castle.Core.dll'...
Packaging file 'Castle.Core.dll'...
Packaging file 'Castle.Core.dll'...
Packaging file 'Castle.Core.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'Archivator_desktop_WPF_WTS.runtimeconfig.json'...
Packaging file 'Archivator_desktop_WPF_WTS.runtimeconfig.json'...
Packaging file 'Archivator_desktop_WPF_WTS.runtimeconfig.json'...
Packaging file 'Archivator_desktop_WPF_WTS.runtimeconfig.json'...
Packaging file 'sni.dll'...
Packaging file 'sni.dll'...
Packaging file 'sni.dll'...
Packaging file 'sni.dll'...
Packaging file 'Microsoft.Extensions.Caching.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Caching.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Caching.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Caching.Abstractions.dll'...
Packaging file 'Archivator_desktop_WPF_WTS.exe'...
Packaging file 'Archivator_desktop_WPF_WTS.exe'...
Packaging file 'Archivator_desktop_WPF_WTS.exe'...
Packaging file 'Archivator_desktop_WPF_WTS.exe'...
Packaging file 'Newtonsoft.Json.dll'...
Packaging file 'Newtonsoft.Json.dll'...
Packaging file 'Newtonsoft.Json.dll'...
Packaging file 'Newtonsoft.Json.dll'...
Packaging file 'Microsoft.Extensions.Logging.dll'...
Packaging file 'Microsoft.Extensions.Logging.dll'...
Packaging file 'Microsoft.Extensions.Logging.dll'...
Packaging file 'Microsoft.Extensions.Logging.dll'...
Packaging file 'Microsoft.Extensions.Logging.Debug.dll'...
Packaging file 'Microsoft.Extensions.Logging.Debug.dll'...
Packaging file 'Microsoft.Extensions.Logging.Debug.dll'...
Packaging file 'Microsoft.Extensions.Logging.Debug.dll'...
Packaging file 'Microsoft.Extensions.Caching.Memory.dll'...
Packaging file 'Microsoft.Extensions.Caching.Memory.dll'...
Packaging file 'Microsoft.Extensions.Caching.Memory.dll'...
Packaging file 'Microsoft.Extensions.Caching.Memory.dll'...
Packaging file 'Microsoft.Extensions.Options.ConfigurationExtensions.dll'...
Packaging file 'Microsoft.Extensions.Options.ConfigurationExtensions.dll'...
Packaging file 'Microsoft.Extensions.Options.ConfigurationExtensions.dll'...
Packaging file 'Microsoft.Extensions.Options.ConfigurationExtensions.dll'...
Packaging file 'Microsoft.Extensions.FileProviders.Physical.dll'...
Packaging file 'Microsoft.Extensions.FileProviders.Physical.dll'...
Packaging file 'Microsoft.Extensions.FileProviders.Physical.dll'...
Packaging file 'Microsoft.Extensions.FileProviders.Physical.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.Abstractions.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.Abstractions.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.Abstractions.dll'...
Packaging file 'Microsoft.EntityFrameworkCore.Abstractions.dll'...
Packaging file 'Archivator_desktop_WPF_WTS.dll'...
Packaging file 'Archivator_desktop_WPF_WTS.dll'...
Packaging file 'Archivator_desktop_WPF_WTS.dll'...
Packaging file 'Archivator_desktop_WPF_WTS.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'System.Runtime.Caching.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Binder.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Binder.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Binder.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Binder.dll'...
Packaging file 'Microsoft.Extensions.Logging.EventSource.dll'...
Packaging file 'Microsoft.Extensions.Logging.EventSource.dll'...
Packaging file 'Microsoft.Extensions.Logging.EventSource.dll'...
Packaging file 'Microsoft.Extensions.Logging.EventSource.dll'...
Packaging file 'Microsoft.Extensions.Logging.Configuration.dll'...
Packaging file 'Microsoft.Extensions.Logging.Configuration.dll'...
Packaging file 'Microsoft.Extensions.Logging.Configuration.dll'...
Packaging file 'Microsoft.Extensions.Logging.Configuration.dll'...
Packaging file 'Microsoft.Extensions.Configuration.FileExtensions.dll'...
Packaging file 'Microsoft.Extensions.Configuration.FileExtensions.dll'...
Packaging file 'Microsoft.Extensions.Configuration.FileExtensions.dll'...
Packaging file 'Microsoft.Extensions.Configuration.FileExtensions.dll'...
Packaging file 'sni.dll'...
Packaging file 'sni.dll'...
Packaging file 'sni.dll'...
Packaging file 'sni.dll'...
Packaging file 'Microsoft.Extensions.Configuration.EnvironmentVariables.dll'...
Packaging file 'Microsoft.Extensions.Configuration.EnvironmentVariables.dll'...
Packaging file 'Microsoft.Extensions.Configuration.EnvironmentVariables.dll'...
Packaging file 'Microsoft.Extensions.Configuration.EnvironmentVariables.dll'...
Packaging file 'Microsoft.Extensions.Configuration.CommandLine.dll'...
Packaging file 'Microsoft.Extensions.Configuration.CommandLine.dll'...
Packaging file 'Microsoft.Extensions.Configuration.CommandLine.dll'...
Packaging file 'Microsoft.Extensions.Configuration.CommandLine.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Extensions.FileProviders.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.FileProviders.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.FileProviders.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.FileProviders.Abstractions.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Json.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Json.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Json.dll'...
Packaging file 'Microsoft.Extensions.Configuration.Json.dll'...
Packaging file 'Microsoft.Extensions.Logging.EventLog.dll'...
Packaging file 'Microsoft.Extensions.Logging.EventLog.dll'...
Packaging file 'Microsoft.Extensions.Logging.EventLog.dll'...
Packaging file 'Microsoft.Extensions.Logging.EventLog.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Data.SqlClient.dll'...
Packaging file 'Microsoft.Extensions.Options.dll'...
Packaging file 'Microsoft.Extensions.Options.dll'...
Packaging file 'Microsoft.Extensions.Options.dll'...
Packaging file 'Microsoft.Extensions.Options.dll'...
Packaging file 'Microsoft.Xaml.Behaviors.dll'...
Packaging file 'Microsoft.Xaml.Behaviors.dll'...
Packaging file 'Microsoft.Xaml.Behaviors.dll'...
Packaging file 'Microsoft.Xaml.Behaviors.dll'...
Packaging file 'Microsoft.Bcl.AsyncInterfaces.dll'...
Packaging file 'Microsoft.Bcl.AsyncInterfaces.dll'...
Packaging file 'Microsoft.Bcl.AsyncInterfaces.dll'...
Packaging file 'Microsoft.Bcl.AsyncInterfaces.dll'...
Packaging file 'Archivator_desktop_WPF_WTS.pdb'...
Packaging file 'Archivator_desktop_WPF_WTS.pdb'...
Packaging file 'Archivator_desktop_WPF_WTS.pdb'...
Packaging file 'Archivator_desktop_WPF_WTS.pdb'...
Packaging file 'ArchivatorDb.dll'...
Packaging file 'ArchivatorDb.dll'...
Packaging file 'ArchivatorDb.dll'...
Packaging file 'ArchivatorDb.dll'...
Packaging file 'Microsoft.Extensions.Configuration.dll'...
Packaging file 'Microsoft.Extensions.Configuration.dll'...
Packaging file 'Microsoft.Extensions.Configuration.dll'...
Packaging file 'Microsoft.Extensions.Configuration.dll'...
========== Rebuild All: 4 succeeded, 0 failed, 0 skipped ==========

Edit: I have learned that Windows installer project calls publish on the project and then packages the output, publish is supposed to resolve dependecies and include them, while build just references packages downloaded in nuget, thats why including those extra files fixed the issue, but only on my pc - they referenced the missing packages. I have also found out that the publish to file function of visual studio does not have this issue, but I have no way of using its output in installer directly. https://stackoverflow.com/a/53304641/7091281

Upvotes: 4

Views: 703

Answers (1)

b_levitt
b_levitt

Reputation: 7435

I would agree that this is a bug. Comparing my project to yours I think a shared .net Standard library and/or PackageReferences might be the source.

Diffing you will see that several dlls will have different file sizes, either because of a bitness or a framework vs core/standard difference that publish is incorrectly interpreting.

To resolve, I ALSO included "Locally-Copied Items" and that resolves it:

enter image description here

I think this has the effect of first laying down the published output, and then overwriting it with the raw build output.

I tried to do it with just locally-copied items, but I need the primary output in the custom actions in order for the installer class and its events to be found.

Additional Info Looking at the dependencies, it's pretty obvious why it's failing...

My .net standard library uses the appropriate dlls from the nuget package. The service project (.net framework) that uses the library, is pulling in the .net Framework version of that same dll instead:

.net Framework dll reference

To a degree this is a known problem and with .net core 3, there is a new option of publish items:

new publish reference

In my case this doesn't do me much good as my target project IS a .net Framework service. The only thing worth mentioning from here, is that this might have been enough for me to do a new .net Core background worker in a service. along with wix for the install

Upvotes: 1

Related Questions